From b42f2165c4a710deebaeedb6e8a0c3a97143abd3 Mon Sep 17 00:00:00 2001 From: Jules Villard Date: Fri, 31 May 2024 07:26:55 -0700 Subject: [PATCH] update website Summary: - 4 new issue types - odoc 2.4 causes some churn but I guess we have to update at some point anyway Reviewed By: geralt-encore Differential Revision: D57917791 fbshipit-source-id: c187eb6027bb61d97171f421becf28db44d65dda --- website/docs/all-issue-types.md | 106 +++ website/docs/checker-pulse.md | 4 + website/static/man/next/infer-analyze.1.html | 72 +- website/static/man/next/infer-capture.1.html | 25 +- website/static/man/next/infer-compile.1.html | 6 + website/static/man/next/infer-report.1.html | 36 +- .../static/man/next/infer-reportdiff.1.html | 6 + website/static/man/next/infer-run.1.html | 29 +- website/static/man/next/infer.1.html | 108 ++- .../static/odoc/next/infer/ATDGenerated.html | 2 +- .../infer/ATDGenerated/AtdDeps/index.html | 2 +- .../infer/ATDGenerated/Clang_ast_b/index.html | 400 +++++------ .../infer/ATDGenerated/Clang_ast_j/index.html | 278 +++---- .../ATDGenerated/Clang_ast_proj/index.html | 4 +- .../infer/ATDGenerated/Clang_ast_t/index.html | 6 +- .../Clang_ast_types/TypePtr/index.html | 2 +- .../ATDGenerated/Clang_ast_types/index.html | 2 +- .../infer/ATDGenerated/Clang_ast_v/index.html | 594 +++++++-------- .../ATDGenerated/Clang_ast_visit/index.html | 4 +- .../Clang_profiler_samples_j/index.html | 8 +- .../Clang_profiler_samples_t/index.html | 2 +- .../Config_impact_data_j/index.html | 6 +- .../Config_impact_data_t/index.html | 2 +- .../ATDGenerated/InferCommand/index.html | 2 +- .../Java_method_decl_j/index.html | 6 +- .../Java_method_decl_t/index.html | 2 +- .../Java_profiler_samples_j/index.html | 8 +- .../Java_profiler_samples_t/index.html | 2 +- .../infer/ATDGenerated/Jsonbug_j/index.html | 42 +- .../infer/ATDGenerated/Jsonbug_t/index.html | 12 +- .../Jsonconfigimpact_j/index.html | 4 +- .../Jsonconfigimpact_t/index.html | 2 +- .../infer/ATDGenerated/Jsoncost_j/index.html | 4 +- .../infer/ATDGenerated/Jsoncost_t/index.html | 2 +- .../ATDGenerated/Pulse_config_j/index.html | 14 +- .../ATDGenerated/Pulse_config_t/index.html | 2 +- .../Report_block_list_spec_j/index.html | 20 + .../Report_block_list_spec_t/index.html | 2 + .../infer/ATDGenerated/Runstate_j/index.html | 4 +- .../infer/ATDGenerated/Runstate_t/index.html | 2 +- .../infer/ATDGenerated/Sarifbug_j/index.html | 10 +- .../infer/ATDGenerated/Sarifbug_t/index.html | 2 +- .../odoc/next/infer/ATDGenerated/index.html | 2 +- website/static/odoc/next/infer/Absint.html | 2 +- .../AbstractDomain/BooleanAnd/index.html | 2 +- .../AbstractDomain/BooleanOr/index.html | 2 +- .../BottomLifted/argument-1-Domain/index.html | 2 +- .../AbstractDomain/BottomLifted/index.html | 4 +- .../BottomLiftedUtils/index.html | 2 +- .../argument-1-Domain/index.html | 2 +- .../AbstractDomain/BottomTopLifted/index.html | 2 +- .../argument-1-MaxCount/index.html | 2 +- .../AbstractDomain/CountDomain/index.html | 2 +- .../argument-1-MaxCount/index.html | 2 +- .../DownwardIntDomain/index.html | 2 +- .../Absint/AbstractDomain/Empty/index.html | 2 +- .../FiniteMultiMap/argument-1-Key/index.html | 2 +- .../argument-2-Value/index.html | 2 +- .../AbstractDomain/FiniteMultiMap/index.html | 2 +- .../FiniteSet/argument-1-Element/index.html | 2 +- .../AbstractDomain/FiniteSet/index.html | 2 +- .../argument-1-PPSet/index.html | 2 +- .../FiniteSetOfPPSet/index.html | 4 +- .../Flat/argument-1-V/index.html | 2 +- .../Absint/AbstractDomain/Flat/index.html | 2 +- .../InvertedMap/argument-1-Key/index.html | 2 +- .../argument-2-ValueDomain/index.html | 2 +- .../AbstractDomain/InvertedMap/index.html | 4 +- .../InvertedSet/argument-1-Element/index.html | 2 +- .../AbstractDomain/InvertedSet/index.html | 2 +- .../Map/argument-1-Key/index.html | 2 +- .../Map/argument-2-ValueDomain/index.html | 2 +- .../Absint/AbstractDomain/Map/index.html | 4 +- .../MapOfPPMap/argument-1-PPMap/index.html | 8 +- .../argument-2-ValueDomain/index.html | 2 +- .../AbstractDomain/MapOfPPMap/index.html | 4 +- .../MinReprSet/argument-1-Element/index.html | 2 +- .../AbstractDomain/MinReprSet/index.html | 2 +- .../Pair/argument-1-Domain1/index.html | 2 +- .../Pair/argument-2-Domain2/index.html | 2 +- .../Absint/AbstractDomain/Pair/index.html | 4 +- .../argument-1-Domain1/index.html | 2 +- .../argument-2-Domain2/index.html | 2 +- .../AbstractDomain/PairDisjunct/index.html | 4 +- .../argument-1-Domain1/index.html | 2 +- .../argument-2-Domain2/index.html | 2 +- .../AbstractDomain/PairWithBottom/index.html | 4 +- .../PairWithTop/argument-1-Domain1/index.html | 2 +- .../PairWithTop/argument-2-Domain2/index.html | 2 +- .../AbstractDomain/PairWithTop/index.html | 4 +- .../SafeInvertedMap/argument-1-Key/index.html | 2 +- .../argument-2-ValueDomain/index.html | 2 +- .../AbstractDomain/SafeInvertedMap/index.html | 4 +- .../Stacked/argument-1-Below/index.html | 2 +- .../Stacked/argument-2-Val/index.html | 2 +- .../Stacked/argument-3-Above/index.html | 2 +- .../Absint/AbstractDomain/Stacked/index.html | 4 +- .../AbstractDomain/StackedUtils/index.html | 40 +- .../TopLifted/argument-1-Domain/index.html | 2 +- .../AbstractDomain/TopLifted/index.html | 4 +- .../AbstractDomain/TopLiftedUtils/index.html | 2 +- .../Absint/AbstractDomain/Types/index.html | 4 +- .../Absint/AbstractDomain/Unit/index.html | 2 +- .../infer/Absint/AbstractDomain/index.html | 4 +- .../module-type-Comparable/index.html | 2 +- .../module-type-Disjunct/index.html | 2 +- .../module-type-FiniteSetS/index.html | 2 +- .../module-type-InvertedMapS/index.html | 4 +- .../module-type-InvertedSetS/index.html | 2 +- .../module-type-MapS/index.html | 4 +- .../module-type-MaxCount/index.html | 2 +- .../AbstractDomain/module-type-S/index.html | 2 +- .../module-type-WithBottom/index.html | 2 +- .../module-type-WithBottomTop/index.html | 2 +- .../module-type-WithTop/index.html | 2 +- .../DisjunctiveMetadata/index.html | 2 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../argument-1-T/CFG/Node/index.html | 2 +- .../argument-1-T/CFG/index.html | 4 +- .../argument-1-T/Domain/index.html | 2 +- .../MakeBackwardRPO/argument-1-T/index.html | 4 +- .../MakeBackwardRPO/index.html | 18 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../argument-1-T/CFG/Node/index.html | 2 +- .../argument-1-T/CFG/index.html | 4 +- .../argument-1-T/Domain/index.html | 2 +- .../MakeBackwardWTO/argument-1-T/index.html | 4 +- .../MakeBackwardWTO/index.html | 18 +- .../TransferFunctions/Domain/index.html | 4 +- .../TransferFunctions/index.html | 4 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../argument-1-T/CFG/Node/index.html | 2 +- .../argument-1-T/CFG/index.html | 4 +- .../argument-1-T/DisjDomain/index.html | 2 +- .../argument-1-T/NonDisjDomain/index.html | 2 +- .../MakeDisjunctive/argument-1-T/index.html | 8 +- .../argument-2-DConfig/index.html | 2 +- .../MakeDisjunctive/index.html | 18 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../AbstractInterpreter/MakeRPO/index.html | 18 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../AbstractInterpreter/MakeWTO/index.html | 18 +- .../AbstractInterpreter/State/index.html | 2 +- .../AbstractInterpreter/VisitCount/index.html | 2 +- .../Absint/AbstractInterpreter/index.html | 4 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../module-type-Make/index.html | 18 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../argument-1-T/CFG/Node/index.html | 2 +- .../argument-1-T/CFG/index.html | 4 +- .../argument-1-T/Domain/index.html | 2 +- .../argument-1-T/index.html | 4 +- .../module-type-MakeExceptional/index.html | 18 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../TransferFunctions/index.html | 4 +- .../module-type-S/index.html | 18 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../module-type-TransferFunctions/index.html | 4 +- .../infer/Absint/AccessPath/Abs/index.html | 2 +- .../Absint/AccessPath/BaseMap/index.html | 8 +- .../next/infer/Absint/AccessPath/index.html | 2 +- .../AccessTree/DefaultConfig/index.html | 2 +- .../AccessTree/Make/AccessMap/index.html | 8 +- .../Make/argument-1-TraceDomain/index.html | 2 +- .../Make/argument-2-Config/index.html | 2 +- .../infer/Absint/AccessTree/Make/index.html | 6 +- .../AccessTree/PathSet/AccessMap/index.html | 8 +- .../AccessTree/PathSet/TraceDomain/index.html | 2 +- .../PathSet/argument-1-Config/index.html | 2 +- .../Absint/AccessTree/PathSet/index.html | 4 +- .../next/infer/Absint/AccessTree/index.html | 4 +- .../AccessTree/module-type-Config/index.html | 2 +- .../module-type-S/AccessMap/index.html | 8 +- .../module-type-S/TraceDomain/index.html | 2 +- .../AccessTree/module-type-S/index.html | 6 +- .../infer/Absint/AnalysisCallbacks/index.html | 16 +- .../infer/Absint/AnalysisResult/index.html | 2 + .../infer/Absint/AnalysisState/index.html | 2 +- .../infer/Absint/AndroidFramework/index.html | 2 +- .../next/infer/Absint/Annotations/index.html | 4 +- .../next/infer/Absint/Bindings/index.html | 8 +- .../next/infer/Absint/CallSite/Set/index.html | 2 +- .../next/infer/Absint/CallSite/index.html | 2 +- .../infer/Absint/ConcurrencyModels/index.html | 4 +- .../next/infer/Absint/Decompile/index.html | 4 +- .../odoc/next/infer/Absint/Errlog/index.html | 18 +- .../odoc/next/infer/Absint/Exe_env/index.html | 2 +- .../DefaultCallPrinter/index.html | 2 +- .../MakeTraceElem/FiniteSet/index.html | 2 +- .../MakeTraceElem/argument-1-Elem/index.html | 2 +- .../argument-2-CallPrinter/index.html | 2 +- .../ExplicitTrace/MakeTraceElem/index.html | 2 +- .../FiniteSet/index.html | 2 +- .../argument-1-Elem/index.html | 2 +- .../argument-2-CallPrinter/index.html | 2 +- .../MakeTraceElemModuloLocation/index.html | 2 +- .../infer/Absint/ExplicitTrace/index.html | 4 +- .../module-type-CallPrinter/index.html | 2 +- .../module-type-Element/index.html | 2 +- .../module-type-FiniteSet/index.html | 2 +- .../FiniteSet/index.html | 2 +- .../module-type-TraceElem/index.html | 2 +- .../next/infer/Absint/FormalMap/index.html | 2 +- .../Absint/HilExp/AccessExpression/index.html | 8 +- .../odoc/next/infer/Absint/HilExp/index.html | 14 +- .../next/infer/Absint/HilInstr/index.html | 8 +- .../Absint/IdAccessPathMapDomain/index.html | 4 +- .../Absint/InterproceduralAnalysis/index.html | 12 +- .../Absint/IntraproceduralAnalysis/index.html | 2 +- .../next/infer/Absint/IssueLog/index.html | 6 +- .../infer/Absint/IssueToReport/index.html | 6 +- .../Absint/Localise/BucketLevel/index.html | 2 +- .../infer/Absint/Localise/Tags/index.html | 2 +- .../next/infer/Absint/Localise/index.html | 4 +- .../Absint/LowerHil/DefaultConfig/index.html | 2 +- .../Absint/LowerHil/Make/CFG/Node/index.html | 4 +- .../infer/Absint/LowerHil/Make/CFG/index.html | 4 +- .../Absint/LowerHil/Make/Domain/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../Make/argument-2-HilConfig/index.html | 2 +- .../infer/Absint/LowerHil/Make/index.html | 4 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../Interpreter/TransferFunctions/index.html | 4 +- .../Interpreter/index.html | 18 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../MakeAbstractInterpreter/index.html | 6 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-1-TransferFunctions/index.html | 4 +- .../index.html | 18 +- .../argument-2-HilConfig/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../CFG/Node/index.html | 2 +- .../CFG/index.html | 4 +- .../Domain/index.html | 2 +- .../argument-3-TransferFunctions/index.html | 4 +- .../index.html | 8 +- .../next/infer/Absint/LowerHil/index.html | 4 +- .../LowerHil/module-type-HilConfig/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../Interpreter/TransferFunctions/index.html | 4 +- .../module-type-S/Interpreter/index.html | 18 +- .../Absint/LowerHil/module-type-S/index.html | 6 +- .../next/infer/Absint/MemoryAccess/index.html | 10 +- .../infer/Absint/MethodMatcher/index.html | 2 +- .../infer/Absint/Mleak_buckets/index.html | 2 +- .../infer/Absint/NoReturnModels/index.html | 2 +- .../next/infer/Absint/NullsafeMode/index.html | 2 +- .../infer/Absint/Passthrough/Set/index.html | 2 +- .../next/infer/Absint/Passthrough/index.html | 2 +- .../Absint/PatternMatch/CSharp/index.html | 2 +- .../infer/Absint/PatternMatch/Java/index.html | 4 +- .../Absint/PatternMatch/ObjectiveC/index.html | 2 +- .../next/infer/Absint/PatternMatch/index.html | 13 +- .../argument-1-Base/Node/IdMap/index.html | 8 +- .../argument-1-Base/Node/IdSet/index.html | 2 +- .../Backward/argument-1-Base/Node/index.html | 2 +- .../Backward/argument-1-Base/index.html | 4 +- .../infer/Absint/ProcCfg/Backward/index.html | 4 +- .../ProcCfg/DefaultNode/IdMap/index.html | 8 +- .../ProcCfg/DefaultNode/IdSet/index.html | 2 +- .../Absint/ProcCfg/DefaultNode/index.html | 4 +- .../Absint/ProcCfg/Exceptional/index.html | 4 +- .../ExceptionalNoSinkToExitEdge/index.html | 4 +- .../Absint/ProcCfg/InstrNode/IdMap/index.html | 8 +- .../Absint/ProcCfg/InstrNode/IdSet/index.html | 2 +- .../infer/Absint/ProcCfg/InstrNode/index.html | 4 +- .../ProcCfg/MakeOcamlGraph/V/index.html | 2 +- .../argument-1-Base/Node/IdMap/index.html | 8 +- .../argument-1-Base/Node/IdSet/index.html | 2 +- .../argument-1-Base/Node/index.html | 2 +- .../MakeOcamlGraph/argument-1-Base/index.html | 4 +- .../Absint/ProcCfg/MakeOcamlGraph/index.html | 2 +- .../infer/Absint/ProcCfg/Normal/index.html | 4 +- .../Node/IdMap/index.html | 8 +- .../Node/IdSet/index.html | 2 +- .../NormalOneInstrPerNode/Node/index.html | 2 +- .../ProcCfg/NormalOneInstrPerNode/index.html | 4 +- .../argument-1-Base/index.html | 4 +- .../Absint/ProcCfg/OneInstrPerNode/index.html | 4 +- .../odoc/next/infer/Absint/ProcCfg/index.html | 4 +- .../module-type-ExceptionalS/index.html | 4 +- .../ProcCfg/module-type-Node/IdMap/index.html | 8 +- .../ProcCfg/module-type-Node/IdSet/index.html | 2 +- .../ProcCfg/module-type-Node/index.html | 2 +- .../module-type-NodeCommonS/IdMap/index.html | 8 +- .../module-type-NodeCommonS/IdSet/index.html | 2 +- .../module-type-NodeCommonS/index.html | 2 +- .../module-type-S/Node/IdMap/index.html | 8 +- .../module-type-S/Node/IdSet/index.html | 2 +- .../ProcCfg/module-type-S/Node/index.html | 2 +- .../Absint/ProcCfg/module-type-S/index.html | 4 +- .../Call/FuncArg/index.html | 6 +- .../Absint/ProcnameDispatcher/Call/index.html | 8 +- .../ProcnameDispatcher/ProcName/index.html | 6 +- .../ProcnameDispatcher/TypName/index.html | 6 +- .../Absint/ProcnameDispatcher/index.html | 4 +- .../module-type-Common/index.html | 6 +- .../module-type-NameCommon/index.html | 6 +- .../next/infer/Absint/Reporting/index.html | 42 +- .../infer/Absint/Sanitizer/Dummy/index.html | 2 +- .../next/infer/Absint/Sanitizer/index.html | 2 +- .../Absint/Sanitizer/module-type-S/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 2 +- .../argument-1-CFG/index.html | 4 +- .../Scheduler/ReversePostorder/index.html | 2 +- .../next/infer/Absint/Scheduler/index.html | 2 +- .../module-type-S/CFG/Node/IdMap/index.html | 8 +- .../module-type-S/CFG/Node/IdSet/index.html | 2 +- .../module-type-S/CFG/Node/index.html | 2 +- .../Scheduler/module-type-S/CFG/index.html | 4 +- .../Absint/Scheduler/module-type-S/index.html | 2 +- .../infer/Absint/Sink/Make/Set/index.html | 2 +- .../Sink/Make/argument-1-Kind/index.html | 4 +- .../next/infer/Absint/Sink/Make/index.html | 2 +- .../odoc/next/infer/Absint/Sink/index.html | 2 +- .../Absint/Sink/module-type-Kind/index.html | 4 +- .../Absint/Sink/module-type-S/Kind/index.html | 2 +- .../Absint/Sink/module-type-S/Set/index.html | 2 +- .../Absint/Sink/module-type-S/index.html | 2 +- .../SinkTrace/Make/Sanitizer/index.html | 2 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Make/Sources/Footprint/index.html | 4 +- .../Make/Sources/FootprintConfig/index.html | 2 +- .../SinkTrace/Make/Sources/Known/index.html | 2 +- .../Make/Sources/Sanitizers/index.html | 2 +- .../Absint/SinkTrace/Make/Sources/index.html | 2 +- .../argument-1-TaintTraceElem/Kind/index.html | 2 +- .../argument-1-TaintTraceElem/Set/index.html | 2 +- .../Make/argument-1-TaintTraceElem/index.html | 2 +- .../infer/Absint/SinkTrace/Make/index.html | 28 +- .../Absint/SinkTrace/MakeSink/Set/index.html | 2 +- .../argument-1-TaintTraceElem/Kind/index.html | 2 +- .../argument-1-TaintTraceElem/Set/index.html | 2 +- .../argument-1-TaintTraceElem/index.html | 2 +- .../Absint/SinkTrace/MakeSink/index.html | 4 +- .../next/infer/Absint/SinkTrace/index.html | 4 +- .../module-type-S/Sanitizer/index.html | 2 +- .../module-type-S/Sink/Kind/index.html | 2 +- .../module-type-S/Sink/Set/index.html | 2 +- .../SinkTrace/module-type-S/Sink/index.html | 2 +- .../module-type-S/Source/Kind/index.html | 2 +- .../module-type-S/Source/Set/index.html | 2 +- .../SinkTrace/module-type-S/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../module-type-S/Sources/Known/index.html | 2 +- .../Sources/Sanitizers/index.html | 2 +- .../module-type-S/Sources/index.html | 2 +- .../Absint/SinkTrace/module-type-S/index.html | 28 +- .../infer/Absint/Source/Dummy/Kind/index.html | 2 +- .../infer/Absint/Source/Dummy/Set/index.html | 2 +- .../next/infer/Absint/Source/Dummy/index.html | 6 +- .../infer/Absint/Source/Make/Set/index.html | 2 +- .../Source/Make/argument-1-Kind/index.html | 6 +- .../next/infer/Absint/Source/Make/index.html | 6 +- .../odoc/next/infer/Absint/Source/index.html | 4 +- .../Absint/Source/module-type-Kind/index.html | 6 +- .../Source/module-type-S/Kind/index.html | 2 +- .../Source/module-type-S/Set/index.html | 2 +- .../Absint/Source/module-type-S/index.html | 6 +- .../infer/Absint/SubtypingCheck/index.html | 4 +- .../TaintTrace/Make/Sanitizer/index.html | 2 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Make/Sources/Footprint/index.html | 4 +- .../Make/Sources/FootprintConfig/index.html | 2 +- .../TaintTrace/Make/Sources/Known/index.html | 2 +- .../Make/Sources/Sanitizers/index.html | 2 +- .../Absint/TaintTrace/Make/Sources/index.html | 2 +- .../Make/argument-1-Spec/Sanitizer/index.html | 2 +- .../Make/argument-1-Spec/Sink/Kind/index.html | 2 +- .../Make/argument-1-Spec/Sink/Set/index.html | 2 +- .../Make/argument-1-Spec/Sink/index.html | 2 +- .../argument-1-Spec/Source/Kind/index.html | 2 +- .../argument-1-Spec/Source/Set/index.html | 2 +- .../Make/argument-1-Spec/Source/index.html | 6 +- .../Make/argument-1-Spec/index.html | 4 +- .../infer/Absint/TaintTrace/Make/index.html | 20 +- .../next/infer/Absint/TaintTrace/index.html | 4 +- .../module-type-S/Sanitizer/index.html | 2 +- .../module-type-S/Sink/Kind/index.html | 2 +- .../module-type-S/Sink/Set/index.html | 2 +- .../TaintTrace/module-type-S/Sink/index.html | 2 +- .../module-type-S/Source/Kind/index.html | 2 +- .../module-type-S/Source/Set/index.html | 2 +- .../module-type-S/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../module-type-S/Sources/Known/index.html | 2 +- .../Sources/Sanitizers/index.html | 2 +- .../module-type-S/Sources/index.html | 2 +- .../TaintTrace/module-type-S/index.html | 20 +- .../module-type-Spec/Sanitizer/index.html | 2 +- .../module-type-Spec/Sink/Kind/index.html | 2 +- .../module-type-Spec/Sink/Set/index.html | 2 +- .../module-type-Spec/Sink/index.html | 2 +- .../module-type-Spec/Source/Kind/index.html | 2 +- .../module-type-Spec/Source/Set/index.html | 2 +- .../module-type-Spec/Source/index.html | 6 +- .../TaintTrace/module-type-Spec/index.html | 4 +- .../infer/Absint/TaintTraceElem/index.html | 2 +- .../module-type-Kind/index.html | 2 +- .../module-type-S/Kind/index.html | 2 +- .../module-type-S/Set/index.html | 2 +- .../TaintTraceElem/module-type-S/index.html | 2 +- .../Absint/TaskSchedulerTypes/index.html | 2 +- .../infer/Absint/TransferFunctions/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../module-type-DisjReady/CFG/Node/index.html | 2 +- .../module-type-DisjReady/CFG/index.html | 4 +- .../DisjDomain/index.html | 2 +- .../NonDisjDomain/index.html | 2 +- .../module-type-DisjReady/index.html | 8 +- .../module-type-DisjunctiveConfig/index.html | 2 +- .../module-type-HIL/CFG/Node/IdMap/index.html | 8 +- .../module-type-HIL/CFG/Node/IdSet/index.html | 2 +- .../module-type-HIL/CFG/Node/index.html | 2 +- .../module-type-HIL/CFG/index.html | 4 +- .../module-type-HIL/Domain/index.html | 2 +- .../module-type-HIL/index.html | 4 +- .../module-type-S/CFG/Node/IdMap/index.html | 8 +- .../module-type-S/CFG/Node/IdSet/index.html | 2 +- .../module-type-S/CFG/Node/index.html | 2 +- .../module-type-S/CFG/index.html | 4 +- .../module-type-S/Domain/index.html | 2 +- .../module-type-S/index.html | 4 +- .../module-type-SIL/CFG/Node/IdMap/index.html | 8 +- .../module-type-SIL/CFG/Node/IdSet/index.html | 2 +- .../module-type-SIL/CFG/Node/index.html | 2 +- .../module-type-SIL/CFG/index.html | 4 +- .../module-type-SIL/Domain/index.html | 2 +- .../module-type-SIL/index.html | 4 +- .../static/odoc/next/infer/Absint/index.html | 2 +- .../next/infer/BO/AbsLoc/Allocsite/index.html | 16 +- .../odoc/next/infer/BO/AbsLoc/Loc/index.html | 2 +- .../next/infer/BO/AbsLoc/LocSet/index.html | 2 +- .../next/infer/BO/AbsLoc/PowLoc/index.html | 2 +- .../odoc/next/infer/BO/AbsLoc/index.html | 2 +- .../next/infer/BO/ArrayBlk/ArrInfo/index.html | 2 +- .../odoc/next/infer/BO/ArrayBlk/index.html | 16 +- .../infer/BO/Boolean/EqualOrder/index.html | 2 +- .../odoc/next/infer/BO/Boolean/index.html | 2 +- .../next/infer/BO/Bounds/Bound/index.html | 12 +- .../infer/BO/Bounds/BoundTrace/index.html | 2 +- .../BO/Bounds/NonNegativeBound/index.html | 4 +- .../odoc/next/infer/BO/Bounds/index.html | 2 +- .../infer/BO/BufferOverrunAnalysis/index.html | 4 +- .../BufferOverrunAnalysisSummary/index.html | 2 +- .../infer/BO/BufferOverrunChecker/index.html | 4 +- .../BO/BufferOverrunCheckerSummary/index.html | 2 +- .../BufferOverrunDomain/AliasRet/index.html | 2 +- .../AliasTarget/index.html | 2 +- .../AliasTargets/index.html | 4 +- .../BO/BufferOverrunDomain/CoreVal/index.html | 2 +- .../ItvThresholds/index.html | 2 +- .../ItvUpdatedBy/index.html | 2 +- .../BO/BufferOverrunDomain/KeyRhs/index.html | 2 +- .../LatestPrune/index.html | 6 +- .../LoopHeadLoc/index.html | 2 +- .../BO/BufferOverrunDomain/Mem/index.html | 38 +- .../BufferOverrunDomain/MemReach/index.html | 8 +- .../ModeledRange/index.html | 4 +- .../BufferOverrunDomain/PrunePairs/index.html | 4 +- .../BufferOverrunDomain/PrunedVal/index.html | 2 +- .../BufferOverrunDomain/PruningExp/index.html | 2 +- .../Reachability/index.html | 4 +- .../BO/BufferOverrunDomain/Val/Itv/index.html | 2 +- .../BO/BufferOverrunDomain/Val/index.html | 40 +- .../infer/BO/BufferOverrunDomain/index.html | 2 +- .../infer/BO/BufferOverrunField/index.html | 22 +- .../BO/BufferOverrunModels/Call/index.html | 4 +- .../BufferOverrunModels/Collection/index.html | 8 +- .../BufferOverrunModels/Container/index.html | 4 +- .../BufferOverrunModels/JavaString/index.html | 4 +- .../NSCollection/index.html | 4 +- .../BufferOverrunModels/NSString/index.html | 4 +- .../infer/BO/BufferOverrunModels/index.html | 6 +- .../BO/BufferOverrunOndemandEnv/index.html | 2 +- .../Condition/index.html | 2 +- .../ConditionSet/index.html | 36 +- .../ConditionTrace/index.html | 2 +- .../BufferOverrunProofObligations/index.html | 2 +- .../BufferOverrunSemantics/Prune/index.html | 4 +- .../BO/BufferOverrunSemantics/index.html | 10 +- .../BO/BufferOverrunTrace/Issue/index.html | 6 +- .../BO/BufferOverrunTrace/Set/index.html | 2 +- .../infer/BO/BufferOverrunTrace/index.html | 2 +- .../BO/BufferOverrunTypModels/index.html | 4 +- .../BO/BufferOverrunUtils/Check/index.html | 32 +- .../BO/BufferOverrunUtils/Exec/index.html | 12 +- .../BO/BufferOverrunUtils/ModelEnv/index.html | 8 +- .../ReplaceCallee/index.html | 4 +- .../infer/BO/BufferOverrunUtils/index.html | 2 +- .../odoc/next/infer/BO/FuncPtr/Set/index.html | 2 +- .../odoc/next/infer/BO/FuncPtr/index.html | 2 +- .../infer/BO/Ints/NonNegativeInt/index.html | 2 +- .../next/infer/BO/Ints/NonZeroInt/index.html | 2 +- .../next/infer/BO/Ints/PositiveInt/index.html | 2 +- .../static/odoc/next/infer/BO/Ints/index.html | 2 +- .../odoc/next/infer/BO/Itv/ItvPure/index.html | 8 +- .../next/infer/BO/Itv/ItvRange/index.html | 2 +- .../static/odoc/next/infer/BO/Itv/index.html | 18 +- .../infer/BO/Polynomials/Degree/index.html | 2 +- .../BO/Polynomials/DegreeKind/index.html | 2 +- .../NonNegativeNonTopPolynomial/index.html | 2 +- .../NonNegativePolynomial/index.html | 14 +- .../infer/BO/Polynomials/TopTraces/index.html | 2 +- .../Polynomials/UnreachableTraces/index.html | 2 +- .../odoc/next/infer/BO/Polynomials/index.html | 2 +- .../next/infer/BO/Symb/BoundEnd/index.html | 2 +- .../odoc/next/infer/BO/Symb/Symbol/index.html | 4 +- .../next/infer/BO/Symb/SymbolMap/index.html | 10 +- .../next/infer/BO/Symb/SymbolPath/index.html | 8 +- .../next/infer/BO/Symb/SymbolSet/index.html | 2 +- .../static/odoc/next/infer/BO/Symb/index.html | 2 +- website/static/odoc/next/infer/BO/index.html | 2 +- website/static/odoc/next/infer/Backend.html | 2 +- .../AnalysisDependencyGraph/index.html | 2 +- .../infer/Backend/CallGraph/Node/index.html | 2 +- .../next/infer/Backend/CallGraph/index.html | 8 +- .../Backend/CallGraphScheduler/index.html | 4 +- .../Backend/CallbackOfChecker/index.html | 16 +- .../next/infer/Backend/Callbacks/index.html | 14 +- .../infer/Backend/Devirtualizer/index.html | 2 +- .../infer/Backend/FileScheduler/index.html | 4 +- .../next/infer/Backend/GCStats/index.html | 2 +- .../infer/Backend/InferAnalyze/index.html | 2 +- .../odoc/next/infer/Backend/Issue/index.html | 2 +- .../Backend/LineageTaint/Private/index.html | 2 + .../infer/Backend/LineageTaint/index.html | 2 + .../next/infer/Backend/NodePrinter/index.html | 10 +- .../next/infer/Backend/Ondemand/index.html | 12 +- .../Backend/Payloads/Fields/Direct/index.html | 222 +++--- .../infer/Backend/Payloads/Fields/index.html | 294 ++++---- .../infer/Backend/Payloads/SQLite/index.html | 6 +- .../next/infer/Backend/Payloads/index.html | 4 +- .../next/infer/Backend/Preanal/index.html | 2 +- .../next/infer/Backend/Printer/index.html | 6 +- .../next/infer/Backend/ProcLocker/index.html | 2 +- .../next/infer/Backend/Procedures/index.html | 22 +- .../infer/Backend/RegisterCheckers/index.html | 2 +- .../infer/Backend/ReplayScheduler/index.html | 4 +- .../infer/Backend/RestartScheduler/index.html | 4 +- .../infer/Backend/SourceFileGraph/index.html | 2 +- .../StarvationGlobalAnalysis/index.html | 2 +- .../infer/Backend/Summary/OnDisk/index.html | 6 +- .../infer/Backend/Summary/Stats/index.html | 8 +- .../next/infer/Backend/Summary/index.html | 2 +- .../Backend/SyntacticCallGraph/index.html | 4 +- .../infer/Backend/Tasks/Runner/index.html | 14 +- .../odoc/next/infer/Backend/Tasks/index.html | 2 +- .../static/odoc/next/infer/Backend/index.html | 2 +- .../next/infer/Biabduction/Abs/index.html | 4 +- .../infer/Biabduction/Absarray/index.html | 4 +- .../infer/Biabduction/Attribute/index.html | 12 +- .../Biabduction/BiabductionConfig/index.html | 2 +- .../BiabductionReporting/index.html | 10 +- .../BiabductionSummary/Jprop/index.html | 2 +- .../BiabductionSummary/NormSpec/index.html | 2 +- .../Biabduction/BiabductionSummary/index.html | 4 +- .../next/infer/Biabduction/Buckets/index.html | 4 +- .../next/infer/Biabduction/Builtin/index.html | 2 +- .../infer/Biabduction/BuiltinDefn/index.html | 2 +- .../next/infer/Biabduction/Dom/index.html | 4 +- .../Biabduction/DotBiabduction/index.html | 4 +- .../next/infer/Biabduction/Errdesc/index.html | 14 +- .../infer/Biabduction/Exceptions/index.html | 4 +- .../infer/Biabduction/Interproc/index.html | 4 +- .../infer/Biabduction/JoinState/index.html | 2 +- .../next/infer/Biabduction/Match/index.html | 4 +- .../infer/Biabduction/Paths/Path/index.html | 4 +- .../Biabduction/Paths/PathSet/index.html | 2 +- .../next/infer/Biabduction/Paths/index.html | 2 +- .../Biabduction/Predicates/Env/index.html | 2 +- .../infer/Biabduction/Predicates/index.html | 10 +- .../Prop/CategorizePreconditions/index.html | 2 +- .../infer/Biabduction/Prop/Metrics/index.html | 2 +- .../next/infer/Biabduction/Prop/index.html | 28 +- .../infer/Biabduction/PropUtil/index.html | 4 +- .../infer/Biabduction/Propgraph/index.html | 4 +- .../next/infer/Biabduction/Propset/index.html | 4 +- .../next/infer/Biabduction/Prover/index.html | 4 +- .../infer/Biabduction/Rearrange/index.html | 6 +- .../infer/Biabduction/RetainCycles/index.html | 4 +- .../Biabduction/RetainCyclesType/index.html | 2 +- .../next/infer/Biabduction/State/index.html | 10 +- .../next/infer/Biabduction/SymExec/index.html | 14 +- .../next/infer/Biabduction/SymOp/index.html | 2 +- .../infer/Biabduction/Tabulation/index.html | 14 +- .../next/infer/Biabduction/Timeout/index.html | 2 +- .../odoc/next/infer/Biabduction/index.html | 2 +- .../next/infer/CStubs/Fnv64Hash/index.html | 2 +- .../static/odoc/next/infer/CStubs/index.html | 2 +- website/static/odoc/next/infer/Checkers.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../Analyzer/TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../Analyzer/TransferFunctions/index.html | 4 +- .../Checkers/AddressTaken/Analyzer/index.html | 18 +- .../Checkers/AddressTaken/Domain/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 4 +- .../argument-1-CFG/index.html | 4 +- .../AddressTaken/TransferFunctions/index.html | 2 +- .../infer/Checkers/AddressTaken/index.html | 2 +- .../AnnotationReachability/index.html | 4 +- .../CallSites/index.html | 2 +- .../SinkMap/index.html | 4 +- .../AnnotationReachabilityDomain/index.html | 4 +- .../Checkers/Control/ControlMap/index.html | 8 +- .../Checkers/Control/GuardNodes/index.html | 2 +- .../next/infer/Checkers/Control/index.html | 4 +- .../infer/Checkers/DisjunctiveDemo/index.html | 2 +- .../Checkers/Dominators/GDoms/S/index.html | 2 +- .../Checkers/Dominators/GDoms/index.html | 6 +- .../next/infer/Checkers/Dominators/index.html | 4 +- .../ExternalConfigImpactData/index.html | 2 +- .../FragmentRetainsViewChecker/index.html | 2 +- .../next/infer/Checkers/Impurity/index.html | 4 +- .../ImpurityDomain/ModifiedAccess/index.html | 2 +- .../ImpurityDomain/ModifiedVarMap/index.html | 2 +- .../infer/Checkers/ImpurityDomain/index.html | 7 +- .../InefficientKeysetIterator/index.html | 2 +- .../infer/Checkers/Lineage/Local/index.html | 2 + .../infer/Checkers/Lineage/Out/index.html | 2 + .../infer/Checkers/Lineage/PPNode/index.html | 2 + .../infer/Checkers/Lineage/Summary/index.html | 2 +- .../infer/Checkers/Lineage/Vertex/index.html | 4 + .../next/infer/Checkers/Lineage/index.html | 4 +- .../infer/Checkers/LineageBase/index.html | 6 +- .../Checkers/LineageShape/Cell/index.html | 2 +- .../LineageShape/FieldLabel/index.html | 2 +- .../LineageShape/FieldPath/Map/Key/index.html | 2 +- .../Provide_bin_io/argument-1-Key/index.html | 2 +- .../FieldPath/Map/Provide_bin_io/index.html | 2 +- .../Provide_hash/argument-1-Key/index.html | 2 +- .../FieldPath/Map/Provide_hash/index.html | 4 +- .../Provide_of_sexp/argument-1-Key/index.html | 2 +- .../FieldPath/Map/Provide_of_sexp/index.html | 2 +- .../LineageShape/FieldPath/Map/index.html | 104 +-- .../Replace_polymorphic_compare/index.html | 2 +- .../LineageShape/FieldPath/Set/Elt/index.html | 2 +- .../FieldPath/Set/Named/index.html | 2 +- .../Provide_bin_io/argument-1-Elt/index.html | 2 +- .../FieldPath/Set/Provide_bin_io/index.html | 2 +- .../Provide_hash/argument-1-Elt/index.html | 2 +- .../FieldPath/Set/Provide_hash/index.html | 2 +- .../Provide_of_sexp/argument-1-Elt/index.html | 2 +- .../FieldPath/Set/Provide_of_sexp/index.html | 2 +- .../LineageShape/FieldPath/Set/index.html | 46 +- .../LineageShape/FieldPath/index.html | 11 +- .../LineageShape/StdModules/index.html | 2 +- .../Checkers/LineageShape/Summary/index.html | 25 +- .../Checkers/LineageShape/VarPath/index.html | 2 +- .../infer/Checkers/LineageShape/index.html | 2 +- .../LithoDomain/LocalAccessPath/index.html | 4 +- .../infer/Checkers/LithoDomain/Mem/index.html | 2 +- .../LithoDomain/MethodCallPrefix/index.html | 2 +- .../infer/Checkers/LithoDomain/index.html | 34 +- .../infer/Checkers/Liveness/Domain/index.html | 2 +- .../Liveness/ExtendedDomain/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 4 +- .../argument-1-CFG/index.html | 4 +- .../PreAnalysisTransferFunctions/index.html | 4 +- .../next/infer/Checkers/Liveness/index.html | 4 +- .../LoopInvariant/InvariantVars/index.html | 2 +- .../LoopInvariant/LoopNodes/index.html | 2 +- .../Checkers/LoopInvariant/VarSet/index.html | 2 +- .../LoopInvariant/VarsInLoop/index.html | 2 +- .../infer/Checkers/LoopInvariant/index.html | 8 +- .../infer/Checkers/Loop_control/index.html | 4 +- .../ParameterNotNullChecked/index.html | 2 +- .../next/infer/Checkers/PrintfArgs/index.html | 2 +- .../infer/Checkers/PurityAnalysis/index.html | 4 +- .../infer/Checkers/PurityChecker/index.html | 4 +- .../ModifiedParamIndices/index.html | 2 +- .../infer/Checkers/PurityDomain/index.html | 4 +- .../BuiltinPureMethods/index.html | 2 +- .../Checkers/PurityModels/ProcName/index.html | 4 +- .../infer/Checkers/PurityModels/index.html | 2 +- .../Checkers/ReachingDefs/Defs/index.html | 2 +- .../ReachingDefs/ReachingDefsMap/index.html | 4 +- .../infer/Checkers/ReachingDefs/index.html | 4 +- .../infer/Checkers/RequiredProps/index.html | 4 +- .../Checkers/ScopeLeakage/Summary/index.html | 2 +- .../infer/Checkers/ScopeLeakage/index.html | 2 +- .../infer/Checkers/SelfInBlock/index.html | 2 +- .../infer/Checkers/SilValidation/index.html | 2 +- .../odoc/next/infer/Checkers/Siof/index.html | 4 +- .../Checkers/SiofDomain/Summary/index.html | 2 +- .../Checkers/SiofDomain/VarNames/index.html | 2 +- .../next/infer/Checkers/SiofDomain/index.html | 2 +- .../Checkers/SiofTrace/GlobalVar/index.html | 2 +- .../SiofTrace/GlobalVarSet/index.html | 2 +- .../Checkers/SiofTrace/Sanitizer/index.html | 2 +- .../Checkers/SiofTrace/Sink/Kind/index.html | 2 +- .../Checkers/SiofTrace/Sink/Set/index.html | 2 +- .../infer/Checkers/SiofTrace/Sink/index.html | 4 +- .../Checkers/SiofTrace/Source/Kind/index.html | 2 +- .../Checkers/SiofTrace/Source/Set/index.html | 2 +- .../Checkers/SiofTrace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../SiofTrace/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../SiofTrace/Sources/Known/index.html | 2 +- .../SiofTrace/Sources/Sanitizers/index.html | 2 +- .../Checkers/SiofTrace/Sources/index.html | 2 +- .../next/infer/Checkers/SiofTrace/index.html | 28 +- .../odoc/next/infer/Checkers/index.html | 2 +- .../static/odoc/next/infer/ClangFrontend.html | 2 +- .../ClangFrontend/AstToRangeMap/index.html | 4 +- .../ClangFrontend/Ast_expressions/index.html | 12 +- .../CAddImplicitDeallocImpl/index.html | 2 +- .../CAddImplicitGettersSetters/index.html | 2 +- .../CArithmetic_trans/index.html | 4 +- .../infer/ClangFrontend/CAst_utils/index.html | 16 +- .../CContext/CXXTemporarySet/index.html | 2 +- .../infer/ClangFrontend/CContext/index.html | 4 +- .../infer/ClangFrontend/CEnum_decl/index.html | 2 +- .../ClangFrontend/CField_decl/index.html | 5 +- .../infer/ClangFrontend/CFrontend/index.html | 4 +- .../ClangFrontend/CFrontend_config/index.html | 4 +- .../argument-1-T/index.html | 6 +- .../CFrontend_decl_funct/index.html | 4 +- .../ClangFrontend/CFrontend_decl/index.html | 4 +- .../ClangFrontend/CFrontend_errors/index.html | 14 +- .../ClangFrontend/CGeneral_utils/index.html | 10 +- .../infer/ClangFrontend/CLocation/index.html | 8 +- .../CMethodProperties/index.html | 4 +- .../ClangFrontend/CMethodSignature/index.html | 38 +- .../ClangFrontend/CMethod_trans/index.html | 24 +- .../CMockPointerSubst/index.html | 2 +- .../ClangFrontend/CModule_type/index.html | 2 +- .../module-type-CFrontend/index.html | 4 +- .../module-type-CTranslation/index.html | 6 +- .../CReplaceDynamicDispatch/index.html | 2 +- .../CScope/CXXTemporaries/index.html | 4 +- .../ClangFrontend/CScope/Variables/index.html | 4 +- .../infer/ClangFrontend/CScope/index.html | 2 +- .../ClangFrontend/CStructUtils/index.html | 8 +- .../CTrans_funct/argument-1-F/index.html | 4 +- .../CTrans/CTrans_funct/index.html | 6 +- .../infer/ClangFrontend/CTrans/index.html | 2 +- .../ClangFrontend/CTrans_models/index.html | 4 +- .../CTrans_utils/GotoLabel/index.html | 4 +- .../CTrans_utils/Loops/index.html | 2 +- .../CTrans_utils/Nodes/index.html | 8 +- .../CTrans_utils/PriorityNode/index.html | 18 +- .../CTrans_utils/Self/index.html | 4 +- .../ClangFrontend/CTrans_utils/index.html | 18 +- .../next/infer/ClangFrontend/CType/index.html | 4 +- .../CType_decl/CProcname/NoAstDecl/index.html | 4 +- .../CType_decl/CProcname/index.html | 10 +- .../infer/ClangFrontend/CType_decl/index.html | 16 +- .../CType_to_sil_type/index.html | 6 +- .../infer/ClangFrontend/CVar_decl/index.html | 12 +- .../CViewControllerLifecycle/index.html | 2 +- .../infer/ClangFrontend/Capture/index.html | 2 +- .../ClangFrontend/ClangCommand/index.html | 10 +- .../ClangPointers/Map/Key/index.html | 4 +- .../Provide_bin_io/argument-1-Key/index.html | 2 +- .../Map/Provide_bin_io/index.html | 2 +- .../Provide_hash/argument-1-Key/index.html | 2 +- .../ClangPointers/Map/Provide_hash/index.html | 4 +- .../Provide_of_sexp/argument-1-Key/index.html | 2 +- .../Map/Provide_of_sexp/index.html | 2 +- .../ClangPointers/Map/index.html | 104 +-- .../ClangFrontend/ClangPointers/index.html | 4 +- .../ClangFrontend/ClangQuotes/index.html | 2 +- .../ClangFrontend/ClangWrapper/index.html | 2 +- .../TypePointerMap/index.html | 4 +- .../TypePointerOrd/index.html | 4 +- .../ClangFrontend/Clang_ast_extend/index.html | 2 +- .../ClangFrontend/CppLambdaCalls/index.html | 2 +- .../ObjcCategory_decl/index.html | 4 +- .../ObjcInterface_decl/index.html | 4 +- .../ClangFrontend/ObjcMethod_decl/index.html | 4 +- .../ObjcProtocol_decl/index.html | 4 +- .../infer/ClangFrontend/ProcessAST/index.html | 4 +- .../infer/ClangFrontend/SwitchCase/index.html | 2 +- .../odoc/next/infer/ClangFrontend/index.html | 2 +- .../ClangUnitTests/ClangTests/index.html | 2 +- .../QualifiedCppNameTests/index.html | 2 +- .../odoc/next/infer/ClangUnitTests/index.html | 2 +- .../Concurrency/AbstractAddress/index.html | 2 +- .../Concurrency/ConcurrencyUtils/index.html | 4 +- .../infer/Concurrency/IssueAuxData/index.html | 2 +- .../RacerDDomain/Access/index.html | 2 +- .../RacerDDomain/AccessDomain/index.html | 2 +- .../AccessSnapshotElem/index.html | 2 +- .../AccessSnapshot/FiniteSet/index.html | 2 +- .../RacerDDomain/AccessSnapshot/index.html | 2 +- .../RacerDDomain/Attribute/index.html | 2 +- .../AttributeMapDomain/index.html | 4 +- .../RacerDDomain/LockDomain/index.html | 2 +- .../RacerDDomain/NeverReturns/index.html | 2 +- .../OwnershipAbstractValue/index.html | 2 +- .../RacerDDomain/OwnershipDomain/index.html | 2 +- .../RacerDDomain/ThreadsDomain/index.html | 2 +- .../infer/Concurrency/RacerDDomain/index.html | 14 +- .../Concurrency/RacerDFileAnalysis/index.html | 4 +- .../infer/Concurrency/RacerDModels/index.html | 4 +- .../Concurrency/RacerDProcAnalysis/index.html | 4 +- .../Starvation/ReportMap/index.html | 2 +- .../infer/Concurrency/Starvation/index.html | 8 +- .../AccessExpressionOrConst/index.html | 2 + .../StarvationDomain/Acquisition/index.html | 2 +- .../AcquisitionElem/index.html | 2 + .../StarvationDomain/Acquisitions/index.html | 2 +- .../StarvationDomain/Attribute/index.html | 2 +- .../AttributeDomain/index.html | 4 +- .../StarvationDomain/CriticalPair/index.html | 16 +- .../CriticalPairElement/index.html | 2 +- .../StarvationDomain/CriticalPairs/index.html | 2 +- .../StarvationDomain/Event/index.html | 2 +- .../GuardToLockMap/index.html | 2 +- .../LazilyInitialized/index.html | 4 +- .../StarvationDomain/Lock/index.html | 2 +- .../StarvationDomain/LockState/index.html | 2 +- .../StarvationDomain/NullLocs/index.html | 4 +- .../NullLocsCriticalPairs/index.html | 2 +- .../ScheduledWorkDomain/index.html | 2 +- .../ScheduledWorkItem/index.html | 2 +- .../StarvationDomain/ThreadDomain/index.html | 2 +- .../StarvationDomain/VarDomain/index.html | 2 +- .../Concurrency/StarvationDomain/index.html | 45 +- .../Concurrency/StarvationModels/index.html | 4 +- .../odoc/next/infer/Concurrency/index.html | 2 +- .../next/infer/Costlib/BoundMap/index.html | 4 +- .../ClassGateConditions/index.html | 2 +- .../GatedClasses/index.html | 4 +- .../LatentConfig/index.html | 2 +- .../LatentConfigAlias/index.html | 2 +- .../LatentConfigs/index.html | 2 +- .../ConfigImpactAnalysis/Summary/index.html | 2 +- .../UncheckedCallee/index.html | 2 +- .../UncheckedCallees/index.html | 2 +- .../Costlib/ConfigImpactAnalysis/index.html | 4 +- .../ConstraintSolver/Equalities/index.html | 2 +- .../infer/Costlib/ConstraintSolver/index.html | 6 +- .../Costlib/ControlFlowCost/Item/index.html | 2 +- .../Costlib/ControlFlowCost/Set/index.html | 14 +- .../Costlib/ControlFlowCost/Sum/index.html | 2 +- .../infer/Costlib/ControlFlowCost/index.html | 2 +- .../odoc/next/infer/Costlib/Cost/index.html | 22 +- .../CostAllocationModels/ProcName/index.html | 4 +- .../Costlib/CostAllocationModels/index.html | 2 +- .../Costlib/CostDomain/BasicCost/index.html | 14 +- .../CostDomain/BasicCostWithReason/index.html | 6 +- .../CostDomain/VariantCostMap/index.html | 2 +- .../next/infer/Costlib/CostDomain/index.html | 2 +- .../Costlib/CostInstantiate/Call/index.html | 4 +- .../infer/Costlib/CostInstantiate/index.html | 4 +- .../infer/Costlib/CostModels/Call/index.html | 4 +- .../next/infer/Costlib/CostModels/index.html | 2 +- .../infer/Costlib/CostUtils/Array/index.html | 4 +- .../Costlib/CostUtils/CString/index.html | 4 +- .../Costlib/CostUtils/Collection/index.html | 4 +- .../Costlib/CostUtils/Container/index.html | 4 +- .../Costlib/CostUtils/CostModelEnv/index.html | 2 +- .../Costlib/CostUtils/NSCollection/index.html | 4 +- .../next/infer/Costlib/CostUtils/index.html | 16 +- .../CostUtils/module-type-S/index.html | 4 +- .../next/infer/Costlib/Hoisting/index.html | 4 +- .../static/odoc/next/infer/Costlib/index.html | 2 +- .../infer/Datalog/DatalogAnalysis/index.html | 2 +- .../odoc/next/infer/Datalog/Fact/index.html | 4 +- .../next/infer/Datalog/Factgen/index.html | 2 +- .../next/infer/Datalog/Reflect/index.html | 4 +- .../static/odoc/next/infer/Datalog/index.html | 2 +- .../infer/ErlangFrontend/ErlangAst/index.html | 4 +- .../ErlangAstValidator/index.html | 2 +- .../ErlangFrontend/ErlangBlock/index.html | 6 +- .../UnqualifiedFunction/Map/Key/index.html | 2 +- .../Provide_bin_io/argument-1-Key/index.html | 2 +- .../Map/Provide_bin_io/index.html | 2 +- .../Provide_hash/argument-1-Key/index.html | 2 +- .../Map/Provide_hash/index.html | 4 +- .../Provide_of_sexp/argument-1-Key/index.html | 2 +- .../Map/Provide_of_sexp/index.html | 2 +- .../UnqualifiedFunction/Map/index.html | 104 +-- .../Replace_polymorphic_compare/index.html | 2 +- .../UnqualifiedFunction/Set/Elt/index.html | 2 +- .../UnqualifiedFunction/Set/Named/index.html | 2 +- .../Provide_bin_io/argument-1-Elt/index.html | 2 +- .../Set/Provide_bin_io/index.html | 2 +- .../Provide_hash/argument-1-Elt/index.html | 2 +- .../Set/Provide_hash/index.html | 2 +- .../Provide_of_sexp/argument-1-Elt/index.html | 2 +- .../Set/Provide_of_sexp/index.html | 2 +- .../UnqualifiedFunction/Set/index.html | 46 +- .../UnqualifiedFunction/T/index.html | 2 +- .../UnqualifiedFunction/index.html | 8 +- .../ErlangEnvironment/index.html | 8 +- .../ErlangJsonParser/index.html | 2 +- .../ErlangFrontend/ErlangNode/index.html | 6 +- .../ErlangFrontend/ErlangScopes/index.html | 2 +- .../ErlangTranslator/index.html | 4 +- .../ErlangFrontend/ErlangTypes/index.html | 4 +- .../odoc/next/infer/ErlangFrontend/index.html | 2 +- website/static/odoc/next/infer/IBase.html | 2 +- .../odoc/next/infer/IBase/BuckMode/index.html | 4 +- .../odoc/next/infer/IBase/Checker/index.html | 2 +- .../next/infer/IBase/ClangProc/index.html | 2 +- .../next/infer/IBase/CommandDoc/index.html | 2 +- .../infer/IBase/CommandLineOption/index.html | 162 ++--- .../odoc/next/infer/IBase/Config/index.html | 7 +- .../IBase/CostIssues/CostKindMap/index.html | 8 +- .../next/infer/IBase/CostIssues/index.html | 2 +- .../IBase/CostIssuesTestField/index.html | 2 +- .../odoc/next/infer/IBase/CostKind/index.html | 4 +- .../infer/IBase/DB/Results_dir/index.html | 2 +- .../odoc/next/infer/IBase/DB/index.html | 2 +- .../odoc/next/infer/IBase/DBWriter/index.html | 46 +- .../odoc/next/infer/IBase/Database/index.html | 6 +- .../odoc/next/infer/IBase/Die/index.html | 8 +- .../next/infer/IBase/Epilogues/index.html | 2 +- .../next/infer/IBase/Exception/index.html | 2 +- .../infer/IBase/ExecutionDuration/index.html | 2 +- .../index.html | 2 +- .../infer/IBase/FileDiff/UnixDiff/index.html | 2 +- .../index.html | 4 +- .../odoc/next/infer/IBase/FileDiff/index.html | 2 +- .../next/infer/IBase/ForkUtils/index.html | 2 +- .../next/infer/IBase/IssueType/Map/index.html | 8 +- .../next/infer/IBase/IssueType/index.html | 12 +- .../infer/IBase/IssuesTestField/index.html | 2 +- .../odoc/next/infer/IBase/Language/index.html | 2 +- .../next/infer/IBase/LineReader/index.html | 2 +- .../next/infer/IBase/Location/Map/index.html | 8 +- .../odoc/next/infer/IBase/Location/index.html | 2 +- .../odoc/next/infer/IBase/LogEntry/index.html | 2 +- .../odoc/next/infer/IBase/Logging/index.html | 34 +- .../infer/IBase/MarkupFormatter/index.html | 4 +- .../MissingDependencyException/index.html | 2 +- .../infer/IBase/PayloadId/Variants/index.html | 166 ++--- .../next/infer/IBase/PayloadId/index.html | 2 +- .../infer/IBase/PerfEvent/Json/index.html | 2 +- .../next/infer/IBase/PerfEvent/index.html | 30 +- .../odoc/next/infer/IBase/Process/index.html | 18 +- .../ProcessPool/TaskGenerator/index.html | 2 +- .../infer/IBase/ProcessPool/Worker/index.html | 2 +- .../next/infer/IBase/ProcessPool/index.html | 14 +- .../infer/IBase/ProcessPoolState/index.html | 2 +- .../RestartSchedulerException/index.html | 2 +- .../IBase/ResultsDir/RunState/index.html | 2 +- .../next/infer/IBase/ResultsDir/index.html | 2 +- .../IBase/ResultsDirEntryName/index.html | 6 +- .../odoc/next/infer/IBase/Scuba/index.html | 2 +- .../next/infer/IBase/ScubaLogging/index.html | 10 +- .../infer/IBase/Serialization/Key/index.html | 2 +- .../next/infer/IBase/Serialization/index.html | 2 +- .../infer/IBase/SourceFile/HashSet/index.html | 2 +- .../infer/IBase/SourceFile/SQLite/index.html | 2 +- .../next/infer/IBase/SourceFile/index.html | 2 +- .../argument-1-D/index.html | 2 +- .../MarshalledDataNOTForComparison/index.html | 2 +- .../argument-1-D/index.html | 2 +- .../index.html | 2 +- .../next/infer/IBase/SqliteUtils/index.html | 44 +- .../SqliteUtils/module-type-Data/index.html | 2 +- .../odoc/next/infer/IBase/Stats/index.html | 2 +- .../odoc/next/infer/IBase/TaskBar/index.html | 8 +- .../odoc/next/infer/IBase/Timeable/index.html | 2 +- .../odoc/next/infer/IBase/Timer/index.html | 2 +- .../odoc/next/infer/IBase/Timings/index.html | 2 +- .../odoc/next/infer/IBase/ToplAst/index.html | 6 +- .../next/infer/IBase/ToplLexer/index.html | 4 +- .../next/infer/IBase/ToplParser/index.html | 4 +- .../odoc/next/infer/IBase/Utils/index.html | 58 +- .../odoc/next/infer/IBase/Version/index.html | 2 +- .../static/odoc/next/infer/IBase/index.html | 2 +- website/static/odoc/next/infer/IR.html | 2 +- .../infer/IR/AnalysisGlobalState/index.html | 14 +- .../odoc/next/infer/IR/Annot/Class/index.html | 2 +- .../odoc/next/infer/IR/Annot/Item/index.html | 2 +- .../odoc/next/infer/IR/Annot/index.html | 2 +- .../odoc/next/infer/IR/Attributes/index.html | 8 +- .../odoc/next/infer/IR/BUILTINS/index.html | 2 +- .../IR/BUILTINS/module-type-S/index.html | 2 +- .../infer/IR/BiabductionModels/index.html | 2 +- .../odoc/next/infer/IR/Binop/index.html | 2 +- .../odoc/next/infer/IR/BuiltinDecl/index.html | 2 +- .../next/infer/IR/CSharpClassName/index.html | 2 +- .../odoc/next/infer/IR/CallFlags/index.html | 2 +- .../odoc/next/infer/IR/CapturedVar/index.html | 4 +- .../static/odoc/next/infer/IR/Cfg/index.html | 2 +- .../next/infer/IR/ClangMethodKind/index.html | 2 +- .../odoc/next/infer/IR/Const/index.html | 2 +- .../next/infer/IR/DecompiledExp/index.html | 2 +- .../next/infer/IR/Dependencies/index.html | 2 +- .../odoc/next/infer/IR/DotCfg/index.html | 2 +- .../next/infer/IR/ErlangTypeName/index.html | 2 +- .../static/odoc/next/infer/IR/Exp/index.html | 6 +- .../next/infer/IR/Fieldname/Map/index.html | 8 +- .../next/infer/IR/Fieldname/Set/index.html | 2 +- .../odoc/next/infer/IR/Fieldname/index.html | 4 +- .../odoc/next/infer/IR/Filtering/index.html | 2 +- .../next/infer/IR/HackClassName/index.html | 2 +- .../infer/IR/Ident/NameGenerator/index.html | 2 +- .../odoc/next/infer/IR/Ident/index.html | 6 +- .../odoc/next/infer/IR/Inferconfig/index.html | 2 +- .../odoc/next/infer/IR/Instrs/index.html | 24 +- .../odoc/next/infer/IR/IntLit/index.html | 2 +- .../infer/IR/IntegerWidths/SQLite/index.html | 2 +- .../next/infer/IR/IntegerWidths/index.html | 2 +- .../next/infer/IR/Io_infer/Html/index.html | 22 +- .../odoc/next/infer/IR/Io_infer/index.html | 2 +- .../odoc/next/infer/IR/JConfig/index.html | 2 +- .../next/infer/IR/JavaClassName/index.html | 2 +- .../odoc/next/infer/IR/Mangled/Map/index.html | 8 +- .../odoc/next/infer/IR/Mangled/Set/index.html | 2 +- .../odoc/next/infer/IR/Mangled/index.html | 2 +- .../MissingDependencies/ProcUidSet/index.html | 2 +- .../infer/IR/MissingDependencies/index.html | 2 +- .../infer/IR/ObjCDispatchModels/index.html | 4 +- .../odoc/next/infer/IR/PredSymb/index.html | 2 +- .../infer/IR/ProcAttributes/SQLite/index.html | 2 +- .../next/infer/IR/ProcAttributes/index.html | 4 +- .../next/infer/IR/Procdesc/IdMap/index.html | 8 +- .../next/infer/IR/Procdesc/Node/index.html | 4 +- .../infer/IR/Procdesc/NodeHashSet/index.html | 2 + .../next/infer/IR/Procdesc/NodeKey/index.html | 2 +- .../next/infer/IR/Procdesc/SQLite/index.html | 2 +- .../odoc/next/infer/IR/Procdesc/index.html | 32 +- .../next/infer/IR/Procname/Block/index.html | 2 +- .../odoc/next/infer/IR/Procname/C/index.html | 2 +- .../next/infer/IR/Procname/CSharp/index.html | 2 +- .../next/infer/IR/Procname/Erlang/index.html | 2 +- .../next/infer/IR/Procname/Hack/index.html | 2 +- .../next/infer/IR/Procname/HashSet/index.html | 2 +- .../next/infer/IR/Procname/Java/index.html | 2 +- .../next/infer/IR/Procname/LRUHash/index.html | 8 +- .../next/infer/IR/Procname/Map/index.html | 8 +- .../infer/IR/Procname/ObjC_Cpp/index.html | 4 +- .../infer/IR/Procname/Parameter/index.html | 2 +- .../next/infer/IR/Procname/Python/index.html | 2 +- .../Replace_polymorphic_compare/index.html | 2 + .../next/infer/IR/Procname/SQLite/index.html | 2 +- .../infer/IR/Procname/SQLiteList/index.html | 2 +- .../next/infer/IR/Procname/Set/index.html | 2 +- .../infer/IR/Procname/UnitCache/index.html | 2 +- .../odoc/next/infer/IR/Procname/index.html | 43 +- .../odoc/next/infer/IR/Pvar/Map/index.html | 8 +- .../odoc/next/infer/IR/Pvar/Set/index.html | 2 +- .../static/odoc/next/infer/IR/Pvar/index.html | 22 +- .../next/infer/IR/PythonClassName/index.html | 2 +- .../IR/QualifiedCppName/Match/index.html | 2 +- .../next/infer/IR/QualifiedCppName/index.html | 2 +- .../static/odoc/next/infer/IR/Sil/index.html | 6 +- .../odoc/next/infer/IR/SourceFiles/index.html | 14 +- .../IR/Specialization/HeapPath/Map/index.html | 8 +- .../IR/Specialization/HeapPath/Set/index.html | 2 +- .../IR/Specialization/HeapPath/index.html | 2 +- .../Specialization/Pulse/Aliases/index.html | 2 +- .../Pulse/DynamicTypes/index.html | 2 +- .../IR/Specialization/Pulse/Map/index.html | 8 +- .../IR/Specialization/Pulse/Set/index.html | 2 +- .../infer/IR/Specialization/Pulse/index.html | 2 +- .../next/infer/IR/Specialization/index.html | 2 +- .../infer/IR/SpecializeProcdesc/index.html | 4 +- .../odoc/next/infer/IR/StdTyp/Java/index.html | 2 +- .../infer/IR/StdTyp/Name/CSharp/index.html | 2 +- .../next/infer/IR/StdTyp/Name/Java/index.html | 2 +- .../next/infer/IR/StdTyp/Name/Objc/index.html | 2 +- .../odoc/next/infer/IR/StdTyp/Name/index.html | 2 +- .../odoc/next/infer/IR/StdTyp/Objc/index.html | 2 +- .../odoc/next/infer/IR/StdTyp/index.html | 2 +- .../next/infer/IR/Struct/ClassInfo/index.html | 2 +- .../odoc/next/infer/IR/Struct/index.html | 30 +- .../odoc/next/infer/IR/Subtype/index.html | 4 +- .../infer/IR/Tenv/MethodInfo/Hack/index.html | 2 +- .../next/infer/IR/Tenv/MethodInfo/index.html | 2 +- .../odoc/next/infer/IR/Tenv/SQLite/index.html | 2 +- .../static/odoc/next/infer/IR/Tenv/index.html | 44 +- .../odoc/next/infer/IR/Typ/Name/C/index.html | 2 +- .../next/infer/IR/Typ/Name/CSharp/index.html | 2 +- .../next/infer/IR/Typ/Name/Cpp/index.html | 6 +- .../next/infer/IR/Typ/Name/Hack/index.html | 2 +- .../next/infer/IR/Typ/Name/Java/index.html | 2 +- .../next/infer/IR/Typ/Name/Map/index.html | 8 +- .../next/infer/IR/Typ/Name/Objc/index.html | 2 +- .../next/infer/IR/Typ/Name/Set/index.html | 2 +- .../odoc/next/infer/IR/Typ/Name/index.html | 2 +- .../static/odoc/next/infer/IR/Typ/index.html | 24 +- .../static/odoc/next/infer/IR/Unop/index.html | 2 +- .../odoc/next/infer/IR/Var/Map/index.html | 8 +- .../odoc/next/infer/IR/Var/Set/index.html | 2 +- .../static/odoc/next/infer/IR/Var/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/index.html | 2 +- .../Bourdoncle_SCC/argument-1-CFG/index.html | 2 +- .../Bourdoncle_SCC/index.html | 2 +- .../WeakTopologicalOrder/Partition/index.html | 8 +- .../infer/IR/WeakTopologicalOrder/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/index.html | 2 +- .../argument-1-CFG/index.html | 2 +- .../module-type-Make/index.html | 2 +- .../Node/IdMap/index.html | 8 +- .../module-type-PreProcCfg/Node/index.html | 2 +- .../module-type-PreProcCfg/index.html | 2 +- .../module-type-S/CFG/Node/IdMap/index.html | 8 +- .../module-type-S/CFG/Node/index.html | 2 +- .../module-type-S/CFG/index.html | 2 +- .../module-type-S/index.html | 2 +- website/static/odoc/next/infer/IR/index.html | 2 +- website/static/odoc/next/infer/IStdlib.html | 2 +- .../odoc/next/infer/IStdlib/ARList/index.html | 2 +- .../odoc/next/infer/IStdlib/Escape/index.html | 2 +- .../next/infer/IStdlib/GOption/index.html | 2 +- .../IStdlib/HashNormalizer/Int64/index.html | 2 +- .../Make/argument-1-T/index.html | 2 +- .../IStdlib/HashNormalizer/Make/index.html | 2 +- .../IStdlib/HashNormalizer/String/index.html | 2 +- .../infer/IStdlib/HashNormalizer/index.html | 2 +- .../module-type-NormalizedT/index.html | 2 +- .../HashNormalizer/module-type-S/index.html | 2 +- .../infer/IStdlib/HashSet/Make/index.html | 2 +- .../next/infer/IStdlib/HashSet/index.html | 4 +- .../IStdlib/HashSet/module-type-S/index.html | 2 +- .../next/infer/IStdlib/ICompare/index.html | 2 +- .../next/infer/IStdlib/IContainer/index.html | 48 +- .../odoc/next/infer/IStdlib/IExn/index.html | 2 +- .../infer/IStdlib/IFmt/Labelled/index.html | 12 +- .../odoc/next/infer/IStdlib/IFmt/index.html | 2 +- .../odoc/next/infer/IStdlib/IList/index.html | 42 +- .../odoc/next/infer/IStdlib/IMtime/index.html | 2 +- .../Let_syntax/Open_on_rhs/index.html | 2 +- .../IOption/Let_syntax/Let_syntax/index.html | 6 +- .../IStdlib/IOption/Let_syntax/index.html | 2 +- .../next/infer/IStdlib/IOption/index.html | 8 +- .../IStdlib/IResult/Let_syntax/index.html | 4 +- .../next/infer/IStdlib/IResult/index.html | 2 +- .../next/infer/IStdlib/ISequence/index.html | 6 +- .../infer/IStdlib/IStd/Filename/index.html | 26 +- .../next/infer/IStdlib/IStd/Sys/index.html | 4 +- .../odoc/next/infer/IStdlib/IStd/index.html | 18 +- .../odoc/next/infer/IStdlib/ISys/index.html | 2 +- .../ImperativeUnionFind/Make/Repr/index.html | 2 +- .../Make/argument-1-Set/index.html | 2 +- .../ImperativeUnionFind/Make/index.html | 2 +- .../IStdlib/ImperativeUnionFind/index.html | 2 +- .../module-type-Set/index.html | 2 +- .../odoc/next/infer/IStdlib/IntMap/index.html | 4 +- .../odoc/next/infer/IStdlib/IntSet/index.html | 2 +- .../infer/IStdlib/LRUHashtbl/Make/index.html | 8 +- .../next/infer/IStdlib/LRUHashtbl/index.html | 4 +- .../LRUHashtbl/module-type-S/index.html | 8 +- .../infer/IStdlib/PartialOrder/index.html | 8 +- .../next/infer/IStdlib/PhysEqual/index.html | 4 +- .../infer/IStdlib/PolyVariantEqual/index.html | 2 +- .../odoc/next/infer/IStdlib/Pp/index.html | 47 +- .../MakePPMap/argument-1-Ord/index.html | 2 +- .../PrettyPrintable/MakePPMap/index.html | 4 +- .../MakePPMonoMap/argument-1-Ord/index.html | 2 +- .../MakePPMonoMap/argument-2-Val/index.html | 2 +- .../PrettyPrintable/MakePPMonoMap/index.html | 4 +- .../MakePPSet/argument-1-Ord/index.html | 2 +- .../PrettyPrintable/MakePPSet/index.html | 2 +- .../argument-1-Rank/index.html | 2 +- .../argument-2-Val/index.html | 2 +- .../MakePPUniqRankSet/index.html | 8 +- .../PPMonoMapOfPPMap/argument-1-M/index.html | 4 +- .../argument-2-Val/index.html | 2 +- .../PPMonoMapOfPPMap/index.html | 4 +- .../infer/IStdlib/PrettyPrintable/index.html | 6 +- .../module-type-MonoMap/index.html | 4 +- .../module-type-PPMap/index.html | 4 +- .../module-type-PPMonoMap/index.html | 4 +- .../module-type-PPSet/index.html | 2 +- .../module-type-PPUniqRankSet/index.html | 8 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../index.html | 2 +- .../module-type-PrintableType/index.html | 2 +- .../RecencyMap/Make/argument-1-Key/index.html | 2 +- .../Make/argument-2-Value/index.html | 2 +- .../Make/argument-3-Config/index.html | 2 +- .../infer/IStdlib/RecencyMap/Make/index.html | 8 +- .../next/infer/IStdlib/RecencyMap/index.html | 4 +- .../RecencyMap/module-type-Config/index.html | 2 +- .../RecencyMap/module-type-S/index.html | 8 +- .../next/infer/IStdlib/RevList/index.html | 8 +- .../infer/IStdlib/SpecialChars/index.html | 2 +- .../UnionFind/Make/argument-1-X/index.html | 2 +- .../infer/IStdlib/UnionFind/Make/index.html | 2 +- .../next/infer/IStdlib/UnionFind/index.html | 4 +- .../UnionFind/module-type-Element/index.html | 2 +- .../static/odoc/next/infer/IStdlib/index.html | 2 +- .../static/odoc/next/infer/Integration.html | 2 +- .../next/infer/Integration/Ant/index.html | 2 +- .../infer/Integration/Buck/Target/index.html | 6 +- .../next/infer/Integration/Buck/index.html | 8 +- .../infer/Integration/Buck2Clang/index.html | 2 - .../Integration/BuckBuildReport/index.html | 2 +- .../infer/Integration/BuckFlavors/index.html | 6 +- .../Integration/BuckJavaFlavor/index.html | 2 +- .../infer/Integration/BxlCapture/index.html | 2 +- .../CaptureCompilationDatabase/index.html | 16 +- .../CaptureManipulation/index.html | 2 +- .../Integration/CaptureSILJson/index.html | 2 +- .../next/infer/Integration/Clang/index.html | 2 +- .../CompilationDatabase/index.html | 6 +- .../ConfigImpactIssuesTest/index.html | 2 +- .../ConfigImpactPostProcess/index.html | 4 +- .../Integration/CostIssuesTest/index.html | 8 +- .../infer/Integration/DatalogFacts/index.html | 2 +- .../infer/Integration/Differential/index.html | 16 +- .../index.html | 2 +- .../FileRenamings/index.html | 2 +- .../index.html | 8 +- .../DifferentialFilters/index.html | 8 +- .../next/infer/Integration/Driver/index.html | 6 +- .../next/infer/Integration/Erlang/index.html | 2 +- .../next/infer/Integration/Gradle/index.html | 2 +- .../next/infer/Integration/Hack/index.html | 10 +- .../next/infer/Integration/Help/index.html | 2 +- .../InferCommandImplementation/index.html | 2 +- .../infer/Integration/IssuesTest/index.html | 8 +- .../next/infer/Integration/Javac/index.html | 2 +- .../infer/Integration/JsonReports/index.html | 20 +- .../next/infer/Integration/Kotlinc/index.html | 2 +- .../next/infer/Integration/Maven/index.html | 2 +- .../infer/Integration/MergeCapture/index.html | 2 +- .../infer/Integration/NdkBuild/index.html | 2 +- .../NullsafeAnnotationGraphUtils/index.html | 4 +- .../next/infer/Integration/Python/index.html | 2 +- .../Integration/ReportDataFlows/index.html | 2 +- .../infer/Integration/ReportDiff/index.html | 16 +- .../Integration/ReportLineage/index.html | 2 +- .../infer/Integration/SarifReport/index.html | 2 +- .../infer/Integration/StatsDiff/index.html | 2 +- .../infer/Integration/TextReport/index.html | 14 +- .../infer/Integration/TraceBugs/index.html | 24 +- .../infer/Integration/XMLReport/index.html | 2 +- .../infer/Integration/XcodeBuild/index.html | 2 +- .../odoc/next/infer/Integration/index.html | 2 +- .../static/odoc/next/infer/JavaFrontend.html | 2 +- .../infer/JavaFrontend/JAnnotation/index.html | 4 +- .../infer/JavaFrontend/JClasspath/index.html | 2 +- .../infer/JavaFrontend/JContext/index.html | 4 +- .../infer/JavaFrontend/JFrontend/index.html | 4 +- .../next/infer/JavaFrontend/JMain/index.html | 2 +- .../infer/JavaFrontend/JModels/index.html | 4 +- .../JavaFrontend/JProgramDesc/index.html | 6 +- .../infer/JavaFrontend/JSourceAST/index.html | 6 +- .../JSourceFileInfo/Array/index.html | 32 +- .../JavaFrontend/JSourceFileInfo/index.html | 4 +- .../JavaFrontend/JSourceLexer/index.html | 4 +- .../JavaFrontend/JSourceLocations/index.html | 2 +- .../JSourceParser/Incremental/index.html | 4 +- .../MenhirInterpreter/index.html | 8 +- .../JavaFrontend/JSourceParser/index.html | 4 +- .../next/infer/JavaFrontend/JTrans/index.html | 4 +- .../infer/JavaFrontend/JTransExn/index.html | 4 +- .../infer/JavaFrontend/JTransType/index.html | 4 +- .../odoc/next/infer/JavaFrontend/index.html | 2 +- .../infer/Labs/ResourceLeakDomain/index.html | 2 +- .../next/infer/Labs/ResourceLeaks/index.html | 4 +- .../static/odoc/next/infer/Labs/index.html | 2 +- .../OpenSource/FbCostModels/Call/index.html | 4 +- .../infer/OpenSource/FbCostModels/index.html | 2 +- .../ExpensivenessModel/index.html | 2 +- .../OpenSource/FbGKInteraction/index.html | 6 +- .../OpenSource/FbInternalLinks/index.html | 2 +- .../OpenSource/FbPulseConfigName/index.html | 2 +- .../infer/OpenSource/FbPulseModels/index.html | 2 +- .../OpenSource/FbThreadSafety/index.html | 2 +- .../next/infer/OpenSource/Scribe/index.html | 2 +- .../odoc/next/infer/OpenSource/index.html | 2 +- .../odoc/next/infer/Pulselib/Pulse/index.html | 6 +- .../PulseAbductiveDecompiler/index.html | 4 +- .../AddressAttributes/index.html | 11 +- .../CanonValue/Attributes/index.html | 10 +- .../CanonValue/Memory/Access/index.html | 11 +- .../CanonValue/Memory/Edges/index.html | 16 +- .../CanonValue/Memory/index.html | 8 +- .../CanonValue/Set/index.html | 2 +- .../CanonValue/Stack/index.html | 6 +- .../CanonValue/index.html | 4 +- .../PulseAbductiveDomain/Memory/index.html | 10 +- .../PostDomain/index.html | 2 +- .../PulseAbductiveDomain/PreDomain/index.html | 2 +- .../PulseAbductiveDomain/Stack/index.html | 9 +- .../PulseAbductiveDomain/Summary/index.html | 8 +- .../PulseAbductiveDomain/Topl/index.html | 16 +- .../Pulselib/PulseAbductiveDomain/index.html | 44 +- .../module-type-BaseDomainSig/index.html | 2 +- .../PulseAbstractValue/Map/index.html | 8 +- .../PulseAbstractValue/Set/index.html | 2 +- .../Pulselib/PulseAbstractValue/index.html | 2 +- .../infer/Pulselib/PulseAccess/index.html | 23 +- .../PulseAccess/module-type-S/index.html | 8 +- .../Pulselib/PulseAccessResult/index.html | 14 +- .../infer/Pulselib/PulseArithmetic/index.html | 12 +- .../PulseAttribute/Attributes/index.html | 12 +- .../PulseAttribute/ConfigUsage/index.html | 2 +- .../PulseAttribute/ConstKeys/index.html | 4 +- .../PulseAttribute/CopiedInto/index.html | 2 +- .../PulseAttribute/CopyOrigin/index.html | 2 +- .../PulseAttribute/TaintSanitized/index.html | 2 +- .../TaintSanitizedSet/index.html | 2 +- .../PulseAttribute/TaintSink/index.html | 2 +- .../PulseAttribute/TaintSinkMap/index.html | 8 +- .../PulseAttribute/Tainted/index.html | 2 +- .../PulseAttribute/TaintedSet/index.html | 2 +- .../UninitializedTyp/index.html | 2 +- .../infer/Pulselib/PulseAttribute/index.html | 4 +- .../PulseBaseAddressAttributes/index.html | 12 +- .../module-type-S/index.html | 10 +- .../infer/Pulselib/PulseBaseDomain/index.html | 6 +- .../PulseBaseMemory/Access/index.html | 13 +- .../Pulselib/PulseBaseMemory/Edges/index.html | 16 +- .../infer/Pulselib/PulseBaseMemory/index.html | 16 +- .../module-type-S/Access/index.html | 12 +- .../module-type-S/Edges/index.html | 14 +- .../PulseBaseMemory/module-type-S/index.html | 8 +- .../infer/Pulselib/PulseBaseStack/index.html | 8 +- .../PulseBaseStack/module-type-S/index.html | 4 +- .../Pulselib/PulseBasicInterface/index.html | 2 +- .../next/infer/Pulselib/PulseCItv/index.html | 6 +- .../infer/Pulselib/PulseCallEvent/index.html | 2 +- .../GlobalForStats/index.html | 2 + .../Pulselib/PulseCallOperations/index.html | 29 +- .../Make/Attributes/index.html | 10 +- .../Make/Memory/Access/index.html | 11 +- .../Make/Memory/Edges/index.html | 16 +- .../PulseCanonValue/Make/Memory/index.html | 8 +- .../PulseCanonValue/Make/Set/index.html | 2 +- .../PulseCanonValue/Make/Stack/index.html | 6 +- .../argument-1-AbductiveDomain/index.html | 4 +- .../Pulselib/PulseCanonValue/Make/index.html | 4 +- .../infer/Pulselib/PulseCanonValue/index.html | 4 +- .../module-type-S/Attributes/index.html | 10 +- .../module-type-S/Memory/Access/index.html | 11 +- .../module-type-S/Memory/Edges/index.html | 16 +- .../module-type-S/Memory/index.html | 8 +- .../module-type-S/Set/index.html | 2 +- .../module-type-S/Stack/index.html | 6 +- .../PulseCanonValue/module-type-S/index.html | 4 +- .../Pulselib/PulseCheapCopyTypes/index.html | 2 +- .../infer/Pulselib/PulseContext/index.html | 2 +- .../infer/Pulselib/PulseDecompiler/index.html | 4 +- .../Pulselib/PulseDecompilerExpr/index.html | 2 +- .../PulseDiagnostic/ErlangError/index.html | 2 +- .../ReadUninitialized/index.html | 2 +- .../infer/Pulselib/PulseDiagnostic/index.html | 4 +- .../Pulselib/PulseDomainInterface/index.html | 2 +- .../Pulselib/PulseExecutionDomain/index.html | 9 +- .../Pulselib/PulseFormula/Var/index.html | 2 +- .../infer/Pulselib/PulseFormula/index.html | 32 +- .../infer/Pulselib/PulseInterproc/index.html | 15 +- .../Pulselib/PulseInvalidation/index.html | 6 +- .../Pulselib/PulseLatentIssue/index.html | 4 +- .../Pulselib/PulseLoadInstrModels/index.html | 4 +- .../infer/Pulselib/PulseModels/index.html | 4 +- .../Pulselib/PulseModelsAndroid/index.html | 2 +- .../infer/Pulselib/PulseModelsC/index.html | 2 +- .../Pulselib/PulseModelsCSharp/index.html | 2 +- .../PulseModelsCpp/Function/index.html | 4 +- .../Pulselib/PulseModelsCpp/Vector/index.html | 8 +- .../infer/Pulselib/PulseModelsCpp/index.html | 2 +- .../PulseModelsDSL/Syntax/Basic/index.html | 8 +- .../Pulselib/PulseModelsDSL/Syntax/index.html | 40 +- .../infer/Pulselib/PulseModelsDSL/index.html | 4 +- .../PulseModelsErlang/Custom/index.html | 2 +- .../Pulselib/PulseModelsErlang/index.html | 6 +- .../Iterator/index.html | 8 +- .../index.html | 20 +- .../infer/Pulselib/PulseModelsHack/index.html | 6 +- .../PulseModelsImport/Basic/index.html | 22 +- .../PulseModelsImport/Hist/index.html | 20 +- .../Pulselib/PulseModelsImport/index.html | 4 +- .../infer/Pulselib/PulseModelsJava/index.html | 4 +- .../Pulselib/PulseModelsLocks/index.html | 2 +- .../infer/Pulselib/PulseModelsObjC/index.html | 16 +- .../Pulselib/PulseModelsOptional/index.html | 2 +- .../SharedPtr/index.html | 8 +- .../PulseModelsSmartPointers/index.html | 2 +- .../Pulselib/PulseMutualRecursion/index.html | 2 + .../Summary/index.html | 4 +- .../PulseNonDisjunctiveDomain/index.html | 34 +- .../PulseNonDisjunctiveOperations/index.html | 10 +- .../PulseOperationResult/Import/index.html | 8 +- .../Pulselib/PulseOperationResult/index.html | 4 +- .../PulseOperations/Closures/index.html | 4 +- .../PulseOperations/ModeledField/index.html | 2 +- .../infer/Pulselib/PulseOperations/index.html | 65 +- .../Pulselib/PulsePathContext/index.html | 2 +- .../next/infer/Pulselib/PulsePp/index.html | 7 + .../Pulselib/PulseRefCounting/index.html | 7 +- .../infer/Pulselib/PulseReport/index.html | 8 +- .../PulseResult/Let_syntax/index.html | 2 +- .../PulseResult/Monad_infix/index.html | 2 +- .../Pulselib/PulseResult/Type/index.html | 2 +- .../infer/Pulselib/PulseResult/index.html | 24 +- .../PulseRetainCycleChecker/index.html | 6 +- .../Pulselib/PulseSatUnsat/Import/index.html | 2 +- .../Pulselib/PulseSatUnsat/Types/index.html | 2 +- .../infer/Pulselib/PulseSatUnsat/index.html | 12 +- .../Pulselib/PulseSkippedCalls/index.html | 4 +- .../Pulselib/PulseSpecialization/index.html | 5 +- .../infer/Pulselib/PulseSummary/index.html | 5 +- .../PulseTaintConfig/Kind/Set/index.html | 2 +- .../Pulselib/PulseTaintConfig/Kind/index.html | 2 +- .../PulseTaintConfig/SinkPolicy/index.html | 2 +- .../PulseTaintConfig/Target/index.html | 2 +- .../Pulselib/PulseTaintConfig/Unit/index.html | 2 +- .../Pulselib/PulseTaintConfig/index.html | 2 +- .../infer/Pulselib/PulseTaintItem/index.html | 4 +- .../Pulselib/PulseTaintItemMatcher/index.html | 14 +- .../Pulselib/PulseTaintOperations/index.html | 24 +- .../infer/Pulselib/PulseTimestamp/index.html | 2 +- .../infer/Pulselib/PulseTopl/Debug/index.html | 2 +- .../next/infer/Pulselib/PulseTopl/index.html | 22 +- .../infer/Pulselib/PulseTrace/Set/index.html | 2 +- .../next/infer/Pulselib/PulseTrace/index.html | 18 +- .../PulseTransitiveAccessChecker/index.html | 4 +- .../PulseTransitiveInfo/Callees/index.html | 11 +- .../Pulselib/PulseTransitiveInfo/index.html | 15 +- .../Pulselib/PulseUninitBlocklist/index.html | 2 +- .../PulseValueHistory/CellId/index.html | 2 +- .../Pulselib/PulseValueHistory/index.html | 14 +- .../Pulselib/PulseValueOrigin/index.html | 4 +- .../infer/Pulselib/QSafeCapped/index.html | 2 +- .../odoc/next/infer/Pulselib/ZSafe/index.html | 2 +- .../odoc/next/infer/Pulselib/index.html | 2 +- .../infer/PythonFrontend/FFI/Code/index.html | 2 +- .../PythonFrontend/FFI/Constant/index.html | 2 +- .../infer/PythonFrontend/FFI/Error/index.html | 2 +- .../PythonFrontend/FFI/Instruction/index.html | 2 +- .../next/infer/PythonFrontend/FFI/index.html | 10 +- .../PyBuiltin/Compare/index.html | 2 +- .../PythonFrontend/PyBuiltin/Set/index.html | 2 +- .../infer/PythonFrontend/PyBuiltin/index.html | 2 +- .../PyClassDecl/Error/index.html | 2 +- .../PyClassDecl/State/index.html | 2 +- .../PythonFrontend/PyClassDecl/index.html | 4 +- .../PythonFrontend/PyCommon/ABC/index.html | 2 +- .../PythonFrontend/PyCommon/Ident/index.html | 18 +- .../PyCommon/MakeFunctionFlags/index.html | 2 +- .../infer/PythonFrontend/PyCommon/index.html | 14 +- .../infer/PythonFrontend/PyDebug/index.html | 2 +- .../PythonFrontend/PyEnv/DataStack/index.html | 2 +- .../PythonFrontend/PyEnv/Info/index.html | 2 +- .../PythonFrontend/PyEnv/Label/index.html | 8 +- .../PythonFrontend/PyEnv/Signature/index.html | 2 +- .../PythonFrontend/PyEnv/Symbol/index.html | 2 +- .../infer/PythonFrontend/PyEnv/index.html | 24 +- .../PythonFrontend/PyIR/Error/index.html | 2 +- .../PythonFrontend/PyIR/Location/index.html | 2 +- .../PythonFrontend/PyIR/Module/index.html | 2 +- .../next/infer/PythonFrontend/PyIR/index.html | 2 +- .../PythonFrontend/PyTrans/Error/index.html | 2 +- .../infer/PythonFrontend/PyTrans/index.html | 6 +- .../odoc/next/infer/PythonFrontend/index.html | 2 +- .../Quandary/ClangTaintAnalysis/index.html | 4 +- .../Quandary/ClangTrace/Sanitizer/index.html | 2 +- .../Quandary/ClangTrace/Sink/Kind/index.html | 2 +- .../Quandary/ClangTrace/Sink/Set/index.html | 2 +- .../infer/Quandary/ClangTrace/Sink/index.html | 4 +- .../ClangTrace/Source/Kind/index.html | 2 +- .../Quandary/ClangTrace/Source/Set/index.html | 2 +- .../Quandary/ClangTrace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../ClangTrace/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../ClangTrace/Sources/Known/index.html | 2 +- .../ClangTrace/Sources/Sanitizers/index.html | 2 +- .../Quandary/ClangTrace/Sources/index.html | 2 +- .../next/infer/Quandary/ClangTrace/index.html | 20 +- .../Quandary/JavaTaintAnalysis/index.html | 4 +- .../Quandary/JavaTrace/Sanitizer/index.html | 2 +- .../Quandary/JavaTrace/Sink/Kind/index.html | 2 +- .../Quandary/JavaTrace/Sink/Set/index.html | 2 +- .../infer/Quandary/JavaTrace/Sink/index.html | 4 +- .../Quandary/JavaTrace/Source/Kind/index.html | 2 +- .../Quandary/JavaTrace/Source/Set/index.html | 2 +- .../Quandary/JavaTrace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../JavaTrace/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../JavaTrace/Sources/Known/index.html | 2 +- .../JavaTrace/Sources/Sanitizers/index.html | 2 +- .../Quandary/JavaTrace/Sources/index.html | 2 +- .../next/infer/Quandary/JavaTrace/index.html | 20 +- .../QuandaryConfig/Sanitizer/index.html | 2 +- .../Quandary/QuandaryConfig/Sink/index.html | 2 +- .../Quandary/QuandaryConfig/Source/index.html | 2 +- .../infer/Quandary/QuandaryConfig/index.html | 2 +- .../QuandarySummary/AccessTree/index.html | 2 +- .../Clang/AccessMap/index.html | 8 +- .../Clang/TraceDomain/index.html | 2 +- .../Quandary/QuandarySummary/Clang/index.html | 4 +- .../QuandarySummary/Java/AccessMap/index.html | 8 +- .../Java/TraceDomain/index.html | 2 +- .../Quandary/QuandarySummary/Java/index.html | 4 +- .../infer/Quandary/QuandarySummary/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 4 +- .../Interpreter/TransferFunctions/index.html | 4 +- .../Make/Analyzer/Interpreter/index.html | 18 +- .../TaintAnalysis/Make/Analyzer/index.html | 6 +- .../TaintAnalysis/Make/HilConfig/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 4 +- .../argument-1-CFG/index.html | 4 +- .../Make/TransferFunctions/index.html | 20 +- .../AccessTree/AccessMap/index.html | 8 +- .../AccessTree/TraceDomain/index.html | 2 +- .../AccessTree/index.html | 4 +- .../Trace/Sanitizer/index.html | 2 +- .../Trace/Sink/Kind/index.html | 2 +- .../Trace/Sink/Set/index.html | 2 +- .../Trace/Sink/index.html | 4 +- .../Trace/Source/Kind/index.html | 2 +- .../Trace/Source/Set/index.html | 2 +- .../Trace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Trace/Sources/Footprint/index.html | 4 +- .../Trace/Sources/FootprintConfig/index.html | 2 +- .../Trace/Sources/Known/index.html | 2 +- .../Trace/Sources/Sanitizers/index.html | 2 +- .../Trace/Sources/index.html | 2 +- .../Trace/index.html | 20 +- .../argument-1-TaintSpecification/index.html | 4 +- .../Quandary/TaintAnalysis/Make/index.html | 4 +- .../infer/Quandary/TaintAnalysis/index.html | 2 +- .../next/infer/Quandary/TaintSpec/index.html | 2 +- .../AccessTree/AccessMap/index.html | 8 +- .../AccessTree/TraceDomain/index.html | 2 +- .../module-type-S/AccessTree/index.html | 4 +- .../module-type-S/Trace/Sanitizer/index.html | 2 +- .../module-type-S/Trace/Sink/Kind/index.html | 2 +- .../module-type-S/Trace/Sink/Set/index.html | 2 +- .../module-type-S/Trace/Sink/index.html | 4 +- .../Trace/Source/Kind/index.html | 2 +- .../module-type-S/Trace/Source/Set/index.html | 2 +- .../module-type-S/Trace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../Trace/Sources/Footprint/index.html | 4 +- .../Trace/Sources/FootprintConfig/index.html | 2 +- .../Trace/Sources/Known/index.html | 2 +- .../Trace/Sources/Sanitizers/index.html | 2 +- .../module-type-S/Trace/Sources/index.html | 2 +- .../TaintSpec/module-type-S/Trace/index.html | 20 +- .../TaintSpec/module-type-S/index.html | 4 +- .../odoc/next/infer/Quandary/index.html | 2 +- .../odoc/next/infer/TestDeterminators.html | 2 +- .../index.html | 2 +- .../JProcname/JNI/index.html | 2 +- .../TestDeterminators/JProcname/index.html | 12 +- .../JavaProfilerSamples/index.html | 8 +- .../TestDeterminator/index.html | 12 +- .../next/infer/TestDeterminators/index.html | 2 +- .../next/infer/Textuallib/LineMap/index.html | 2 +- .../infer/Textuallib/Textual/Attr/index.html | 2 +- .../infer/Textuallib/Textual/Body/index.html | 2 +- .../Textuallib/Textual/BoolExp/index.html | 2 +- .../infer/Textuallib/Textual/Const/index.html | 2 +- .../infer/Textuallib/Textual/Exp/index.html | 2 +- .../Textuallib/Textual/FieldDecl/index.html | 2 +- .../Textual/FieldName/HashSet/index.html | 2 +- .../Textuallib/Textual/FieldName/index.html | 2 +- .../Textuallib/Textual/Global/index.html | 2 +- .../infer/Textuallib/Textual/Ident/index.html | 2 +- .../infer/Textuallib/Textual/Instr/index.html | 2 +- .../infer/Textuallib/Textual/Lang/index.html | 2 +- .../Textuallib/Textual/Location/index.html | 2 +- .../Textuallib/Textual/Module/index.html | 2 +- .../infer/Textuallib/Textual/Node/index.html | 2 +- .../Textual/NodeName/HashSet/index.html | 2 +- .../Textuallib/Textual/NodeName/index.html | 2 +- .../Textuallib/Textual/ProcDecl/index.html | 2 +- .../Textuallib/Textual/ProcDesc/index.html | 2 +- .../Textual/ProcName/HashSet/index.html | 2 +- .../Textuallib/Textual/ProcName/index.html | 2 +- .../Textuallib/Textual/ProcSig/index.html | 2 +- .../Textual/QualifiedProcName/index.html | 2 +- .../Textuallib/Textual/SourceFile/index.html | 2 +- .../Textual/SsaVerification/index.html | 2 +- .../Textuallib/Textual/Struct/index.html | 2 +- .../Textuallib/Textual/Terminator/index.html | 2 +- .../infer/Textuallib/Textual/Typ/index.html | 2 +- .../Textual/TypeName/HashSet/index.html | 2 +- .../Textuallib/Textual/TypeName/index.html | 2 +- .../Textual/VarName/HashSet/index.html | 2 +- .../Textuallib/Textual/VarName/index.html | 2 +- .../next/infer/Textuallib/Textual/index.html | 2 +- .../module-type-NAME/HashSet/index.html | 2 +- .../Textual/module-type-NAME/index.html | 2 +- .../TextualBasicVerification/index.html | 2 +- .../TextualDecls/ProcEntry/index.html | 2 +- .../infer/Textuallib/TextualDecls/index.html | 14 +- .../Textuallib/TextualLexer/Lexbuf/index.html | 4 +- .../infer/Textuallib/TextualLexer/index.html | 2 +- .../infer/Textuallib/TextualMenhir/index.html | 4 +- .../TextualParser/TextualFile/index.html | 4 +- .../infer/Textuallib/TextualParser/index.html | 4 +- .../infer/Textuallib/TextualSil/index.html | 4 +- .../Textuallib/TextualTransform/index.html | 4 +- .../TextualTypeVerification/index.html | 26 +- .../odoc/next/infer/Textuallib/index.html | 2 +- .../infer/Topllib/DataFlowQuery/index.html | 4 +- .../odoc/next/infer/Topllib/Topl/index.html | 2 +- .../next/infer/Topllib/ToplAstOps/index.html | 2 +- .../infer/Topllib/ToplAutomaton/index.html | 2 +- .../static/odoc/next/infer/Topllib/index.html | 2 +- .../AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../AI_RPO/T/index.html | 4 +- .../AI_RPO/index.html | 6 +- .../AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../AI_WTO/T/index.html | 4 +- .../AI_WTO/index.html | 6 +- .../ExceptionalTestInterpreter/index.html | 10 +- .../NormalTestInterpreter/AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../NormalTestInterpreter/AI_RPO/T/index.html | 4 +- .../NormalTestInterpreter/AI_RPO/index.html | 6 +- .../NormalTestInterpreter/AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../NormalTestInterpreter/AI_WTO/T/index.html | 4 +- .../NormalTestInterpreter/AI_WTO/index.html | 6 +- .../NormalTestInterpreter/index.html | 10 +- .../PathCountDomain/index.html | 2 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 4 +- .../argument-1-CFG/index.html | 4 +- .../PathCountTransferFunctions/index.html | 2 +- .../AbstractInterpreterTests/index.html | 2 +- .../UnitTests/AccessPathTestUtils/index.html | 2 +- .../Domain/AccessMap/index.html | 8 +- .../Domain/TraceDomain/index.html | 2 +- .../AccessTreeTests/Domain/index.html | 4 +- .../MakeTree/AccessMap/index.html | 8 +- .../MakeTree/TraceDomain/index.html | 2 +- .../MakeTree/argument-1-Config/index.html | 2 +- .../AccessTreeTests/MakeTree/index.html | 4 +- .../MockTraceDomain/index.html | 2 +- .../UnitTests/AccessTreeTests/index.html | 2 +- .../TestInterpreter/AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_RPO/T/index.html | 4 +- .../TestInterpreter/AI_RPO/index.html | 6 +- .../TestInterpreter/AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_WTO/T/index.html | 4 +- .../TestInterpreter/AI_WTO/index.html | 6 +- .../TestInterpreter/index.html | 10 +- .../UnitTests/AddressTakenTests/index.html | 2 +- .../AnalyzerTester/Make/AI_RPO/M/index.html | 8 +- .../Make/AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../Make/AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../Make/AI_RPO/T/CFG/Node/index.html | 2 +- .../Make/AI_RPO/T/CFG/index.html | 4 +- .../Make/AI_RPO/T/Domain/index.html | 2 +- .../AnalyzerTester/Make/AI_RPO/T/index.html | 4 +- .../AnalyzerTester/Make/AI_RPO/index.html | 6 +- .../AnalyzerTester/Make/AI_WTO/M/index.html | 8 +- .../Make/AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../Make/AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../Make/AI_WTO/T/CFG/Node/index.html | 2 +- .../Make/AI_WTO/T/CFG/index.html | 4 +- .../Make/AI_WTO/T/Domain/index.html | 2 +- .../AnalyzerTester/Make/AI_WTO/T/index.html | 4 +- .../AnalyzerTester/Make/AI_WTO/index.html | 6 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../Make/argument-1-T/CFG/Node/index.html | 4 +- .../Make/argument-1-T/CFG/index.html | 4 +- .../Make/argument-1-T/Domain/index.html | 2 +- .../Make/argument-1-T/index.html | 4 +- .../UnitTests/AnalyzerTester/Make/index.html | 10 +- .../AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../AI_RPO/T/index.html | 4 +- .../MakeBackwardExceptional/AI_RPO/index.html | 6 +- .../AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../AI_WTO/T/index.html | 4 +- .../MakeBackwardExceptional/AI_WTO/index.html | 6 +- .../argument-1-T/CFG/Node/IdMap/index.html | 8 +- .../argument-1-T/CFG/Node/IdSet/index.html | 2 +- .../argument-1-T/CFG/Node/index.html | 4 +- .../argument-1-T/CFG/index.html | 4 +- .../argument-1-T/Domain/index.html | 2 +- .../argument-1-T/index.html | 4 +- .../MakeBackwardExceptional/index.html | 10 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 4 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../argument-1-I/TransferFunctions/index.html | 4 +- .../MakeTester/argument-1-I/index.html | 18 +- .../AnalyzerTester/MakeTester/index.html | 6 +- .../MakeTesters/AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 2 +- .../MakeTesters/AI_RPO/T/CFG/Node/index.html | 2 +- .../MakeTesters/AI_RPO/T/CFG/index.html | 4 +- .../MakeTesters/AI_RPO/T/Domain/index.html | 2 +- .../MakeTesters/AI_RPO/T/index.html | 4 +- .../MakeTesters/AI_RPO/index.html | 6 +- .../MakeTesters/AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 2 +- .../MakeTesters/AI_WTO/T/CFG/Node/index.html | 2 +- .../MakeTesters/AI_WTO/T/CFG/index.html | 4 +- .../MakeTesters/AI_WTO/T/Domain/index.html | 2 +- .../MakeTesters/AI_WTO/T/index.html | 4 +- .../MakeTesters/AI_WTO/index.html | 6 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 4 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 2 +- .../TransferFunctions/index.html | 4 +- .../MakeTesters/argument-1-RPO/index.html | 18 +- .../MakeTesters/argument-2-WTO/index.html | 18 +- .../AnalyzerTester/MakeTesters/index.html | 10 +- .../AnalyzerTester/StructuredSil/index.html | 28 +- .../infer/UnitTests/AnalyzerTester/index.html | 4 +- .../infer/UnitTests/CStubsTests/index.html | 4 +- .../DifferentialFiltersTests/index.html | 2 +- .../UnitTests/DifferentialTests/index.html | 2 +- .../DifferentialTestsUtils/index.html | 38 +- .../infer/UnitTests/FileDiffTests/index.html | 4 +- .../infer/UnitTests/GradleTests/index.html | 4 +- .../infer/UnitTests/HilExpTests/index.html | 2 +- .../infer/UnitTests/IListTests/index.html | 2 +- .../UnitTests/JavaClassNameTests/index.html | 8 +- .../JavaProfilerSamplesTest/index.html | 4 +- .../LRUHashtblTests/LRUHash/index.html | 8 +- .../UnitTests/LRUHashtblTests/index.html | 2 +- .../TestInterpreter/AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_RPO/T/index.html | 4 +- .../TestInterpreter/AI_RPO/index.html | 6 +- .../TestInterpreter/AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_WTO/T/index.html | 4 +- .../TestInterpreter/AI_WTO/index.html | 6 +- .../LivenessTests/TestInterpreter/index.html | 10 +- .../infer/UnitTests/LivenessTests/index.html | 2 +- .../BackwardCfg/Node/IdMap/index.html | 8 +- .../BackwardCfg/Node/IdSet/index.html | 2 +- .../ProcCfgTests/BackwardCfg/Node/index.html | 2 +- .../ProcCfgTests/BackwardCfg/index.html | 4 +- .../BackwardInstrCfg/Node/IdMap/index.html | 8 +- .../BackwardInstrCfg/Node/IdSet/index.html | 2 +- .../BackwardInstrCfg/Node/index.html | 2 +- .../ProcCfgTests/BackwardInstrCfg/index.html | 4 +- .../InstrCfg/Node/IdMap/index.html | 8 +- .../InstrCfg/Node/IdSet/index.html | 2 +- .../ProcCfgTests/InstrCfg/Node/index.html | 2 +- .../ProcCfgTests/InstrCfg/index.html | 4 +- .../infer/UnitTests/ProcCfgTests/index.html | 2 +- .../RestartSchedulerTests/index.html | 2 +- .../SchedulerTests/MockNode/IdMap/index.html | 8 +- .../SchedulerTests/MockNode/IdSet/index.html | 2 +- .../MockNode/OrderedId/index.html | 2 +- .../SchedulerTests/MockNode/index.html | 4 +- .../MockProcCfg/WTO/CFG/Node/IdMap/index.html | 8 +- .../MockProcCfg/WTO/CFG/Node/index.html | 2 +- .../MockProcCfg/WTO/CFG/index.html | 2 +- .../SchedulerTests/MockProcCfg/WTO/index.html | 2 +- .../SchedulerTests/MockProcCfg/index.html | 22 +- .../S/CFG/Node/IdMap/index.html | 8 +- .../S/CFG/Node/IdSet/index.html | 2 +- .../SchedulerTests/S/CFG/Node/index.html | 2 +- .../UnitTests/SchedulerTests/S/CFG/index.html | 4 +- .../UnitTests/SchedulerTests/S/index.html | 2 +- .../infer/UnitTests/SchedulerTests/index.html | 2 +- .../infer/UnitTests/SeverityTests/index.html | 2 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../TransferFunctions/Domain/index.html | 4 +- .../Interpreter/TransferFunctions/index.html | 4 +- .../Analyzer/Interpreter/index.html | 18 +- .../MockTaintAnalysis/Analyzer/index.html | 6 +- .../MockTaintAnalysis/HilConfig/index.html | 2 +- .../TaintDomain/AccessMap/index.html | 8 +- .../TaintDomain/TraceDomain/index.html | 2 +- .../MockTaintAnalysis/TaintDomain/index.html | 4 +- .../TraceDomain/Sanitizer/index.html | 2 +- .../TraceDomain/Sink/Kind/index.html | 2 +- .../TraceDomain/Sink/Set/index.html | 2 +- .../TraceDomain/Sink/index.html | 4 +- .../TraceDomain/Sinks/index.html | 2 +- .../TraceDomain/Source/Kind/index.html | 2 +- .../TraceDomain/Source/Set/index.html | 2 +- .../TraceDomain/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../TraceDomain/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../TraceDomain/Sources/Known/index.html | 2 +- .../TraceDomain/Sources/Sanitizers/index.html | 2 +- .../TraceDomain/Sources/index.html | 2 +- .../MockTaintAnalysis/TraceDomain/index.html | 20 +- .../CFG/Node/IdMap/index.html | 8 +- .../CFG/Node/IdSet/index.html | 2 +- .../TransferFunctions/CFG/Node/index.html | 2 +- .../TransferFunctions/CFG/index.html | 4 +- .../argument-1-CFG/Node/IdMap/index.html | 8 +- .../argument-1-CFG/Node/IdSet/index.html | 2 +- .../argument-1-CFG/Node/index.html | 4 +- .../argument-1-CFG/index.html | 4 +- .../TransferFunctions/index.html | 20 +- .../TaintTests/MockTaintAnalysis/index.html | 4 +- .../TaintTests/MockTrace/Sanitizer/index.html | 2 +- .../TaintTests/MockTrace/Sink/Kind/index.html | 2 +- .../TaintTests/MockTrace/Sink/Set/index.html | 2 +- .../TaintTests/MockTrace/Sink/index.html | 4 +- .../MockTrace/Source/Kind/index.html | 2 +- .../MockTrace/Source/Set/index.html | 2 +- .../TaintTests/MockTrace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../MockTrace/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../MockTrace/Sources/Known/index.html | 2 +- .../MockTrace/Sources/Sanitizers/index.html | 2 +- .../TaintTests/MockTrace/Sources/index.html | 2 +- .../UnitTests/TaintTests/MockTrace/index.html | 20 +- .../TestInterpreter/AI_RPO/M/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_RPO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_RPO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_RPO/T/CFG/index.html | 4 +- .../AI_RPO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_RPO/T/index.html | 4 +- .../TestInterpreter/AI_RPO/index.html | 6 +- .../TestInterpreter/AI_WTO/M/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdMap/index.html | 8 +- .../AI_WTO/T/CFG/Node/IdSet/index.html | 4 +- .../AI_WTO/T/CFG/Node/index.html | 4 +- .../TestInterpreter/AI_WTO/T/CFG/index.html | 4 +- .../AI_WTO/T/Domain/index.html | 4 +- .../TestInterpreter/AI_WTO/T/index.html | 4 +- .../TestInterpreter/AI_WTO/index.html | 6 +- .../TaintTests/TestInterpreter/index.html | 10 +- .../infer/UnitTests/TaintTests/index.html | 2 +- .../UnitTests/TraceTests/MockSink/index.html | 2 +- .../TraceTests/MockSource/Kind/index.html | 6 +- .../TraceTests/MockSource/Set/index.html | 2 +- .../TraceTests/MockSource/index.html | 6 +- .../TraceTests/MockTrace/Sanitizer/index.html | 2 +- .../TraceTests/MockTrace/Sink/Kind/index.html | 2 +- .../TraceTests/MockTrace/Sink/Set/index.html | 2 +- .../TraceTests/MockTrace/Sink/index.html | 4 +- .../MockTrace/Source/Kind/index.html | 2 +- .../MockTrace/Source/Set/index.html | 2 +- .../TraceTests/MockTrace/Source/index.html | 6 +- .../Sources/Footprint/AccessMap/index.html | 8 +- .../Sources/Footprint/TraceDomain/index.html | 2 +- .../MockTrace/Sources/Footprint/index.html | 4 +- .../Sources/FootprintConfig/index.html | 2 +- .../MockTrace/Sources/Known/index.html | 2 +- .../MockTrace/Sources/Sanitizers/index.html | 2 +- .../TraceTests/MockTrace/Sources/index.html | 2 +- .../UnitTests/TraceTests/MockTrace/index.html | 20 +- .../TraceTests/MockTraceElem/Kind/index.html | 2 +- .../TraceTests/MockTraceElem/Set/index.html | 2 +- .../TraceTests/MockTraceElem/index.html | 2 +- .../infer/UnitTests/TraceTests/index.html | 2 +- .../WTO/CFG/Node/IdMap/index.html | 8 +- .../WTO/CFG/Node/index.html | 2 +- .../WTO/CFG/index.html | 2 +- .../WeakTopologicalOrderTests/WTO/index.html | 2 +- .../WeakTopologicalOrderTests/index.html | 4 +- .../odoc/next/infer/UnitTests/index.html | 2 +- website/static/odoc/next/infer/index.html | 2 +- website/static/odoc/next/infer/infer.html | 2 +- .../fonts/fira-mono-v14-latin-500.woff2 | Bin 0 -> 16148 bytes .../fonts/fira-mono-v14-latin-regular.woff2 | Bin 0 -> 16284 bytes .../fonts/fira-sans-v17-latin-500.woff2 | Bin 0 -> 24020 bytes .../fonts/fira-sans-v17-latin-500italic.woff2 | Bin 0 -> 24896 bytes .../fonts/fira-sans-v17-latin-700.woff2 | Bin 0 -> 24964 bytes .../fonts/fira-sans-v17-latin-700italic.woff2 | Bin 0 -> 26072 bytes .../fonts/fira-sans-v17-latin-italic.woff2 | Bin 0 -> 24936 bytes .../fonts/fira-sans-v17-latin-regular.woff2 | Bin 0 -> 23880 bytes .../fonts/noticia-text-v15-latin-700.woff2 | Bin 0 -> 21972 bytes .../fonts/noticia-text-v15-latin-italic.woff2 | Bin 0 -> 17356 bytes .../noticia-text-v15-latin-regular.woff2 | Bin 0 -> 22308 bytes .../odoc/next/odoc.support/highlight.pack.js | 373 +++++++--- .../static/odoc/next/odoc.support/odoc.css | 679 ++++++++++++++++-- .../odoc/next/odoc.support/odoc_search.js | 66 ++ 2008 files changed, 7514 insertions(+), 6224 deletions(-) create mode 100644 website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_j/index.html create mode 100644 website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_t/index.html create mode 100644 website/static/odoc/next/infer/Absint/AnalysisResult/index.html create mode 100644 website/static/odoc/next/infer/Backend/LineageTaint/Private/index.html create mode 100644 website/static/odoc/next/infer/Backend/LineageTaint/index.html create mode 100644 website/static/odoc/next/infer/Checkers/Lineage/Local/index.html create mode 100644 website/static/odoc/next/infer/Checkers/Lineage/Out/index.html create mode 100644 website/static/odoc/next/infer/Checkers/Lineage/PPNode/index.html create mode 100644 website/static/odoc/next/infer/Checkers/Lineage/Vertex/index.html create mode 100644 website/static/odoc/next/infer/Concurrency/StarvationDomain/AccessExpressionOrConst/index.html create mode 100644 website/static/odoc/next/infer/Concurrency/StarvationDomain/AcquisitionElem/index.html create mode 100644 website/static/odoc/next/infer/IR/Procdesc/NodeHashSet/index.html create mode 100644 website/static/odoc/next/infer/IR/Procname/Replace_polymorphic_compare/index.html delete mode 100644 website/static/odoc/next/infer/Integration/Buck2Clang/index.html create mode 100644 website/static/odoc/next/infer/Pulselib/PulseCallOperations/GlobalForStats/index.html create mode 100644 website/static/odoc/next/infer/Pulselib/PulseMutualRecursion/index.html create mode 100644 website/static/odoc/next/infer/Pulselib/PulsePp/index.html create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-500.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-500.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-500italic.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-700.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-regular.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/noticia-text-v15-latin-700.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 create mode 100644 website/static/odoc/next/odoc.support/fonts/noticia-text-v15-latin-regular.woff2 create mode 100644 website/static/odoc/next/odoc.support/odoc_search.js diff --git a/website/docs/all-issue-types.md b/website/docs/all-issue-types.md index b5aaec60ad0..54ae56cba98 100644 --- a/website/docs/all-issue-types.md +++ b/website/docs/all-issue-types.md @@ -1243,6 +1243,25 @@ we assume that any captured weak pointer whose name contains "self" is a weak re In contrast, `strongSelf` is a local variable to the block, so the check supports any name given to a local strong pointer that has been assigned `weakSelf`. +## MUTUAL_RECURSION_CYCLE + +Reported as "Mutual Recursion Cycle" by [pulse](/docs/next/checker-pulse). + +A recursive call or mutually recursive call has been detected. This does *not* mean that the program won't terminate, just that the code is recursive. You should double-check if the recursion is intended and if it can lead to non-termination or a stack overflow. + +Example of recursive function: + + +```C +int factorial(int x) { + if (x > 0) { + return x * factorial(x-1); + } else { + return 1; + } +} +``` + ## NIL_BLOCK_CALL Reported as "Nil Block Call" by [pulse](/docs/next/checker-pulse). @@ -1770,6 +1789,48 @@ An example of such variadic methods is In this example, if `str` is `nil` then an array `@[@"aaa"]` of size 1 will be created, and not an array `@[@"aaa", str, @"bbb"]` of size 3 as expected. +## PULSE_CANNOT_INSTANTIATE_ABSTRACT_CLASS + +Reported as "Cannot Instantiate Abstract Class" by [pulse](/docs/next/checker-pulse). + +Instantiating an abstract class will lead to `Cannot instantiate abstract class` error. + +```hack +abstract class AbstractClass1 {} + +class ConcreteClass1 extends AbstractClass1 {} + +public static function makeGeneric(classname $cls): void { + new $cls(); +} + +<<__ConsistentConstruct>> +abstract class AbstractClass2 { + + public static function makeStatic(): void { + new static(); + } +} + +class ConcreteClass2 extends AbstractClass2 {} + +public function badViaGeneric(): void { + Main::makeGeneric(AbstractClass1::class); // ERROR! +} + +public function goodViaGeneric(): void { + Main::makeGeneric(ConcreteClass1::class); +} + +public function badViaStatic(): void { + AbstractClass2::makeStatic(); // ERROR! +} + +public function goodViaStatic(): void { + ConcreteClass2::makeStatic(); +} +``` + ## PULSE_CONST_REFABLE Reported as "Const Refable Parameter" by [pulse](/docs/next/checker-pulse). @@ -1806,6 +1867,16 @@ function simple_bad() : int { } ``` +## PULSE_DYNAMIC_TYPE_MISMATCH + +Reported as "Dynamic Type Mismatch" by [pulse](/docs/next/checker-pulse). + +This error is reported in Hack. It fires when we detect an operation that is incompatible +with the dynamic type of its arguments. + +For example, reading `$x['key']` when `$x` is a vector. + + ## PULSE_READONLY_SHARED_PTR_PARAM Reported as "Read-only Shared Parameter" by [pulse](/docs/next/checker-pulse). @@ -2486,6 +2557,41 @@ hierarchy: @end ``` +## RETAIN_CYCLE_NO_WEAK_INFO + +Reported as "Retain Cycle No Weak Info" by [pulse](/docs/next/checker-pulse). + +A retain cycle is a situation when object A retains object B, and object B +retains object A at the same time. Here is an example: + +```objectivec +@class Child; +@interface Parent : NSObject { + Child *child; // Instance variables are implicitly __strong +} +@end +@interface Child : NSObject { + Parent *parent; +} +@end +``` + +You can fix a retain cycle in ARC by using \_\_weak variables or weak properties +for your "back links", i.e. links to direct or indirect parents in an object +hierarchy: + +```objectivec +@class Child; +@interface Parent : NSObject { + Child *child; +} +@end +@interface Child : NSObject { + __weak Parent *parent; +} +@end +``` + ## SCOPE_LEAKAGE Reported as "Scope Leakage" by [scope-leakage](/docs/next/checker-scope-leakage). diff --git a/website/docs/checker-pulse.md b/website/docs/checker-pulse.md index 96091e0d6f5..edd0e75dd36 100644 --- a/website/docs/checker-pulse.md +++ b/website/docs/checker-pulse.md @@ -151,6 +151,7 @@ The following issue types are reported by this checker: - [DATA_FLOW_TO_SINK](/docs/next/all-issue-types#data_flow_to_sink) - [MEMORY_LEAK_C](/docs/next/all-issue-types#memory_leak_c) - [MEMORY_LEAK_CPP](/docs/next/all-issue-types#memory_leak_cpp) +- [MUTUAL_RECURSION_CYCLE](/docs/next/all-issue-types#mutual_recursion_cycle) - [NIL_BLOCK_CALL](/docs/next/all-issue-types#nil_block_call) - [NIL_BLOCK_CALL_LATENT](/docs/next/all-issue-types#nil_block_call_latent) - [NIL_INSERTION_INTO_COLLECTION](/docs/next/all-issue-types#nil_insertion_into_collection) @@ -175,8 +176,10 @@ The following issue types are reported by this checker: - [NULL_ARGUMENT_LATENT](/docs/next/all-issue-types#null_argument_latent) - [OPTIONAL_EMPTY_ACCESS](/docs/next/all-issue-types#optional_empty_access) - [OPTIONAL_EMPTY_ACCESS_LATENT](/docs/next/all-issue-types#optional_empty_access_latent) +- [PULSE_CANNOT_INSTANTIATE_ABSTRACT_CLASS](/docs/next/all-issue-types#pulse_cannot_instantiate_abstract_class) - [PULSE_CONST_REFABLE](/docs/next/all-issue-types#pulse_const_refable) - [PULSE_DICT_MISSING_KEY](/docs/next/all-issue-types#pulse_dict_missing_key) +- [PULSE_DYNAMIC_TYPE_MISMATCH](/docs/next/all-issue-types#pulse_dynamic_type_mismatch) - [PULSE_READONLY_SHARED_PTR_PARAM](/docs/next/all-issue-types#pulse_readonly_shared_ptr_param) - [PULSE_REFERENCE_STABILITY](/docs/next/all-issue-types#pulse_reference_stability) - [PULSE_RESOURCE_LEAK](/docs/next/all-issue-types#pulse_resource_leak) @@ -195,6 +198,7 @@ The following issue types are reported by this checker: - [PULSE_UNNECESSARY_COPY_OPTIONAL_CONST](/docs/next/all-issue-types#pulse_unnecessary_copy_optional_const) - [PULSE_UNNECESSARY_COPY_RETURN](/docs/next/all-issue-types#pulse_unnecessary_copy_return) - [RETAIN_CYCLE](/docs/next/all-issue-types#retain_cycle) +- [RETAIN_CYCLE_NO_WEAK_INFO](/docs/next/all-issue-types#retain_cycle_no_weak_info) - [SENSITIVE_DATA_FLOW](/docs/next/all-issue-types#sensitive_data_flow) - [STACK_VARIABLE_ADDRESS_ESCAPE](/docs/next/all-issue-types#stack_variable_address_escape) - [TAINT_ERROR](/docs/next/all-issue-types#taint_error) diff --git a/website/static/man/next/infer-analyze.1.html b/website/static/man/next/infer-analyze.1.html index 1b35a7644af..5e8fcaad6f6 100644 --- a/website/static/man/next/infer-analyze.1.html +++ b/website/static/man/next/infer-analyze.1.html @@ -229,6 +229,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--no-deduplicate

Deactivates: Apply @@ -247,6 +253,13 @@

OPTIONS --default-checkers)

+

--dict-missing-key-var-block-list ++string

+ +

Skip analyzing the variables in +the dict-missing-key checker.

+ +

--files-to-analyze-index file

@@ -411,20 +424,6 @@

OPTIONS dependencies that cannot be found. (Conversely: --no-log-missing-deps)

- -

--log-pulse-disjunct-increase-after-model-call

- -

Activates: Log which model did -increase the current number of Pulse disjuncts. (Conversely: ---no-log-pulse-disjunct-increase-after-model-call)

- - -

--log-pulse-unreachable-nodes

- -

Activates: Log for each -function and each summary, the ratio of unreached nodes. -(Conversely: --no-log-pulse-unreachable-nodes)

-

--loop-hoisting

Activates: loop-hoisting @@ -561,6 +560,13 @@

OPTIONS and disable all other checkers (Conversely: --no-purity-only)

+ +

--qualified-cpp-name-block-list ++string

+ +

Skip analyzing the procedures +under the qualified cpp type name.

+

--quandary

Activates: quandary @@ -1064,12 +1070,13 @@

JAVA OPTIONS -

--no-annotation-reachability-apply-class-annotations

+

--no-annotation-reachability-apply-superclass-annotations

Deactivates: Applies -annotations of a class/interface to all its methods +annotations from superclasses and interfaces also on methods +that are not overridden from the superclass or interface. (Conversely: ---annotation-reachability-apply-class-annotations)

+--annotation-reachability-apply-superclass-annotations)

--annotation-reachability-custom-models @@ -1112,6 +1119,14 @@

JAVA OPTIONS --no-annotation-reachability-no-allocation)

+

--annotation-reachability-report-source-and-sink

+ +

Activates: Reports methods that +are marked as both a source and a sink at the same time. +(Conversely: +--no-annotation-reachability-report-source-and-sink)

+ +

--external-java-packages +prefix

@@ -1229,7 +1244,21 @@

PULSE CHECKER OPTIONS -

--pulse-cut-to-one-path-procedures-pattern +

--log-pulse-coverage

+ +

Activates: Log precisely where +coverage stops, at the end of file stats/stats.txt. +(Conversely: --no-log-pulse-coverage)

+ + +

--log-pulse-disjunct-increase-after-model-call

+ +

Activates: Log which model did +increase the current number of Pulse disjuncts. (Conversely: +--no-log-pulse-disjunct-increase-after-model-call)

+ + +

--pulse-cut-to-one-path-procedures-pattern string

Regex of methods for which @@ -1381,6 +1410,13 @@

PULSE CHECKER OPTIONS modelled as "skip" in Pulse

+

--pulse-model-skip-pattern-list ++string

+ +

Regex of methods that should be +modelled as "skip" in Pulse

+ +

--pulse-model-transfer-ownership +string

diff --git a/website/static/man/next/infer-capture.1.html b/website/static/man/next/infer-capture.1.html index 0434abb8f82..2ee649f0ef7 100644 --- a/website/static/man/next/infer-capture.1.html +++ b/website/static/man/next/infer-capture.1.html @@ -146,6 +146,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--force-delete-results-dir

@@ -472,12 +478,6 @@

BUCK OPTIONS

Specify the parent directory of buck-out (used only for buck2).

-

--buck2-use-bxl

- -

Activates: Use BXL script when -capturing with buck2. (Conversely: ---no-buck2-use-bxl)

-

--Xbuck +string

@@ -609,8 +609,17 @@

CLANG OPTIONS whose path matches the given OCaml regex from the start of the string during capture.

-

--Xclang -+string

+ +

--struct-as-cpp-class

+ +

Activates: Translate C structs +as C++ classes. This can be useful when analyzing C/C++ code +to make sure struct global variables shared between C and +C++ source files are treated as same variables

+ +

(Conversely: +--no-struct-as-cpp-class)
+--Xclang
+string

Pass values as command-line arguments to invocations of clang

diff --git a/website/static/man/next/infer-compile.1.html b/website/static/man/next/infer-compile.1.html index a3b88eb8bbb..8c37323908a 100644 --- a/website/static/man/next/infer-compile.1.html +++ b/website/static/man/next/infer-compile.1.html @@ -97,6 +97,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--force-delete-results-dir

diff --git a/website/static/man/next/infer-report.1.html b/website/static/man/next/infer-report.1.html index 5151c282836..d36c04eb5ed 100644 --- a/website/static/man/next/infer-report.1.html +++ b/website/static/man/next/infer-report.1.html @@ -164,6 +164,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--no-deduplicate

Deactivates: Apply @@ -298,6 +304,7 @@

OPTIONS MIXED_SELF_WEAKSELF (enabled by default),
MODIFIES_IMMUTABLE (enabled by default),
MULTIPLE_WEAKSELF (enabled by default),
+MUTUAL_RECURSION_CYCLE (disabled by default),
Missing_fld (enabled by default),
NIL_BLOCK_CALL (enabled by default),
NIL_BLOCK_CALL_LATENT (disabled by default),
@@ -333,8 +340,11 @@

OPTIONS PRECONDITION_NOT_MET (enabled by default),
PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
+PULSE_CANNOT_INSTANTIATE_ABSTRACT_CLASS (disabled by +default),
PULSE_CONST_REFABLE (enabled by default),
PULSE_DICT_MISSING_KEY (disabled by default),
+PULSE_DYNAMIC_TYPE_MISMATCH (disabled by default),
PULSE_READONLY_SHARED_PTR_PARAM (enabled by default),
PULSE_REFERENCE_STABILITY (disabled by default),
PULSE_RESOURCE_LEAK (enabled by default),
@@ -362,6 +372,7 @@

OPTIONS REGEX_OP_ON_UI_THREAD (enabled by default),
RESOURCE_LEAK (enabled by default),
RETAIN_CYCLE (enabled by default),
+RETAIN_CYCLE_NO_WEAK_INFO (disabled by default),
SCOPE_LEAKAGE (enabled by default),
SENSITIVE_DATA_FLOW (disabled by default),
SHELL_INJECTION (enabled by default),
@@ -534,8 +545,29 @@

OPTIONS even if they match the allow list specified by --report-allow-list-path-regex

-

--report-console-limit -int

+ +

--report-block-list-spec +json

+ +

Do not report the issues in +this list.

+ +

Example format:
+"report-block-list-spec": [
+{ "bug_type": +"CXX_REF_CAPTURED_IN_BLOCK",
+"procedure_name": "foo",
+"file": "path/to/File.m"
+"comment": "This is a fp because..." +
+},
+{ "bug_type": "RETAIN_CYCLE",
+"class_name": "MyClass",
+"procedure_name": "my_method"
+"file": "path/to/File.m"
+}
+]
+--report-console-limit
int

Maximum number of issues to display on standard output. Unset with diff --git a/website/static/man/next/infer-reportdiff.1.html b/website/static/man/next/infer-reportdiff.1.html index ff55d39e6b0..be62af6b9d2 100644 --- a/website/static/man/next/infer-reportdiff.1.html +++ b/website/static/man/next/infer-reportdiff.1.html @@ -139,6 +139,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--no-deduplicate

Deactivates: Apply diff --git a/website/static/man/next/infer-run.1.html b/website/static/man/next/infer-run.1.html index 45894f56f5c..ed14f457e28 100644 --- a/website/static/man/next/infer-run.1.html +++ b/website/static/man/next/infer-run.1.html @@ -141,6 +141,12 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

--debug-level-report +int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

--fail-on-issue

Activates: Exit with error code @@ -248,7 +254,28 @@

OPTIONS --report-allow-list-path-regex

-

--report-force-relative-path

+

--report-block-list-spec +json

+ +

Do not report the issues in +this list.

+ +

Example format:
+"report-block-list-spec": [
+{ "bug_type": +"CXX_REF_CAPTURED_IN_BLOCK",
+"procedure_name": "foo",
+"file": "path/to/File.m"
+"comment": "This is a fp because..." +
+},
+{ "bug_type": "RETAIN_CYCLE",
+"class_name": "MyClass",
+"procedure_name": "my_method"
+"file": "path/to/File.m"
+}
+]
+--report-force-relative-path

Activates: Force converting an absolute path to a relative path to the root directory diff --git a/website/static/man/next/infer.1.html b/website/static/man/next/infer.1.html index fde70094e16..9f807a8678a 100644 --- a/website/static/man/next/infer.1.html +++ b/website/static/man/next/infer.1.html @@ -143,12 +143,13 @@

OPTIONS

See also infer-analyze(1).
---no-annotation-reachability-apply-class-annotations

+--no-annotation-reachability-apply-superclass-annotations

Deactivates: Applies -annotations of a class/interface to all its methods +annotations from superclasses and interfaces also on methods +that are not overridden from the superclass or interface. (Conversely: ---annotation-reachability-apply-class-annotations)

+--annotation-reachability-apply-superclass-annotations)

See also infer-analyze(1).
@@ -244,6 +245,15 @@

OPTIONS checkers (Conversely: --no-annotation-reachability-only)

+

See also +infer-analyze(1).
+--annotation-reachability-report-source-and-sink

+ +

Activates: Reports methods that +are marked as both a source and a sink at the same time. +(Conversely: +--no-annotation-reachability-report-source-and-sink)

+

See also infer-analyze(1).
--append-buck-flavors
+string

@@ -517,14 +527,6 @@

OPTIONS

See also infer-capture(1) and infer-run(1).
---buck2-use-bxl

- -

Activates: Use BXL script when -capturing with buck2. (Conversely: ---no-buck2-use-bxl)

- -

See also -infer-capture(1).
--bufferoverrun

Activates: bufferoverrun @@ -861,6 +863,16 @@

OPTIONS

Debug level for the capture. See --debug-level for accepted values.

+

See also +infer-analyze(1), infer-capture(1), +infer-compile(1),
+infer-report
(1), infer-reportdiff(1), and +infer-run(1).
+--debug-level-report
int

+ +

Debug level for the report. See +--debug-level for accepted values.

+

See also infer-analyze(1), infer-capture(1), infer-compile(1),
@@ -896,6 +908,13 @@

OPTIONS

See also infer-capture(1).
+--dict-missing-key-var-block-list
+string

+ +

Skip analyzing the variables in +the dict-missing-key checker.

+ +

See also +infer-analyze(1).
--differential-filter-files
string

Specify the file containing the @@ -1023,6 +1042,7 @@

OPTIONS MIXED_SELF_WEAKSELF (enabled by default),
MODIFIES_IMMUTABLE (enabled by default),
MULTIPLE_WEAKSELF (enabled by default),
+MUTUAL_RECURSION_CYCLE (disabled by default),
Missing_fld (enabled by default),
NIL_BLOCK_CALL (enabled by default),
NIL_BLOCK_CALL_LATENT (disabled by default),
@@ -1058,8 +1078,11 @@

OPTIONS PRECONDITION_NOT_MET (enabled by default),
PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
+PULSE_CANNOT_INSTANTIATE_ABSTRACT_CLASS (disabled by +default),
PULSE_CONST_REFABLE (enabled by default),
PULSE_DICT_MISSING_KEY (disabled by default),
+PULSE_DYNAMIC_TYPE_MISMATCH (disabled by default),
PULSE_READONLY_SHARED_PTR_PARAM (enabled by default),
PULSE_REFERENCE_STABILITY (disabled by default),
PULSE_RESOURCE_LEAK (enabled by default),
@@ -1087,6 +1110,7 @@

OPTIONS REGEX_OP_ON_UI_THREAD (enabled by default),
RESOURCE_LEAK (enabled by default),
RETAIN_CYCLE (enabled by default),
+RETAIN_CYCLE_NO_WEAK_INFO (disabled by default),
SCOPE_LEAKAGE (enabled by default),
SENSITIVE_DATA_FLOW (disabled by default),
SHELL_INJECTION (enabled by default),
@@ -1779,19 +1803,19 @@

OPTIONS

See also infer-analyze(1).
---log-pulse-disjunct-increase-after-model-call

+--log-pulse-coverage

-

Activates: Log which model did -increase the current number of Pulse disjuncts. (Conversely: ---no-log-pulse-disjunct-increase-after-model-call)

+

Activates: Log precisely where +coverage stops, at the end of file stats/stats.txt. +(Conversely: --no-log-pulse-coverage)

See also infer-analyze(1).
---log-pulse-unreachable-nodes

+--log-pulse-disjunct-increase-after-model-call

-

Activates: Log for each -function and each summary, the ratio of unreached nodes. -(Conversely: --no-log-pulse-unreachable-nodes)

+

Activates: Log which model did +increase the current number of Pulse disjuncts. (Conversely: +--no-log-pulse-disjunct-increase-after-model-call)

See also infer-analyze(1).
@@ -2289,6 +2313,13 @@

OPTIONS

Regex of methods that should be modelled as "skip" in Pulse

+

See also +infer-analyze(1).
+--pulse-model-skip-pattern-list
+string

+ +

Regex of methods that should be +modelled as "skip" in Pulse

+

See also infer-analyze(1).
--pulse-model-transfer-ownership
+string

@@ -2683,6 +2714,13 @@

OPTIONS and disable all other checkers (Conversely: --no-purity-only)

+

See also +infer-analyze(1).
+--qualified-cpp-name-block-list
+string

+ +

Skip analyzing the procedures +under the qualified cpp type name.

+

See also infer-analyze(1).
--quandary

@@ -2849,6 +2887,28 @@

OPTIONS

See also infer-report(1) and infer-run(1).
+--report-block-list-spec
json

+ +

Do not report the issues in +this list.

+ +

Example format:
+"report-block-list-spec": [
+{ "bug_type": +"CXX_REF_CAPTURED_IN_BLOCK",
+"procedure_name": "foo",
+"file": "path/to/File.m"
+"comment": "This is a fp because..." +
+},
+{ "bug_type": "RETAIN_CYCLE",
+"class_name": "MyClass",
+"procedure_name": "my_method"
+"file": "path/to/File.m"
+}
+]
+See also infer-report(1) and infer-run(1). +
--report-console-limit
int

Maximum number of issues to @@ -3250,6 +3310,16 @@

OPTIONS

See also infer-analyze(1).
+--struct-as-cpp-class

+ +

Activates: Translate C structs +as C++ classes. This can be useful when analyzing C/C++ code +to make sure struct global variables shared between C and +C++ source files are treated as same variables

+ +

(Conversely: +--no-struct-as-cpp-class)
+See also infer-capture(1).
--tenv-json
file

Path to TEnv json file

diff --git a/website/static/odoc/next/infer/ATDGenerated.html b/website/static/odoc/next/infer/ATDGenerated.html index 0f09c6bdfd3..8133b6b9c2d 100644 --- a/website/static/odoc/next/infer/ATDGenerated.html +++ b/website/static/odoc/next/infer/ATDGenerated.html @@ -1,2 +1,2 @@ -ATDGenerated (infer.ATDGenerated)

Library ATDGenerated

Source code that is generated from ATD definitions.

The entry point of this library is the module ATDGenerated.

\ No newline at end of file +ATDGenerated (infer.ATDGenerated)

Library ATDGenerated

Source code that is generated from ATD definitions.

The entry point of this library is the module ATDGenerated.

diff --git a/website/static/odoc/next/infer/ATDGenerated/AtdDeps/index.html b/website/static/odoc/next/infer/ATDGenerated/AtdDeps/index.html index 49fb1b3db2b..038041d73ad 100644 --- a/website/static/odoc/next/infer/ATDGenerated/AtdDeps/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/AtdDeps/index.html @@ -1,2 +1,2 @@ -AtdDeps (infer.ATDGenerated.AtdDeps)

Module ATDGenerated.AtdDeps

functions necessary to include in atd generated files to enable ppx_compare

val equal_string : string -> string -> bool
val equal_list : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool
val equal_option : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
val equal_int : int -> int -> bool
val equal_bool : bool -> bool -> bool
\ No newline at end of file +AtdDeps (infer.ATDGenerated.AtdDeps)

Module ATDGenerated.AtdDeps

functions necessary to include in atd generated files to enable ppx_compare

val equal_string : string -> string -> bool
val equal_list : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool
val equal_option : ('a -> 'a -> bool) -> 'a option -> 'a option -> bool
val equal_int : int -> int -> bool
val equal_bool : bool -> bool -> bool
diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_b/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_b/index.html index 0892454df5a..27a3a7d6985 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_b/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_b/index.html @@ -1,5 +1,5 @@ -Clang_ast_b (infer.ATDGenerated.Clang_ast_b)

Module ATDGenerated.Clang_ast_b

type access_specifier = Clang_ast_t.access_specifier
type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
  1. aei_kind : atomic_expr_kind;
}
type attribute_kind = Clang_ast_t.attribute_kind =
  1. | AddressSpaceAttrKind
  2. | AnnotateTypeAttrKind
  3. | ArmInAttrKind
  4. | ArmInOutAttrKind
  5. | ArmMveStrictPolymorphismAttrKind
  6. | ArmOutAttrKind
  7. | ArmPreservesAttrKind
  8. | ArmStreamingAttrKind
  9. | ArmStreamingCompatibleAttrKind
  10. | BTFTypeTagAttrKind
  11. | CmseNSCallAttrKind
  12. | HLSLGroupSharedAddressSpaceAttrKind
  13. | HLSLParamModifierAttrKind
  14. | NoDerefAttrKind
  15. | ObjCGCAttrKind
  16. | ObjCInertUnsafeUnretainedAttrKind
  17. | ObjCKindOfAttrKind
  18. | OpenCLConstantAddressSpaceAttrKind
  19. | OpenCLGenericAddressSpaceAttrKind
  20. | OpenCLGlobalAddressSpaceAttrKind
  21. | OpenCLGlobalDeviceAddressSpaceAttrKind
  22. | OpenCLGlobalHostAddressSpaceAttrKind
  23. | OpenCLLocalAddressSpaceAttrKind
  24. | OpenCLPrivateAddressSpaceAttrKind
  25. | Ptr32AttrKind
  26. | Ptr64AttrKind
  27. | SPtrAttrKind
  28. | TypeNonNullAttrKind
  29. | TypeNullUnspecifiedAttrKind
  30. | TypeNullableAttrKind
  31. | TypeNullableResultAttrKind
  32. | UPtrAttrKind
  33. | WebAssemblyFuncrefAttrKind
  34. | CodeAlignAttrKind
  35. | FallThroughAttrKind
  36. | LikelyAttrKind
  37. | MustTailAttrKind
  38. | OpenCLUnrollHintAttrKind
  39. | UnlikelyAttrKind
  40. | AlwaysInlineAttrKind
  41. | NoInlineAttrKind
  42. | NoMergeAttrKind
  43. | SuppressAttrKind
  44. | AArch64SVEPcsAttrKind
  45. | AArch64VectorPcsAttrKind
  46. | AMDGPUKernelCallAttrKind
  47. | AcquireHandleAttrKind
  48. | AnyX86NoCfCheckAttrKind
  49. | CDeclAttrKind
  50. | FastCallAttrKind
  51. | IntelOclBiccAttrKind
  52. | LifetimeBoundAttrKind
  53. | M68kRTDAttrKind
  54. | MSABIAttrKind
  55. | NSReturnsRetainedAttrKind
  56. | ObjCOwnershipAttrKind
  57. | PascalAttrKind
  58. | PcsAttrKind
  59. | PreserveAllAttrKind
  60. | PreserveMostAttrKind
  61. | RegCallAttrKind
  62. | StdCallAttrKind
  63. | SwiftAsyncCallAttrKind
  64. | SwiftCallAttrKind
  65. | SysVABIAttrKind
  66. | ThisCallAttrKind
  67. | VectorCallAttrKind
  68. | SwiftAsyncContextAttrKind
  69. | SwiftContextAttrKind
  70. | SwiftErrorResultAttrKind
  71. | SwiftIndirectResultAttrKind
  72. | AnnotateAttrKind
  73. | CFConsumedAttrKind
  74. | CarriesDependencyAttrKind
  75. | NSConsumedAttrKind
  76. | NonNullAttrKind
  77. | OSConsumedAttrKind
  78. | PassObjectSizeAttrKind
  79. | ReleaseHandleAttrKind
  80. | UseHandleAttrKind
  81. | HLSLSV_DispatchThreadIDAttrKind
  82. | HLSLSV_GroupIndexAttrKind
  83. | AMDGPUFlatWorkGroupSizeAttrKind
  84. | AMDGPUNumSGPRAttrKind
  85. | AMDGPUNumVGPRAttrKind
  86. | AMDGPUWavesPerEUAttrKind
  87. | ARMInterruptAttrKind
  88. | AVRInterruptAttrKind
  89. | AVRSignalAttrKind
  90. | AcquireCapabilityAttrKind
  91. | AcquiredAfterAttrKind
  92. | AcquiredBeforeAttrKind
  93. | AlignMac68kAttrKind
  94. | AlignNaturalAttrKind
  95. | AlignedAttrKind
  96. | AllocAlignAttrKind
  97. | AllocSizeAttrKind
  98. | AlwaysDestroyAttrKind
  99. | AnalyzerNoReturnAttrKind
  100. | AnyX86InterruptAttrKind
  101. | AnyX86NoCallerSavedRegistersAttrKind
  102. | ArcWeakrefUnavailableAttrKind
  103. | ArgumentWithTypeTagAttrKind
  104. | ArmBuiltinAliasAttrKind
  105. | ArmLocallyStreamingAttrKind
  106. | ArmNewAttrKind
  107. | ArtificialAttrKind
  108. | AsmLabelAttrKind
  109. | AssertCapabilityAttrKind
  110. | AssertExclusiveLockAttrKind
  111. | AssertSharedLockAttrKind
  112. | AssumeAlignedAttrKind
  113. | AssumptionAttrKind
  114. | AvailabilityAttrKind
  115. | AvailableOnlyInDefaultEvalMethodAttrKind
  116. | BPFPreserveAccessIndexAttrKind
  117. | BPFPreserveStaticOffsetAttrKind
  118. | BTFDeclTagAttrKind
  119. | BlocksAttrKind
  120. | BuiltinAttrKind
  121. | C11NoReturnAttrKind
  122. | CFAuditedTransferAttrKind
  123. | CFGuardAttrKind
  124. | CFICanonicalJumpTableAttrKind
  125. | CFReturnsNotRetainedAttrKind
  126. | CFReturnsRetainedAttrKind
  127. | CFUnknownTransferAttrKind
  128. | CPUDispatchAttrKind
  129. | CPUSpecificAttrKind
  130. | CUDAConstantAttrKind
  131. | CUDADeviceAttrKind
  132. | CUDADeviceBuiltinSurfaceTypeAttrKind
  133. | CUDADeviceBuiltinTextureTypeAttrKind
  134. | CUDAGlobalAttrKind
  135. | CUDAHostAttrKind
  136. | CUDAInvalidTargetAttrKind
  137. | CUDALaunchBoundsAttrKind
  138. | CUDASharedAttrKind
  139. | CXX11NoReturnAttrKind
  140. | CallableWhenAttrKind
  141. | CallbackAttrKind
  142. | CapabilityAttrKind
  143. | CapturedRecordAttrKind
  144. | CleanupAttrKind
  145. | CmseNSEntryAttrKind
  146. | CodeModelAttrKind
  147. | CodeSegAttrKind
  148. | ColdAttrKind
  149. | CommonAttrKind
  150. | ConstAttrKind
  151. | ConstInitAttrKind
  152. | ConstructorAttrKind
  153. | ConsumableAttrKind
  154. | ConsumableAutoCastAttrKind
  155. | ConsumableSetOnReadAttrKind
  156. | ConvergentAttrKind
  157. | CoroDisableLifetimeBoundAttrKind
  158. | CoroLifetimeBoundAttrKind
  159. | CoroOnlyDestroyWhenCompleteAttrKind
  160. | CoroReturnTypeAttrKind
  161. | CoroWrapperAttrKind
  162. | CountedByAttrKind
  163. | DLLExportAttrKind
  164. | DLLExportStaticLocalAttrKind
  165. | DLLImportAttrKind
  166. | DLLImportStaticLocalAttrKind
  167. | DeprecatedAttrKind
  168. | DestructorAttrKind
  169. | DiagnoseAsBuiltinAttrKind
  170. | DiagnoseIfAttrKind
  171. | DisableSanitizerInstrumentationAttrKind
  172. | DisableTailCallsAttrKind
  173. | EmptyBasesAttrKind
  174. | EnableIfAttrKind
  175. | EnforceTCBAttrKind
  176. | EnforceTCBLeafAttrKind
  177. | EnumExtensibilityAttrKind
  178. | ErrorAttrKind
  179. | ExcludeFromExplicitInstantiationAttrKind
  180. | ExclusiveTrylockFunctionAttrKind
  181. | ExternalSourceSymbolAttrKind
  182. | FinalAttrKind
  183. | FlagEnumAttrKind
  184. | FlattenAttrKind
  185. | FormatAttrKind
  186. | FormatArgAttrKind
  187. | FunctionReturnThunksAttrKind
  188. | GNUInlineAttrKind
  189. | GuardedByAttrKind
  190. | GuardedVarAttrKind
  191. | HIPManagedAttrKind
  192. | HLSLNumThreadsAttrKind
  193. | HLSLResourceAttrKind
  194. | HLSLResourceBindingAttrKind
  195. | HLSLShaderAttrKind
  196. | HotAttrKind
  197. | IBActionAttrKind
  198. | IBOutletAttrKind
  199. | IBOutletCollectionAttrKind
  200. | InitPriorityAttrKind
  201. | InternalLinkageAttrKind
  202. | LTOVisibilityPublicAttrKind
  203. | LayoutVersionAttrKind
  204. | LeafAttrKind
  205. | LockReturnedAttrKind
  206. | LocksExcludedAttrKind
  207. | M68kInterruptAttrKind
  208. | MIGServerRoutineAttrKind
  209. | MSAllocatorAttrKind
  210. | MSConstexprAttrKind
  211. | MSInheritanceAttrKind
  212. | MSNoVTableAttrKind
  213. | MSP430InterruptAttrKind
  214. | MSStructAttrKind
  215. | MSVtorDispAttrKind
  216. | MaxFieldAlignmentAttrKind
  217. | MayAliasAttrKind
  218. | MaybeUndefAttrKind
  219. | MicroMipsAttrKind
  220. | MinSizeAttrKind
  221. | MinVectorWidthAttrKind
  222. | Mips16AttrKind
  223. | MipsInterruptAttrKind
  224. | MipsLongCallAttrKind
  225. | MipsShortCallAttrKind
  226. | NSConsumesSelfAttrKind
  227. | NSErrorDomainAttrKind
  228. | NSReturnsAutoreleasedAttrKind
  229. | NSReturnsNotRetainedAttrKind
  230. | NVPTXKernelAttrKind
  231. | NakedAttrKind
  232. | NoAliasAttrKind
  233. | NoCommonAttrKind
  234. | NoDebugAttrKind
  235. | NoDestroyAttrKind
  236. | NoDuplicateAttrKind
  237. | NoInstrumentFunctionAttrKind
  238. | NoMicroMipsAttrKind
  239. | NoMips16AttrKind
  240. | NoProfileFunctionAttrKind
  241. | NoRandomizeLayoutAttrKind
  242. | NoReturnAttrKind
  243. | NoSanitizeAttrKind
  244. | NoSpeculativeLoadHardeningAttrKind
  245. | NoSplitStackAttrKind
  246. | NoStackProtectorAttrKind
  247. | NoThreadSafetyAnalysisAttrKind
  248. | NoThrowAttrKind
  249. | NoUniqueAddressAttrKind
  250. | NoUwtableAttrKind
  251. | NotTailCalledAttrKind
  252. | OMPAllocateDeclAttrKind
  253. | OMPCaptureNoInitAttrKind
  254. | OMPDeclareTargetDeclAttrKind
  255. | OMPDeclareVariantAttrKind
  256. | OMPThreadPrivateDeclAttrKind
  257. | OSConsumesThisAttrKind
  258. | OSReturnsNotRetainedAttrKind
  259. | OSReturnsRetainedAttrKind
  260. | OSReturnsRetainedOnNonZeroAttrKind
  261. | OSReturnsRetainedOnZeroAttrKind
  262. | ObjCBridgeAttrKind
  263. | ObjCBridgeMutableAttrKind
  264. | ObjCBridgeRelatedAttrKind
  265. | ObjCExceptionAttrKind
  266. | ObjCExplicitProtocolImplAttrKind
  267. | ObjCExternallyRetainedAttrKind
  268. | ObjCIndependentClassAttrKind
  269. | ObjCMethodFamilyAttrKind
  270. | ObjCNSObjectAttrKind
  271. | ObjCPreciseLifetimeAttrKind
  272. | ObjCRequiresPropertyDefsAttrKind
  273. | ObjCRequiresSuperAttrKind
  274. | ObjCReturnsInnerPointerAttrKind
  275. | ObjCRootClassAttrKind
  276. | ObjCSubclassingRestrictedAttrKind
  277. | OpenCLIntelReqdSubGroupSizeAttrKind
  278. | OpenCLKernelAttrKind
  279. | OptimizeNoneAttrKind
  280. | OverrideAttrKind
  281. | OwnerAttrKind
  282. | OwnershipAttrKind
  283. | PackedAttrKind
  284. | ParamTypestateAttrKind
  285. | PatchableFunctionEntryAttrKind
  286. | PointerAttrKind
  287. | PragmaClangBSSSectionAttrKind
  288. | PragmaClangDataSectionAttrKind
  289. | PragmaClangRelroSectionAttrKind
  290. | PragmaClangRodataSectionAttrKind
  291. | PragmaClangTextSectionAttrKind
  292. | PreferredNameAttrKind
  293. | PreferredTypeAttrKind
  294. | PtGuardedByAttrKind
  295. | PtGuardedVarAttrKind
  296. | PureAttrKind
  297. | RISCVInterruptAttrKind
  298. | RandomizeLayoutAttrKind
  299. | ReadOnlyPlacementAttrKind
  300. | ReinitializesAttrKind
  301. | ReleaseCapabilityAttrKind
  302. | ReqdWorkGroupSizeAttrKind
  303. | RequiresCapabilityAttrKind
  304. | RestrictAttrKind
  305. | RetainAttrKind
  306. | ReturnTypestateAttrKind
  307. | ReturnsNonNullAttrKind
  308. | ReturnsTwiceAttrKind
  309. | SYCLKernelAttrKind
  310. | SYCLSpecialClassAttrKind
  311. | ScopedLockableAttrKind
  312. | SectionAttrKind
  313. | SelectAnyAttrKind
  314. | SentinelAttrKind
  315. | SetTypestateAttrKind
  316. | SharedTrylockFunctionAttrKind
  317. | SpeculativeLoadHardeningAttrKind
  318. | StandaloneDebugAttrKind
  319. | StrictFPAttrKind
  320. | StrictGuardStackCheckAttrKind
  321. | SwiftAsyncAttrKind
  322. | SwiftAsyncErrorAttrKind
  323. | SwiftAsyncNameAttrKind
  324. | SwiftAttrAttrKind
  325. | SwiftBridgeAttrKind
  326. | SwiftBridgedTypedefAttrKind
  327. | SwiftErrorAttrKind
  328. | SwiftImportAsNonGenericAttrKind
  329. | SwiftImportPropertyAsAccessorsAttrKind
  330. | SwiftNameAttrKind
  331. | SwiftNewTypeAttrKind
  332. | SwiftPrivateAttrKind
  333. | TLSModelAttrKind
  334. | TargetAttrKind
  335. | TargetClonesAttrKind
  336. | TargetVersionAttrKind
  337. | TestTypestateAttrKind
  338. | TransparentUnionAttrKind
  339. | TrivialABIAttrKind
  340. | TryAcquireCapabilityAttrKind
  341. | TypeTagForDatatypeAttrKind
  342. | TypeVisibilityAttrKind
  343. | UnavailableAttrKind
  344. | UninitializedAttrKind
  345. | UnsafeBufferUsageAttrKind
  346. | UnusedAttrKind
  347. | UsedAttrKind
  348. | UsingIfExistsAttrKind
  349. | UuidAttrKind
  350. | VecReturnAttrKind
  351. | VecTypeHintAttrKind
  352. | VisibilityAttrKind
  353. | WarnUnusedAttrKind
  354. | WarnUnusedResultAttrKind
  355. | WeakAttrKind
  356. | WeakImportAttrKind
  357. | WeakRefAttrKind
  358. | WebAssemblyExportNameAttrKind
  359. | WebAssemblyImportModuleAttrKind
  360. | WebAssemblyImportNameAttrKind
  361. | WorkGroupSizeHintAttrKind
  362. | X86ForceAlignArgPointerAttrKind
  363. | XRayInstrumentAttrKind
  364. | XRayLogArgsAttrKind
  365. | ZeroCallUsedRegsAttrKind
  366. | AbiTagAttrKind
  367. | AliasAttrKind
  368. | AlignValueAttrKind
  369. | BuiltinAliasAttrKind
  370. | CalledOnceAttrKind
  371. | IFuncAttrKind
  372. | InitSegAttrKind
  373. | LoaderUninitializedAttrKind
  374. | LoopHintAttrKind
  375. | ModeAttrKind
  376. | NoBuiltinAttrKind
  377. | NoEscapeAttrKind
  378. | OMPCaptureKindAttrKind
  379. | OMPDeclareSimdDeclAttrKind
  380. | OMPReferencedVarAttrKind
  381. | ObjCBoxableAttrKind
  382. | ObjCClassStubAttrKind
  383. | ObjCDesignatedInitializerAttrKind
  384. | ObjCDirectAttrKind
  385. | ObjCDirectMembersAttrKind
  386. | ObjCNonLazyClassAttrKind
  387. | ObjCNonRuntimeProtocolAttrKind
  388. | ObjCRuntimeNameAttrKind
  389. | ObjCRuntimeVisibleAttrKind
  390. | OpenCLAccessAttrKind
  391. | OverloadableAttrKind
  392. | RenderScriptKernelAttrKind
  393. | SwiftObjCMembersAttrKind
  394. | SwiftVersionedAdditionAttrKind
  395. | SwiftVersionedRemovalAttrKind
  396. | ThreadAttrKind
type binary_operator_kind = Clang_ast_t.binary_operator_kind
type binary_operator_info = Clang_ast_t.binary_operator_info = {
  1. boi_kind : binary_operator_kind;
}
type builtin_type_kind = Clang_ast_t.builtin_type_kind
type cast_kind = Clang_ast_t.cast_kind
type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
  1. xbs_name : string;
  2. xbs_virtual : bool;
}
type cast_expr_info = Clang_ast_t.cast_expr_info = {
  1. cei_cast_kind : cast_kind;
  2. cei_base_path : cxx_base_specifier list;
}
type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
  1. xnee_value : bool;
}
type decl_context_info = Clang_ast_t.decl_context_info = {
  1. dci_has_external_lexical_storage : bool;
  2. dci_has_external_visible_storage : bool;
}
type decl_kind = Clang_ast_t.decl_kind
type declaration_name_kind = Clang_ast_t.declaration_name_kind
type declaration_name = Clang_ast_t.declaration_name = {
  1. dn_kind : declaration_name_kind;
  2. dn_name : string;
}
type enum_decl_scope = Clang_ast_t.enum_decl_scope
type enum_decl_info = Clang_ast_t.enum_decl_info = {
  1. edi_scope : enum_decl_scope option;
  2. edi_is_module_private : bool;
}
type input_kind = Clang_ast_t.input_kind
type integer_literal_info = Clang_ast_t.integer_literal_info = {
  1. ili_is_signed : bool;
  2. ili_bitwidth : int;
  3. ili_value : string;
}
type integer_type_widths = Clang_ast_t.integer_type_widths = {
  1. itw_char_type : int;
  2. itw_short_type : int;
  3. itw_int_type : int;
  4. itw_long_type : int;
  5. itw_longlong_type : int;
}
type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
type named_decl_info = Clang_ast_t.named_decl_info = {
  1. ni_name : string;
  2. ni_qual_name : string list;
}
type obj_c_access_control = Clang_ast_t.obj_c_access_control
type obj_c_availability_check_expr_info = +Clang_ast_b (infer.ATDGenerated.Clang_ast_b)

Module ATDGenerated.Clang_ast_b

type access_specifier = Clang_ast_t.access_specifier
type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
  1. aei_kind : atomic_expr_kind;
}
type attribute_kind = Clang_ast_t.attribute_kind =
  1. | AddressSpaceAttrKind
  2. | AnnotateTypeAttrKind
  3. | ArmInAttrKind
  4. | ArmInOutAttrKind
  5. | ArmMveStrictPolymorphismAttrKind
  6. | ArmOutAttrKind
  7. | ArmPreservesAttrKind
  8. | ArmStreamingAttrKind
  9. | ArmStreamingCompatibleAttrKind
  10. | BTFTypeTagAttrKind
  11. | CmseNSCallAttrKind
  12. | HLSLGroupSharedAddressSpaceAttrKind
  13. | HLSLParamModifierAttrKind
  14. | NoDerefAttrKind
  15. | ObjCGCAttrKind
  16. | ObjCInertUnsafeUnretainedAttrKind
  17. | ObjCKindOfAttrKind
  18. | OpenCLConstantAddressSpaceAttrKind
  19. | OpenCLGenericAddressSpaceAttrKind
  20. | OpenCLGlobalAddressSpaceAttrKind
  21. | OpenCLGlobalDeviceAddressSpaceAttrKind
  22. | OpenCLGlobalHostAddressSpaceAttrKind
  23. | OpenCLLocalAddressSpaceAttrKind
  24. | OpenCLPrivateAddressSpaceAttrKind
  25. | Ptr32AttrKind
  26. | Ptr64AttrKind
  27. | SPtrAttrKind
  28. | TypeNonNullAttrKind
  29. | TypeNullUnspecifiedAttrKind
  30. | TypeNullableAttrKind
  31. | TypeNullableResultAttrKind
  32. | UPtrAttrKind
  33. | WebAssemblyFuncrefAttrKind
  34. | CodeAlignAttrKind
  35. | FallThroughAttrKind
  36. | LikelyAttrKind
  37. | MustTailAttrKind
  38. | OpenCLUnrollHintAttrKind
  39. | UnlikelyAttrKind
  40. | AlwaysInlineAttrKind
  41. | NoInlineAttrKind
  42. | NoMergeAttrKind
  43. | SuppressAttrKind
  44. | AArch64SVEPcsAttrKind
  45. | AArch64VectorPcsAttrKind
  46. | AMDGPUKernelCallAttrKind
  47. | AcquireHandleAttrKind
  48. | AnyX86NoCfCheckAttrKind
  49. | CDeclAttrKind
  50. | FastCallAttrKind
  51. | IntelOclBiccAttrKind
  52. | LifetimeBoundAttrKind
  53. | M68kRTDAttrKind
  54. | MSABIAttrKind
  55. | NSReturnsRetainedAttrKind
  56. | ObjCOwnershipAttrKind
  57. | PascalAttrKind
  58. | PcsAttrKind
  59. | PreserveAllAttrKind
  60. | PreserveMostAttrKind
  61. | RegCallAttrKind
  62. | StdCallAttrKind
  63. | SwiftAsyncCallAttrKind
  64. | SwiftCallAttrKind
  65. | SysVABIAttrKind
  66. | ThisCallAttrKind
  67. | VectorCallAttrKind
  68. | SwiftAsyncContextAttrKind
  69. | SwiftContextAttrKind
  70. | SwiftErrorResultAttrKind
  71. | SwiftIndirectResultAttrKind
  72. | AnnotateAttrKind
  73. | CFConsumedAttrKind
  74. | CarriesDependencyAttrKind
  75. | NSConsumedAttrKind
  76. | NonNullAttrKind
  77. | OSConsumedAttrKind
  78. | PassObjectSizeAttrKind
  79. | ReleaseHandleAttrKind
  80. | UseHandleAttrKind
  81. | HLSLSV_DispatchThreadIDAttrKind
  82. | HLSLSV_GroupIndexAttrKind
  83. | AMDGPUFlatWorkGroupSizeAttrKind
  84. | AMDGPUNumSGPRAttrKind
  85. | AMDGPUNumVGPRAttrKind
  86. | AMDGPUWavesPerEUAttrKind
  87. | ARMInterruptAttrKind
  88. | AVRInterruptAttrKind
  89. | AVRSignalAttrKind
  90. | AcquireCapabilityAttrKind
  91. | AcquiredAfterAttrKind
  92. | AcquiredBeforeAttrKind
  93. | AlignMac68kAttrKind
  94. | AlignNaturalAttrKind
  95. | AlignedAttrKind
  96. | AllocAlignAttrKind
  97. | AllocSizeAttrKind
  98. | AlwaysDestroyAttrKind
  99. | AnalyzerNoReturnAttrKind
  100. | AnyX86InterruptAttrKind
  101. | AnyX86NoCallerSavedRegistersAttrKind
  102. | ArcWeakrefUnavailableAttrKind
  103. | ArgumentWithTypeTagAttrKind
  104. | ArmBuiltinAliasAttrKind
  105. | ArmLocallyStreamingAttrKind
  106. | ArmNewAttrKind
  107. | ArtificialAttrKind
  108. | AsmLabelAttrKind
  109. | AssertCapabilityAttrKind
  110. | AssertExclusiveLockAttrKind
  111. | AssertSharedLockAttrKind
  112. | AssumeAlignedAttrKind
  113. | AssumptionAttrKind
  114. | AvailabilityAttrKind
  115. | AvailableOnlyInDefaultEvalMethodAttrKind
  116. | BPFPreserveAccessIndexAttrKind
  117. | BPFPreserveStaticOffsetAttrKind
  118. | BTFDeclTagAttrKind
  119. | BlocksAttrKind
  120. | BuiltinAttrKind
  121. | C11NoReturnAttrKind
  122. | CFAuditedTransferAttrKind
  123. | CFGuardAttrKind
  124. | CFICanonicalJumpTableAttrKind
  125. | CFReturnsNotRetainedAttrKind
  126. | CFReturnsRetainedAttrKind
  127. | CFUnknownTransferAttrKind
  128. | CPUDispatchAttrKind
  129. | CPUSpecificAttrKind
  130. | CUDAConstantAttrKind
  131. | CUDADeviceAttrKind
  132. | CUDADeviceBuiltinSurfaceTypeAttrKind
  133. | CUDADeviceBuiltinTextureTypeAttrKind
  134. | CUDAGlobalAttrKind
  135. | CUDAHostAttrKind
  136. | CUDAInvalidTargetAttrKind
  137. | CUDALaunchBoundsAttrKind
  138. | CUDASharedAttrKind
  139. | CXX11NoReturnAttrKind
  140. | CallableWhenAttrKind
  141. | CallbackAttrKind
  142. | CapabilityAttrKind
  143. | CapturedRecordAttrKind
  144. | CleanupAttrKind
  145. | CmseNSEntryAttrKind
  146. | CodeModelAttrKind
  147. | CodeSegAttrKind
  148. | ColdAttrKind
  149. | CommonAttrKind
  150. | ConstAttrKind
  151. | ConstInitAttrKind
  152. | ConstructorAttrKind
  153. | ConsumableAttrKind
  154. | ConsumableAutoCastAttrKind
  155. | ConsumableSetOnReadAttrKind
  156. | ConvergentAttrKind
  157. | CoroDisableLifetimeBoundAttrKind
  158. | CoroLifetimeBoundAttrKind
  159. | CoroOnlyDestroyWhenCompleteAttrKind
  160. | CoroReturnTypeAttrKind
  161. | CoroWrapperAttrKind
  162. | CountedByAttrKind
  163. | DLLExportAttrKind
  164. | DLLExportStaticLocalAttrKind
  165. | DLLImportAttrKind
  166. | DLLImportStaticLocalAttrKind
  167. | DeprecatedAttrKind
  168. | DestructorAttrKind
  169. | DiagnoseAsBuiltinAttrKind
  170. | DiagnoseIfAttrKind
  171. | DisableSanitizerInstrumentationAttrKind
  172. | DisableTailCallsAttrKind
  173. | EmptyBasesAttrKind
  174. | EnableIfAttrKind
  175. | EnforceTCBAttrKind
  176. | EnforceTCBLeafAttrKind
  177. | EnumExtensibilityAttrKind
  178. | ErrorAttrKind
  179. | ExcludeFromExplicitInstantiationAttrKind
  180. | ExclusiveTrylockFunctionAttrKind
  181. | ExternalSourceSymbolAttrKind
  182. | FinalAttrKind
  183. | FlagEnumAttrKind
  184. | FlattenAttrKind
  185. | FormatAttrKind
  186. | FormatArgAttrKind
  187. | FunctionReturnThunksAttrKind
  188. | GNUInlineAttrKind
  189. | GuardedByAttrKind
  190. | GuardedVarAttrKind
  191. | HIPManagedAttrKind
  192. | HLSLNumThreadsAttrKind
  193. | HLSLResourceAttrKind
  194. | HLSLResourceBindingAttrKind
  195. | HLSLShaderAttrKind
  196. | HotAttrKind
  197. | IBActionAttrKind
  198. | IBOutletAttrKind
  199. | IBOutletCollectionAttrKind
  200. | InitPriorityAttrKind
  201. | InternalLinkageAttrKind
  202. | LTOVisibilityPublicAttrKind
  203. | LayoutVersionAttrKind
  204. | LeafAttrKind
  205. | LockReturnedAttrKind
  206. | LocksExcludedAttrKind
  207. | M68kInterruptAttrKind
  208. | MIGServerRoutineAttrKind
  209. | MSAllocatorAttrKind
  210. | MSConstexprAttrKind
  211. | MSInheritanceAttrKind
  212. | MSNoVTableAttrKind
  213. | MSP430InterruptAttrKind
  214. | MSStructAttrKind
  215. | MSVtorDispAttrKind
  216. | MaxFieldAlignmentAttrKind
  217. | MayAliasAttrKind
  218. | MaybeUndefAttrKind
  219. | MicroMipsAttrKind
  220. | MinSizeAttrKind
  221. | MinVectorWidthAttrKind
  222. | Mips16AttrKind
  223. | MipsInterruptAttrKind
  224. | MipsLongCallAttrKind
  225. | MipsShortCallAttrKind
  226. | NSConsumesSelfAttrKind
  227. | NSErrorDomainAttrKind
  228. | NSReturnsAutoreleasedAttrKind
  229. | NSReturnsNotRetainedAttrKind
  230. | NVPTXKernelAttrKind
  231. | NakedAttrKind
  232. | NoAliasAttrKind
  233. | NoCommonAttrKind
  234. | NoDebugAttrKind
  235. | NoDestroyAttrKind
  236. | NoDuplicateAttrKind
  237. | NoInstrumentFunctionAttrKind
  238. | NoMicroMipsAttrKind
  239. | NoMips16AttrKind
  240. | NoProfileFunctionAttrKind
  241. | NoRandomizeLayoutAttrKind
  242. | NoReturnAttrKind
  243. | NoSanitizeAttrKind
  244. | NoSpeculativeLoadHardeningAttrKind
  245. | NoSplitStackAttrKind
  246. | NoStackProtectorAttrKind
  247. | NoThreadSafetyAnalysisAttrKind
  248. | NoThrowAttrKind
  249. | NoUniqueAddressAttrKind
  250. | NoUwtableAttrKind
  251. | NotTailCalledAttrKind
  252. | OMPAllocateDeclAttrKind
  253. | OMPCaptureNoInitAttrKind
  254. | OMPDeclareTargetDeclAttrKind
  255. | OMPDeclareVariantAttrKind
  256. | OMPThreadPrivateDeclAttrKind
  257. | OSConsumesThisAttrKind
  258. | OSReturnsNotRetainedAttrKind
  259. | OSReturnsRetainedAttrKind
  260. | OSReturnsRetainedOnNonZeroAttrKind
  261. | OSReturnsRetainedOnZeroAttrKind
  262. | ObjCBridgeAttrKind
  263. | ObjCBridgeMutableAttrKind
  264. | ObjCBridgeRelatedAttrKind
  265. | ObjCExceptionAttrKind
  266. | ObjCExplicitProtocolImplAttrKind
  267. | ObjCExternallyRetainedAttrKind
  268. | ObjCIndependentClassAttrKind
  269. | ObjCMethodFamilyAttrKind
  270. | ObjCNSObjectAttrKind
  271. | ObjCPreciseLifetimeAttrKind
  272. | ObjCRequiresPropertyDefsAttrKind
  273. | ObjCRequiresSuperAttrKind
  274. | ObjCReturnsInnerPointerAttrKind
  275. | ObjCRootClassAttrKind
  276. | ObjCSubclassingRestrictedAttrKind
  277. | OpenCLIntelReqdSubGroupSizeAttrKind
  278. | OpenCLKernelAttrKind
  279. | OptimizeNoneAttrKind
  280. | OverrideAttrKind
  281. | OwnerAttrKind
  282. | OwnershipAttrKind
  283. | PackedAttrKind
  284. | ParamTypestateAttrKind
  285. | PatchableFunctionEntryAttrKind
  286. | PointerAttrKind
  287. | PragmaClangBSSSectionAttrKind
  288. | PragmaClangDataSectionAttrKind
  289. | PragmaClangRelroSectionAttrKind
  290. | PragmaClangRodataSectionAttrKind
  291. | PragmaClangTextSectionAttrKind
  292. | PreferredNameAttrKind
  293. | PreferredTypeAttrKind
  294. | PtGuardedByAttrKind
  295. | PtGuardedVarAttrKind
  296. | PureAttrKind
  297. | RISCVInterruptAttrKind
  298. | RandomizeLayoutAttrKind
  299. | ReadOnlyPlacementAttrKind
  300. | ReinitializesAttrKind
  301. | ReleaseCapabilityAttrKind
  302. | ReqdWorkGroupSizeAttrKind
  303. | RequiresCapabilityAttrKind
  304. | RestrictAttrKind
  305. | RetainAttrKind
  306. | ReturnTypestateAttrKind
  307. | ReturnsNonNullAttrKind
  308. | ReturnsTwiceAttrKind
  309. | SYCLKernelAttrKind
  310. | SYCLSpecialClassAttrKind
  311. | ScopedLockableAttrKind
  312. | SectionAttrKind
  313. | SelectAnyAttrKind
  314. | SentinelAttrKind
  315. | SetTypestateAttrKind
  316. | SharedTrylockFunctionAttrKind
  317. | SpeculativeLoadHardeningAttrKind
  318. | StandaloneDebugAttrKind
  319. | StrictFPAttrKind
  320. | StrictGuardStackCheckAttrKind
  321. | SwiftAsyncAttrKind
  322. | SwiftAsyncErrorAttrKind
  323. | SwiftAsyncNameAttrKind
  324. | SwiftAttrAttrKind
  325. | SwiftBridgeAttrKind
  326. | SwiftBridgedTypedefAttrKind
  327. | SwiftErrorAttrKind
  328. | SwiftImportAsNonGenericAttrKind
  329. | SwiftImportPropertyAsAccessorsAttrKind
  330. | SwiftNameAttrKind
  331. | SwiftNewTypeAttrKind
  332. | SwiftPrivateAttrKind
  333. | TLSModelAttrKind
  334. | TargetAttrKind
  335. | TargetClonesAttrKind
  336. | TargetVersionAttrKind
  337. | TestTypestateAttrKind
  338. | TransparentUnionAttrKind
  339. | TrivialABIAttrKind
  340. | TryAcquireCapabilityAttrKind
  341. | TypeTagForDatatypeAttrKind
  342. | TypeVisibilityAttrKind
  343. | UnavailableAttrKind
  344. | UninitializedAttrKind
  345. | UnsafeBufferUsageAttrKind
  346. | UnusedAttrKind
  347. | UsedAttrKind
  348. | UsingIfExistsAttrKind
  349. | UuidAttrKind
  350. | VecReturnAttrKind
  351. | VecTypeHintAttrKind
  352. | VisibilityAttrKind
  353. | WarnUnusedAttrKind
  354. | WarnUnusedResultAttrKind
  355. | WeakAttrKind
  356. | WeakImportAttrKind
  357. | WeakRefAttrKind
  358. | WebAssemblyExportNameAttrKind
  359. | WebAssemblyImportModuleAttrKind
  360. | WebAssemblyImportNameAttrKind
  361. | WorkGroupSizeHintAttrKind
  362. | X86ForceAlignArgPointerAttrKind
  363. | XRayInstrumentAttrKind
  364. | XRayLogArgsAttrKind
  365. | ZeroCallUsedRegsAttrKind
  366. | AbiTagAttrKind
  367. | AliasAttrKind
  368. | AlignValueAttrKind
  369. | BuiltinAliasAttrKind
  370. | CalledOnceAttrKind
  371. | IFuncAttrKind
  372. | InitSegAttrKind
  373. | LoaderUninitializedAttrKind
  374. | LoopHintAttrKind
  375. | ModeAttrKind
  376. | NoBuiltinAttrKind
  377. | NoEscapeAttrKind
  378. | OMPCaptureKindAttrKind
  379. | OMPDeclareSimdDeclAttrKind
  380. | OMPReferencedVarAttrKind
  381. | ObjCBoxableAttrKind
  382. | ObjCClassStubAttrKind
  383. | ObjCDesignatedInitializerAttrKind
  384. | ObjCDirectAttrKind
  385. | ObjCDirectMembersAttrKind
  386. | ObjCNonLazyClassAttrKind
  387. | ObjCNonRuntimeProtocolAttrKind
  388. | ObjCRuntimeNameAttrKind
  389. | ObjCRuntimeVisibleAttrKind
  390. | OpenCLAccessAttrKind
  391. | OverloadableAttrKind
  392. | RenderScriptKernelAttrKind
  393. | SwiftObjCMembersAttrKind
  394. | SwiftVersionedAdditionAttrKind
  395. | SwiftVersionedRemovalAttrKind
  396. | ThreadAttrKind
type binary_operator_kind = Clang_ast_t.binary_operator_kind
type binary_operator_info = Clang_ast_t.binary_operator_info = {
  1. boi_kind : binary_operator_kind;
}
type builtin_type_kind = Clang_ast_t.builtin_type_kind
type cast_kind = Clang_ast_t.cast_kind
type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
  1. xbs_name : string;
  2. xbs_virtual : bool;
}
type cast_expr_info = Clang_ast_t.cast_expr_info = {
  1. cei_cast_kind : cast_kind;
  2. cei_base_path : cxx_base_specifier list;
}
type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
  1. xnee_value : bool;
}
type decl_context_info = Clang_ast_t.decl_context_info = {
  1. dci_has_external_lexical_storage : bool;
  2. dci_has_external_visible_storage : bool;
}
type decl_kind = Clang_ast_t.decl_kind
type declaration_name_kind = Clang_ast_t.declaration_name_kind
type declaration_name = Clang_ast_t.declaration_name = {
  1. dn_kind : declaration_name_kind;
  2. dn_name : string;
}
type enum_decl_scope = Clang_ast_t.enum_decl_scope
type enum_decl_info = Clang_ast_t.enum_decl_info = {
  1. edi_scope : enum_decl_scope option;
  2. edi_is_module_private : bool;
}
type input_kind = Clang_ast_t.input_kind
type integer_literal_info = Clang_ast_t.integer_literal_info = {
  1. ili_is_signed : bool;
  2. ili_bitwidth : int;
  3. ili_value : string;
}
type integer_type_widths = Clang_ast_t.integer_type_widths = {
  1. itw_char_type : int;
  2. itw_short_type : int;
  3. itw_int_type : int;
  4. itw_long_type : int;
  5. itw_longlong_type : int;
}
type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
type named_decl_info = Clang_ast_t.named_decl_info = {
  1. ni_name : string;
  2. ni_qual_name : string list;
}
type obj_c_access_control = Clang_ast_t.obj_c_access_control
type obj_c_availability_check_expr_info = Clang_ast_t.obj_c_availability_check_expr_info = {
  1. oacei_version : string option;
}
type obj_c_bridge_cast_kind = Clang_ast_t.obj_c_bridge_cast_kind
type obj_c_bridged_cast_expr_info = Clang_ast_t.obj_c_bridged_cast_expr_info = {
  1. obcei_cast_kind : obj_c_bridge_cast_kind;
}
type obj_c_ivar_decl_info = Clang_ast_t.obj_c_ivar_decl_info = {
  1. ovdi_is_synthesize : bool;
  2. ovdi_access_control : obj_c_access_control;
}
type obj_c_property_control = Clang_ast_t.obj_c_property_control
type obj_c_subscript_kind = Clang_ast_t.obj_c_subscript_kind
type objc_lifetime_attr = Clang_ast_t.objc_lifetime_attr
type attr_type_info = Clang_ast_t.attr_type_info = {
  1. ati_attr_kind : attribute_kind;
  2. ati_lifetime : objc_lifetime_attr;
}
type object_kind = Clang_ast_t.object_kind
type offset_of_expr_info = Clang_ast_t.offset_of_expr_info = {
  1. ooe_literal : integer_literal_info option;
}
type pointer = Clang_ast_t.pointer
type addr_label_expr_info = Clang_ast_t.addr_label_expr_info = {
  1. alei_label : string;
  2. alei_pointer : pointer;
}
type cxx_new_expr_info = Clang_ast_t.cxx_new_expr_info = {
  1. xnei_is_array : bool;
  2. xnei_array_size_expr : pointer option;
  3. xnei_initializer_expr : pointer option;
  4. xnei_placement_args : pointer list;
}
type cxx_temporary = Clang_ast_t.cxx_temporary
type cxx_bind_temporary_expr_info = Clang_ast_t.cxx_bind_temporary_expr_info = {
  1. xbtei_cxx_temporary : cxx_temporary;
}
type goto_stmt_info = Clang_ast_t.goto_stmt_info = {
  1. gsi_label : string;
  2. gsi_pointer : pointer;
}
type obj_c_array_literal_expr_info = Clang_ast_t.obj_c_array_literal_expr_info = {
  1. oalei_array_method : pointer option;
}
type obj_c_dictionary_literal_expr_info = @@ -208,107 +208,107 @@ * stmt list * expr_info * binary_operator_info - * compound_assign_operator_info
  • | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
  • | AsTypeExpr of stmt_info * stmt list * expr_info
  • | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
  • | ArraySubscriptExpr of stmt_info * stmt list * expr_info
  • | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
  • | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
  • | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
  • | ConditionalOperator of stmt_info * stmt list * expr_info
  • | BinaryConditionalOperator of stmt_info * stmt list * expr_info
  • | AttributedStmt of stmt_info * stmt list * attribute list
  • | SwitchStmt of stmt_info * stmt list * switch_stmt_info
  • | DefaultStmt of stmt_info * stmt list
  • | CaseStmt of stmt_info * stmt list
  • | SEHTryStmt of stmt_info * stmt list
  • | SEHLeaveStmt of stmt_info * stmt list
  • | SEHFinallyStmt of stmt_info * stmt list
  • | SEHExceptStmt of stmt_info * stmt list
  • | ReturnStmt of stmt_info * stmt list
  • | ObjCForCollectionStmt of stmt_info * stmt list
  • | ObjCAutoreleasePoolStmt of stmt_info * stmt list
  • | ObjCAtTryStmt of stmt_info * stmt list
  • | ObjCAtThrowStmt of stmt_info * stmt list
  • | ObjCAtSynchronizedStmt of stmt_info * stmt list
  • | ObjCAtFinallyStmt of stmt_info * stmt list
  • | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
  • | OMPTeamsDirective of stmt_info * stmt list
  • | OMPTaskyieldDirective of stmt_info * stmt list
  • | OMPTaskwaitDirective of stmt_info * stmt list
  • | OMPTaskgroupDirective of stmt_info * stmt list
  • | OMPTaskDirective of stmt_info * stmt list
  • | OMPTargetUpdateDirective of stmt_info * stmt list
  • | OMPTargetTeamsDirective of stmt_info * stmt list
  • | OMPTargetParallelForDirective of stmt_info * stmt list
  • | OMPTargetParallelDirective of stmt_info * stmt list
  • | OMPTargetExitDataDirective of stmt_info * stmt list
  • | OMPTargetEnterDataDirective of stmt_info * stmt list
  • | OMPTargetDirective of stmt_info * stmt list
  • | OMPTargetDataDirective of stmt_info * stmt list
  • | OMPSingleDirective of stmt_info * stmt list
  • | OMPSectionsDirective of stmt_info * stmt list
  • | OMPSectionDirective of stmt_info * stmt list
  • | OMPScopeDirective of stmt_info * stmt list
  • | OMPScanDirective of stmt_info * stmt list
  • | OMPParallelSectionsDirective of stmt_info * stmt list
  • | OMPParallelMasterDirective of stmt_info * stmt list
  • | OMPParallelMaskedDirective of stmt_info * stmt list
  • | OMPParallelDirective of stmt_info * stmt list
  • | OMPOrderedDirective of stmt_info * stmt list
  • | OMPMetaDirective of stmt_info * stmt list
  • | OMPMasterDirective of stmt_info * stmt list
  • | OMPMaskedDirective of stmt_info * stmt list
  • | OMPUnrollDirective of stmt_info * stmt list
  • | OMPTileDirective of stmt_info * stmt list
  • | OMPTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPTaskLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTargetSimdDirective of stmt_info * stmt list
  • | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetParallelForSimdDirective of stmt_info * stmt list
  • | OMPSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPParallelForSimdDirective of stmt_info * stmt list
  • | OMPParallelForDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPGenericLoopDirective of stmt_info * stmt list
  • | OMPForSimdDirective of stmt_info * stmt list
  • | OMPForDirective of stmt_info * stmt list
  • | OMPDistributeSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForDirective of stmt_info * stmt list
  • | OMPDistributeDirective of stmt_info * stmt list
  • | OMPInteropDirective of stmt_info * stmt list
  • | OMPFlushDirective of stmt_info * stmt list
  • | OMPErrorDirective of stmt_info * stmt list
  • | OMPDispatchDirective of stmt_info * stmt list
  • | OMPDepobjDirective of stmt_info * stmt list
  • | OMPCriticalDirective of stmt_info * stmt list
  • | OMPCancellationPointDirective of stmt_info * stmt list
  • | OMPCancelDirective of stmt_info * stmt list
  • | OMPBarrierDirective of stmt_info * stmt list
  • | OMPAtomicDirective of stmt_info * stmt list
  • | OMPCanonicalLoop of stmt_info * stmt list
  • | NullStmt of stmt_info * stmt list
  • | MSDependentExistsStmt of stmt_info * stmt list
  • | IndirectGotoStmt of stmt_info * stmt list
  • | IfStmt of stmt_info * stmt list * if_stmt_info
  • | GotoStmt of stmt_info * stmt list * goto_stmt_info
  • | ForStmt of stmt_info * stmt list
  • | DoStmt of stmt_info * stmt list
  • | DeclStmt of stmt_info * stmt list * decl list
  • | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
  • | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
  • | ContinueStmt of stmt_info * stmt list
  • | CompoundStmt of stmt_info * stmt list
  • | CapturedStmt of stmt_info * stmt list
  • | CXXTryStmt of stmt_info * stmt list
  • | CXXForRangeStmt of stmt_info * stmt list
  • | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
  • | BreakStmt of stmt_info * stmt list
  • | MSAsmStmt of stmt_info * stmt list
  • | GCCAsmStmt of stmt_info * stmt list
  • and switch_stmt_info = Clang_ast_t.switch_stmt_info = {
    1. ssi_init : pointer option;
    2. ssi_cond_var : stmt option;
    3. ssi_cond : pointer;
    4. ssi_body : pointer;
    5. ssi_is_all_enum_cases_covered : bool;
    }
    and template_decl_info = Clang_ast_t.template_decl_info = {
    1. tdi_specializations : decl list;
    }
    and var_decl_info = Clang_ast_t.var_decl_info = {
    1. vdi_is_global : bool;
    2. vdi_is_extern : bool;
    3. vdi_is_static : bool;
    4. vdi_is_static_local : bool;
    5. vdi_is_static_data_member : bool;
    6. vdi_is_constexpr : bool;
    7. vdi_is_init_ice : bool;
    8. vdi_init_expr : stmt option;
    9. vdi_is_init_expr_cxx11_constant : bool;
    10. vdi_parm_index_in_function : int option;
    }
    type lookup = Clang_ast_t.lookup = {
    1. lup_decl_name : string;
    2. lup_decl_refs : decl_ref list;
    }
    type lookups = Clang_ast_t.lookups = {
    1. lups_decl_ref : decl_ref;
    2. lups_primary_context_pointer : pointer option;
    3. lups_lookups : lookup list;
    4. lups_has_undeserialized_decls : bool;
    }
    val access_specifier_tag : Bi_io.node_tag

    Tag used by the writers for type access_specifier. Readers may support more than just this tag.

    val write_untagged_access_specifier : Bi_outbuf.t -> access_specifier -> unit

    Output an untagged biniou value of type access_specifier.

    val write_access_specifier : Bi_outbuf.t -> access_specifier -> unit

    Output a biniou value of type access_specifier.

    val string_of_access_specifier : ?len:int -> access_specifier -> string

    Serialize a value of type access_specifier into a biniou string.

    val get_access_specifier_reader : + * compound_assign_operator_info
  • | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
  • | AsTypeExpr of stmt_info * stmt list * expr_info
  • | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
  • | ArraySubscriptExpr of stmt_info * stmt list * expr_info
  • | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
  • | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
  • | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
  • | ConditionalOperator of stmt_info * stmt list * expr_info
  • | BinaryConditionalOperator of stmt_info * stmt list * expr_info
  • | AttributedStmt of stmt_info * stmt list * attribute list
  • | SwitchStmt of stmt_info * stmt list * switch_stmt_info
  • | DefaultStmt of stmt_info * stmt list
  • | CaseStmt of stmt_info * stmt list
  • | SEHTryStmt of stmt_info * stmt list
  • | SEHLeaveStmt of stmt_info * stmt list
  • | SEHFinallyStmt of stmt_info * stmt list
  • | SEHExceptStmt of stmt_info * stmt list
  • | ReturnStmt of stmt_info * stmt list
  • | ObjCForCollectionStmt of stmt_info * stmt list
  • | ObjCAutoreleasePoolStmt of stmt_info * stmt list
  • | ObjCAtTryStmt of stmt_info * stmt list
  • | ObjCAtThrowStmt of stmt_info * stmt list
  • | ObjCAtSynchronizedStmt of stmt_info * stmt list
  • | ObjCAtFinallyStmt of stmt_info * stmt list
  • | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
  • | OMPTeamsDirective of stmt_info * stmt list
  • | OMPTaskyieldDirective of stmt_info * stmt list
  • | OMPTaskwaitDirective of stmt_info * stmt list
  • | OMPTaskgroupDirective of stmt_info * stmt list
  • | OMPTaskDirective of stmt_info * stmt list
  • | OMPTargetUpdateDirective of stmt_info * stmt list
  • | OMPTargetTeamsDirective of stmt_info * stmt list
  • | OMPTargetParallelForDirective of stmt_info * stmt list
  • | OMPTargetParallelDirective of stmt_info * stmt list
  • | OMPTargetExitDataDirective of stmt_info * stmt list
  • | OMPTargetEnterDataDirective of stmt_info * stmt list
  • | OMPTargetDirective of stmt_info * stmt list
  • | OMPTargetDataDirective of stmt_info * stmt list
  • | OMPSingleDirective of stmt_info * stmt list
  • | OMPSectionsDirective of stmt_info * stmt list
  • | OMPSectionDirective of stmt_info * stmt list
  • | OMPScopeDirective of stmt_info * stmt list
  • | OMPScanDirective of stmt_info * stmt list
  • | OMPParallelSectionsDirective of stmt_info * stmt list
  • | OMPParallelMasterDirective of stmt_info * stmt list
  • | OMPParallelMaskedDirective of stmt_info * stmt list
  • | OMPParallelDirective of stmt_info * stmt list
  • | OMPOrderedDirective of stmt_info * stmt list
  • | OMPMetaDirective of stmt_info * stmt list
  • | OMPMasterDirective of stmt_info * stmt list
  • | OMPMaskedDirective of stmt_info * stmt list
  • | OMPUnrollDirective of stmt_info * stmt list
  • | OMPTileDirective of stmt_info * stmt list
  • | OMPTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPTaskLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTargetSimdDirective of stmt_info * stmt list
  • | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetParallelForSimdDirective of stmt_info * stmt list
  • | OMPSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPParallelForSimdDirective of stmt_info * stmt list
  • | OMPParallelForDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPGenericLoopDirective of stmt_info * stmt list
  • | OMPForSimdDirective of stmt_info * stmt list
  • | OMPForDirective of stmt_info * stmt list
  • | OMPDistributeSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForDirective of stmt_info * stmt list
  • | OMPDistributeDirective of stmt_info * stmt list
  • | OMPInteropDirective of stmt_info * stmt list
  • | OMPFlushDirective of stmt_info * stmt list
  • | OMPErrorDirective of stmt_info * stmt list
  • | OMPDispatchDirective of stmt_info * stmt list
  • | OMPDepobjDirective of stmt_info * stmt list
  • | OMPCriticalDirective of stmt_info * stmt list
  • | OMPCancellationPointDirective of stmt_info * stmt list
  • | OMPCancelDirective of stmt_info * stmt list
  • | OMPBarrierDirective of stmt_info * stmt list
  • | OMPAtomicDirective of stmt_info * stmt list
  • | OMPCanonicalLoop of stmt_info * stmt list
  • | NullStmt of stmt_info * stmt list
  • | MSDependentExistsStmt of stmt_info * stmt list
  • | IndirectGotoStmt of stmt_info * stmt list
  • | IfStmt of stmt_info * stmt list * if_stmt_info
  • | GotoStmt of stmt_info * stmt list * goto_stmt_info
  • | ForStmt of stmt_info * stmt list
  • | DoStmt of stmt_info * stmt list
  • | DeclStmt of stmt_info * stmt list * decl list
  • | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
  • | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
  • | ContinueStmt of stmt_info * stmt list
  • | CompoundStmt of stmt_info * stmt list
  • | CapturedStmt of stmt_info * stmt list
  • | CXXTryStmt of stmt_info * stmt list
  • | CXXForRangeStmt of stmt_info * stmt list
  • | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
  • | BreakStmt of stmt_info * stmt list
  • | MSAsmStmt of stmt_info * stmt list
  • | GCCAsmStmt of stmt_info * stmt list
  • and switch_stmt_info = Clang_ast_t.switch_stmt_info = {
    1. ssi_init : pointer option;
    2. ssi_cond_var : stmt option;
    3. ssi_cond : pointer;
    4. ssi_body : pointer;
    5. ssi_is_all_enum_cases_covered : bool;
    }
    and template_decl_info = Clang_ast_t.template_decl_info = {
    1. tdi_specializations : decl list;
    }
    and var_decl_info = Clang_ast_t.var_decl_info = {
    1. vdi_is_global : bool;
    2. vdi_is_extern : bool;
    3. vdi_is_static : bool;
    4. vdi_is_static_local : bool;
    5. vdi_is_static_data_member : bool;
    6. vdi_is_constexpr : bool;
    7. vdi_is_init_ice : bool;
    8. vdi_init_expr : stmt option;
    9. vdi_is_init_expr_cxx11_constant : bool;
    10. vdi_parm_index_in_function : int option;
    }
    type lookup = Clang_ast_t.lookup = {
    1. lup_decl_name : string;
    2. lup_decl_refs : decl_ref list;
    }
    type lookups = Clang_ast_t.lookups = {
    1. lups_decl_ref : decl_ref;
    2. lups_primary_context_pointer : pointer option;
    3. lups_lookups : lookup list;
    4. lups_has_undeserialized_decls : bool;
    }
    val access_specifier_tag : Bi_io.node_tag

    Tag used by the writers for type access_specifier. Readers may support more than just this tag.

    val write_untagged_access_specifier : Bi_outbuf.t -> access_specifier -> unit

    Output an untagged biniou value of type access_specifier.

    val write_access_specifier : Bi_outbuf.t -> access_specifier -> unit

    Output a biniou value of type access_specifier.

    val string_of_access_specifier : ?len:int -> access_specifier -> string

    Serialize a value of type access_specifier into a biniou string.

    val get_access_specifier_reader : Bi_io.node_tag -> Bi_inbuf.t -> - access_specifier

    Return a function that reads an untagged biniou value of type access_specifier.

    val read_access_specifier : Bi_inbuf.t -> access_specifier

    Input a tagged biniou value of type access_specifier.

    val access_specifier_of_string : ?pos:int -> string -> access_specifier

    Deserialize a biniou value of type access_specifier.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val atomic_expr_kind_tag : Bi_io.node_tag

    Tag used by the writers for type atomic_expr_kind. Readers may support more than just this tag.

    val write_untagged_atomic_expr_kind : Bi_outbuf.t -> atomic_expr_kind -> unit

    Output an untagged biniou value of type atomic_expr_kind.

    val write_atomic_expr_kind : Bi_outbuf.t -> atomic_expr_kind -> unit

    Output a biniou value of type atomic_expr_kind.

    val string_of_atomic_expr_kind : ?len:int -> atomic_expr_kind -> string

    Serialize a value of type atomic_expr_kind into a biniou string.

    val get_atomic_expr_kind_reader : + access_specifier

    Return a function that reads an untagged biniou value of type access_specifier.

    val read_access_specifier : Bi_inbuf.t -> access_specifier

    Input a tagged biniou value of type access_specifier.

    val access_specifier_of_string : ?pos:int -> string -> access_specifier

    Deserialize a biniou value of type access_specifier.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val atomic_expr_kind_tag : Bi_io.node_tag

    Tag used by the writers for type atomic_expr_kind. Readers may support more than just this tag.

    val write_untagged_atomic_expr_kind : Bi_outbuf.t -> atomic_expr_kind -> unit

    Output an untagged biniou value of type atomic_expr_kind.

    val write_atomic_expr_kind : Bi_outbuf.t -> atomic_expr_kind -> unit

    Output a biniou value of type atomic_expr_kind.

    val string_of_atomic_expr_kind : ?len:int -> atomic_expr_kind -> string

    Serialize a value of type atomic_expr_kind into a biniou string.

    val get_atomic_expr_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - atomic_expr_kind

    Return a function that reads an untagged biniou value of type atomic_expr_kind.

    val read_atomic_expr_kind : Bi_inbuf.t -> atomic_expr_kind

    Input a tagged biniou value of type atomic_expr_kind.

    val atomic_expr_kind_of_string : ?pos:int -> string -> atomic_expr_kind

    Deserialize a biniou value of type atomic_expr_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val atomic_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type atomic_expr_info. Readers may support more than just this tag.

    val write_untagged_atomic_expr_info : Bi_outbuf.t -> atomic_expr_info -> unit

    Output an untagged biniou value of type atomic_expr_info.

    val write_atomic_expr_info : Bi_outbuf.t -> atomic_expr_info -> unit

    Output a biniou value of type atomic_expr_info.

    val string_of_atomic_expr_info : ?len:int -> atomic_expr_info -> string

    Serialize a value of type atomic_expr_info into a biniou string.

    val get_atomic_expr_info_reader : + atomic_expr_kind

    Return a function that reads an untagged biniou value of type atomic_expr_kind.

    val read_atomic_expr_kind : Bi_inbuf.t -> atomic_expr_kind

    Input a tagged biniou value of type atomic_expr_kind.

    val atomic_expr_kind_of_string : ?pos:int -> string -> atomic_expr_kind

    Deserialize a biniou value of type atomic_expr_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val atomic_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type atomic_expr_info. Readers may support more than just this tag.

    val write_untagged_atomic_expr_info : Bi_outbuf.t -> atomic_expr_info -> unit

    Output an untagged biniou value of type atomic_expr_info.

    val write_atomic_expr_info : Bi_outbuf.t -> atomic_expr_info -> unit

    Output a biniou value of type atomic_expr_info.

    val string_of_atomic_expr_info : ?len:int -> atomic_expr_info -> string

    Serialize a value of type atomic_expr_info into a biniou string.

    val get_atomic_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - atomic_expr_info

    Return a function that reads an untagged biniou value of type atomic_expr_info.

    val read_atomic_expr_info : Bi_inbuf.t -> atomic_expr_info

    Input a tagged biniou value of type atomic_expr_info.

    val atomic_expr_info_of_string : ?pos:int -> string -> atomic_expr_info

    Deserialize a biniou value of type atomic_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_kind_tag : Bi_io.node_tag

    Tag used by the writers for type attribute_kind. Readers may support more than just this tag.

    val write_untagged_attribute_kind : Bi_outbuf.t -> attribute_kind -> unit

    Output an untagged biniou value of type attribute_kind.

    val write_attribute_kind : Bi_outbuf.t -> attribute_kind -> unit

    Output a biniou value of type attribute_kind.

    val string_of_attribute_kind : ?len:int -> attribute_kind -> string

    Serialize a value of type attribute_kind into a biniou string.

    val get_attribute_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute_kind

    Return a function that reads an untagged biniou value of type attribute_kind.

    val read_attribute_kind : Bi_inbuf.t -> attribute_kind

    Input a tagged biniou value of type attribute_kind.

    val attribute_kind_of_string : ?pos:int -> string -> attribute_kind

    Deserialize a biniou value of type attribute_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val binary_operator_kind_tag : Bi_io.node_tag

    Tag used by the writers for type binary_operator_kind. Readers may support more than just this tag.

    val write_untagged_binary_operator_kind : + atomic_expr_info

    Return a function that reads an untagged biniou value of type atomic_expr_info.

    val read_atomic_expr_info : Bi_inbuf.t -> atomic_expr_info

    Input a tagged biniou value of type atomic_expr_info.

    val atomic_expr_info_of_string : ?pos:int -> string -> atomic_expr_info

    Deserialize a biniou value of type atomic_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_kind_tag : Bi_io.node_tag

    Tag used by the writers for type attribute_kind. Readers may support more than just this tag.

    val write_untagged_attribute_kind : Bi_outbuf.t -> attribute_kind -> unit

    Output an untagged biniou value of type attribute_kind.

    val write_attribute_kind : Bi_outbuf.t -> attribute_kind -> unit

    Output a biniou value of type attribute_kind.

    val string_of_attribute_kind : ?len:int -> attribute_kind -> string

    Serialize a value of type attribute_kind into a biniou string.

    val get_attribute_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute_kind

    Return a function that reads an untagged biniou value of type attribute_kind.

    val read_attribute_kind : Bi_inbuf.t -> attribute_kind

    Input a tagged biniou value of type attribute_kind.

    val attribute_kind_of_string : ?pos:int -> string -> attribute_kind

    Deserialize a biniou value of type attribute_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val binary_operator_kind_tag : Bi_io.node_tag

    Tag used by the writers for type binary_operator_kind. Readers may support more than just this tag.

    val write_untagged_binary_operator_kind : Bi_outbuf.t -> binary_operator_kind -> - unit

    Output an untagged biniou value of type binary_operator_kind.

    val write_binary_operator_kind : Bi_outbuf.t -> binary_operator_kind -> unit

    Output a biniou value of type binary_operator_kind.

    val string_of_binary_operator_kind : ?len:int -> binary_operator_kind -> string

    Serialize a value of type binary_operator_kind into a biniou string.

    val get_binary_operator_kind_reader : + unit

    Output an untagged biniou value of type binary_operator_kind.

    val write_binary_operator_kind : Bi_outbuf.t -> binary_operator_kind -> unit

    Output a biniou value of type binary_operator_kind.

    val string_of_binary_operator_kind : ?len:int -> binary_operator_kind -> string

    Serialize a value of type binary_operator_kind into a biniou string.

    val get_binary_operator_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - binary_operator_kind

    Return a function that reads an untagged biniou value of type binary_operator_kind.

    val read_binary_operator_kind : Bi_inbuf.t -> binary_operator_kind

    Input a tagged biniou value of type binary_operator_kind.

    val binary_operator_kind_of_string : ?pos:int -> string -> binary_operator_kind

    Deserialize a biniou value of type binary_operator_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val binary_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type binary_operator_info. Readers may support more than just this tag.

    val write_untagged_binary_operator_info : + binary_operator_kind

    Return a function that reads an untagged biniou value of type binary_operator_kind.

    val read_binary_operator_kind : Bi_inbuf.t -> binary_operator_kind

    Input a tagged biniou value of type binary_operator_kind.

    val binary_operator_kind_of_string : ?pos:int -> string -> binary_operator_kind

    Deserialize a biniou value of type binary_operator_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val binary_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type binary_operator_info. Readers may support more than just this tag.

    val write_untagged_binary_operator_info : Bi_outbuf.t -> binary_operator_info -> - unit

    Output an untagged biniou value of type binary_operator_info.

    val write_binary_operator_info : Bi_outbuf.t -> binary_operator_info -> unit

    Output a biniou value of type binary_operator_info.

    val string_of_binary_operator_info : ?len:int -> binary_operator_info -> string

    Serialize a value of type binary_operator_info into a biniou string.

    val get_binary_operator_info_reader : + unit

    Output an untagged biniou value of type binary_operator_info.

    val write_binary_operator_info : Bi_outbuf.t -> binary_operator_info -> unit

    Output a biniou value of type binary_operator_info.

    val string_of_binary_operator_info : ?len:int -> binary_operator_info -> string

    Serialize a value of type binary_operator_info into a biniou string.

    val get_binary_operator_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - binary_operator_info

    Return a function that reads an untagged biniou value of type binary_operator_info.

    val read_binary_operator_info : Bi_inbuf.t -> binary_operator_info

    Input a tagged biniou value of type binary_operator_info.

    val binary_operator_info_of_string : ?pos:int -> string -> binary_operator_info

    Deserialize a biniou value of type binary_operator_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val builtin_type_kind_tag : Bi_io.node_tag

    Tag used by the writers for type builtin_type_kind. Readers may support more than just this tag.

    val write_untagged_builtin_type_kind : Bi_outbuf.t -> builtin_type_kind -> unit

    Output an untagged biniou value of type builtin_type_kind.

    val write_builtin_type_kind : Bi_outbuf.t -> builtin_type_kind -> unit

    Output a biniou value of type builtin_type_kind.

    val string_of_builtin_type_kind : ?len:int -> builtin_type_kind -> string

    Serialize a value of type builtin_type_kind into a biniou string.

    val get_builtin_type_kind_reader : + binary_operator_info

    Return a function that reads an untagged biniou value of type binary_operator_info.

    val read_binary_operator_info : Bi_inbuf.t -> binary_operator_info

    Input a tagged biniou value of type binary_operator_info.

    val binary_operator_info_of_string : ?pos:int -> string -> binary_operator_info

    Deserialize a biniou value of type binary_operator_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val builtin_type_kind_tag : Bi_io.node_tag

    Tag used by the writers for type builtin_type_kind. Readers may support more than just this tag.

    val write_untagged_builtin_type_kind : Bi_outbuf.t -> builtin_type_kind -> unit

    Output an untagged biniou value of type builtin_type_kind.

    val write_builtin_type_kind : Bi_outbuf.t -> builtin_type_kind -> unit

    Output a biniou value of type builtin_type_kind.

    val string_of_builtin_type_kind : ?len:int -> builtin_type_kind -> string

    Serialize a value of type builtin_type_kind into a biniou string.

    val get_builtin_type_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - builtin_type_kind

    Return a function that reads an untagged biniou value of type builtin_type_kind.

    val read_builtin_type_kind : Bi_inbuf.t -> builtin_type_kind

    Input a tagged biniou value of type builtin_type_kind.

    val builtin_type_kind_of_string : ?pos:int -> string -> builtin_type_kind

    Deserialize a biniou value of type builtin_type_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cast_kind_tag : Bi_io.node_tag

    Tag used by the writers for type cast_kind. Readers may support more than just this tag.

    val write_untagged_cast_kind : Bi_outbuf.t -> cast_kind -> unit

    Output an untagged biniou value of type cast_kind.

    val write_cast_kind : Bi_outbuf.t -> cast_kind -> unit

    Output a biniou value of type cast_kind.

    val string_of_cast_kind : ?len:int -> cast_kind -> string

    Serialize a value of type cast_kind into a biniou string.

    val get_cast_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> cast_kind

    Return a function that reads an untagged biniou value of type cast_kind.

    val read_cast_kind : Bi_inbuf.t -> cast_kind

    Input a tagged biniou value of type cast_kind.

    val cast_kind_of_string : ?pos:int -> string -> cast_kind

    Deserialize a biniou value of type cast_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_base_specifier_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_base_specifier. Readers may support more than just this tag.

    val write_untagged_cxx_base_specifier : + builtin_type_kind

    Return a function that reads an untagged biniou value of type builtin_type_kind.

    val read_builtin_type_kind : Bi_inbuf.t -> builtin_type_kind

    Input a tagged biniou value of type builtin_type_kind.

    val builtin_type_kind_of_string : ?pos:int -> string -> builtin_type_kind

    Deserialize a biniou value of type builtin_type_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cast_kind_tag : Bi_io.node_tag

    Tag used by the writers for type cast_kind. Readers may support more than just this tag.

    val write_untagged_cast_kind : Bi_outbuf.t -> cast_kind -> unit

    Output an untagged biniou value of type cast_kind.

    val write_cast_kind : Bi_outbuf.t -> cast_kind -> unit

    Output a biniou value of type cast_kind.

    val string_of_cast_kind : ?len:int -> cast_kind -> string

    Serialize a value of type cast_kind into a biniou string.

    val get_cast_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> cast_kind

    Return a function that reads an untagged biniou value of type cast_kind.

    val read_cast_kind : Bi_inbuf.t -> cast_kind

    Input a tagged biniou value of type cast_kind.

    val cast_kind_of_string : ?pos:int -> string -> cast_kind

    Deserialize a biniou value of type cast_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_base_specifier_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_base_specifier. Readers may support more than just this tag.

    val write_untagged_cxx_base_specifier : Bi_outbuf.t -> cxx_base_specifier -> - unit

    Output an untagged biniou value of type cxx_base_specifier.

    val write_cxx_base_specifier : Bi_outbuf.t -> cxx_base_specifier -> unit

    Output a biniou value of type cxx_base_specifier.

    val string_of_cxx_base_specifier : ?len:int -> cxx_base_specifier -> string

    Serialize a value of type cxx_base_specifier into a biniou string.

    val get_cxx_base_specifier_reader : + unit

    Output an untagged biniou value of type cxx_base_specifier.

    val write_cxx_base_specifier : Bi_outbuf.t -> cxx_base_specifier -> unit

    Output a biniou value of type cxx_base_specifier.

    val string_of_cxx_base_specifier : ?len:int -> cxx_base_specifier -> string

    Serialize a value of type cxx_base_specifier into a biniou string.

    val get_cxx_base_specifier_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_base_specifier

    Return a function that reads an untagged biniou value of type cxx_base_specifier.

    val read_cxx_base_specifier : Bi_inbuf.t -> cxx_base_specifier

    Input a tagged biniou value of type cxx_base_specifier.

    val cxx_base_specifier_of_string : ?pos:int -> string -> cxx_base_specifier

    Deserialize a biniou value of type cxx_base_specifier.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cast_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cast_expr_info. Readers may support more than just this tag.

    val write_untagged_cast_expr_info : Bi_outbuf.t -> cast_expr_info -> unit

    Output an untagged biniou value of type cast_expr_info.

    val write_cast_expr_info : Bi_outbuf.t -> cast_expr_info -> unit

    Output a biniou value of type cast_expr_info.

    val string_of_cast_expr_info : ?len:int -> cast_expr_info -> string

    Serialize a value of type cast_expr_info into a biniou string.

    val get_cast_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> cast_expr_info

    Return a function that reads an untagged biniou value of type cast_expr_info.

    val read_cast_expr_info : Bi_inbuf.t -> cast_expr_info

    Input a tagged biniou value of type cast_expr_info.

    val cast_expr_info_of_string : ?pos:int -> string -> cast_expr_info

    Deserialize a biniou value of type cast_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_noexcept_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_noexcept_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_noexcept_expr_info : + cxx_base_specifier

    Return a function that reads an untagged biniou value of type cxx_base_specifier.

    val read_cxx_base_specifier : Bi_inbuf.t -> cxx_base_specifier

    Input a tagged biniou value of type cxx_base_specifier.

    val cxx_base_specifier_of_string : ?pos:int -> string -> cxx_base_specifier

    Deserialize a biniou value of type cxx_base_specifier.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cast_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cast_expr_info. Readers may support more than just this tag.

    val write_untagged_cast_expr_info : Bi_outbuf.t -> cast_expr_info -> unit

    Output an untagged biniou value of type cast_expr_info.

    val write_cast_expr_info : Bi_outbuf.t -> cast_expr_info -> unit

    Output a biniou value of type cast_expr_info.

    val string_of_cast_expr_info : ?len:int -> cast_expr_info -> string

    Serialize a value of type cast_expr_info into a biniou string.

    val get_cast_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> cast_expr_info

    Return a function that reads an untagged biniou value of type cast_expr_info.

    val read_cast_expr_info : Bi_inbuf.t -> cast_expr_info

    Input a tagged biniou value of type cast_expr_info.

    val cast_expr_info_of_string : ?pos:int -> string -> cast_expr_info

    Deserialize a biniou value of type cast_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_noexcept_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_noexcept_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_noexcept_expr_info : Bi_outbuf.t -> cxx_noexcept_expr_info -> unit

    Output an untagged biniou value of type cxx_noexcept_expr_info.

    val write_cxx_noexcept_expr_info : Bi_outbuf.t -> cxx_noexcept_expr_info -> unit

    Output a biniou value of type cxx_noexcept_expr_info.

    val string_of_cxx_noexcept_expr_info : - ?len:int -> + ?len:int -> cxx_noexcept_expr_info -> string

    Serialize a value of type cxx_noexcept_expr_info into a biniou string.

    val get_cxx_noexcept_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> cxx_noexcept_expr_info

    Return a function that reads an untagged biniou value of type cxx_noexcept_expr_info.

    val read_cxx_noexcept_expr_info : Bi_inbuf.t -> cxx_noexcept_expr_info

    Input a tagged biniou value of type cxx_noexcept_expr_info.

    val cxx_noexcept_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - cxx_noexcept_expr_info

    Deserialize a biniou value of type cxx_noexcept_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_context_info_tag : Bi_io.node_tag

    Tag used by the writers for type decl_context_info. Readers may support more than just this tag.

    val write_untagged_decl_context_info : Bi_outbuf.t -> decl_context_info -> unit

    Output an untagged biniou value of type decl_context_info.

    val write_decl_context_info : Bi_outbuf.t -> decl_context_info -> unit

    Output a biniou value of type decl_context_info.

    val string_of_decl_context_info : ?len:int -> decl_context_info -> string

    Serialize a value of type decl_context_info into a biniou string.

    val get_decl_context_info_reader : + cxx_noexcept_expr_info

    Deserialize a biniou value of type cxx_noexcept_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_context_info_tag : Bi_io.node_tag

    Tag used by the writers for type decl_context_info. Readers may support more than just this tag.

    val write_untagged_decl_context_info : Bi_outbuf.t -> decl_context_info -> unit

    Output an untagged biniou value of type decl_context_info.

    val write_decl_context_info : Bi_outbuf.t -> decl_context_info -> unit

    Output a biniou value of type decl_context_info.

    val string_of_decl_context_info : ?len:int -> decl_context_info -> string

    Serialize a value of type decl_context_info into a biniou string.

    val get_decl_context_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - decl_context_info

    Return a function that reads an untagged biniou value of type decl_context_info.

    val read_decl_context_info : Bi_inbuf.t -> decl_context_info

    Input a tagged biniou value of type decl_context_info.

    val decl_context_info_of_string : ?pos:int -> string -> decl_context_info

    Deserialize a biniou value of type decl_context_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_kind_tag : Bi_io.node_tag

    Tag used by the writers for type decl_kind. Readers may support more than just this tag.

    val write_untagged_decl_kind : Bi_outbuf.t -> decl_kind -> unit

    Output an untagged biniou value of type decl_kind.

    val write_decl_kind : Bi_outbuf.t -> decl_kind -> unit

    Output a biniou value of type decl_kind.

    val string_of_decl_kind : ?len:int -> decl_kind -> string

    Serialize a value of type decl_kind into a biniou string.

    val get_decl_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_kind

    Return a function that reads an untagged biniou value of type decl_kind.

    val read_decl_kind : Bi_inbuf.t -> decl_kind

    Input a tagged biniou value of type decl_kind.

    val decl_kind_of_string : ?pos:int -> string -> decl_kind

    Deserialize a biniou value of type decl_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val declaration_name_kind_tag : Bi_io.node_tag

    Tag used by the writers for type declaration_name_kind. Readers may support more than just this tag.

    val write_untagged_declaration_name_kind : + decl_context_info

    Return a function that reads an untagged biniou value of type decl_context_info.

    val read_decl_context_info : Bi_inbuf.t -> decl_context_info

    Input a tagged biniou value of type decl_context_info.

    val decl_context_info_of_string : ?pos:int -> string -> decl_context_info

    Deserialize a biniou value of type decl_context_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_kind_tag : Bi_io.node_tag

    Tag used by the writers for type decl_kind. Readers may support more than just this tag.

    val write_untagged_decl_kind : Bi_outbuf.t -> decl_kind -> unit

    Output an untagged biniou value of type decl_kind.

    val write_decl_kind : Bi_outbuf.t -> decl_kind -> unit

    Output a biniou value of type decl_kind.

    val string_of_decl_kind : ?len:int -> decl_kind -> string

    Serialize a value of type decl_kind into a biniou string.

    val get_decl_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_kind

    Return a function that reads an untagged biniou value of type decl_kind.

    val read_decl_kind : Bi_inbuf.t -> decl_kind

    Input a tagged biniou value of type decl_kind.

    val decl_kind_of_string : ?pos:int -> string -> decl_kind

    Deserialize a biniou value of type decl_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val declaration_name_kind_tag : Bi_io.node_tag

    Tag used by the writers for type declaration_name_kind. Readers may support more than just this tag.

    val write_untagged_declaration_name_kind : Bi_outbuf.t -> declaration_name_kind -> unit

    Output an untagged biniou value of type declaration_name_kind.

    val write_declaration_name_kind : Bi_outbuf.t -> declaration_name_kind -> unit

    Output a biniou value of type declaration_name_kind.

    val string_of_declaration_name_kind : - ?len:int -> + ?len:int -> declaration_name_kind -> string

    Serialize a value of type declaration_name_kind into a biniou string.

    val get_declaration_name_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> declaration_name_kind

    Return a function that reads an untagged biniou value of type declaration_name_kind.

    val read_declaration_name_kind : Bi_inbuf.t -> declaration_name_kind

    Input a tagged biniou value of type declaration_name_kind.

    val declaration_name_kind_of_string : - ?pos:int -> + ?pos:int -> string -> - declaration_name_kind

    Deserialize a biniou value of type declaration_name_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val declaration_name_tag : Bi_io.node_tag

    Tag used by the writers for type declaration_name. Readers may support more than just this tag.

    val write_untagged_declaration_name : Bi_outbuf.t -> declaration_name -> unit

    Output an untagged biniou value of type declaration_name.

    val write_declaration_name : Bi_outbuf.t -> declaration_name -> unit

    Output a biniou value of type declaration_name.

    val string_of_declaration_name : ?len:int -> declaration_name -> string

    Serialize a value of type declaration_name into a biniou string.

    val get_declaration_name_reader : + declaration_name_kind

    Deserialize a biniou value of type declaration_name_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val declaration_name_tag : Bi_io.node_tag

    Tag used by the writers for type declaration_name. Readers may support more than just this tag.

    val write_untagged_declaration_name : Bi_outbuf.t -> declaration_name -> unit

    Output an untagged biniou value of type declaration_name.

    val write_declaration_name : Bi_outbuf.t -> declaration_name -> unit

    Output a biniou value of type declaration_name.

    val string_of_declaration_name : ?len:int -> declaration_name -> string

    Serialize a value of type declaration_name into a biniou string.

    val get_declaration_name_reader : Bi_io.node_tag -> Bi_inbuf.t -> - declaration_name

    Return a function that reads an untagged biniou value of type declaration_name.

    val read_declaration_name : Bi_inbuf.t -> declaration_name

    Input a tagged biniou value of type declaration_name.

    val declaration_name_of_string : ?pos:int -> string -> declaration_name

    Deserialize a biniou value of type declaration_name.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_decl_scope_tag : Bi_io.node_tag

    Tag used by the writers for type enum_decl_scope. Readers may support more than just this tag.

    val write_untagged_enum_decl_scope : Bi_outbuf.t -> enum_decl_scope -> unit

    Output an untagged biniou value of type enum_decl_scope.

    val write_enum_decl_scope : Bi_outbuf.t -> enum_decl_scope -> unit

    Output a biniou value of type enum_decl_scope.

    val string_of_enum_decl_scope : ?len:int -> enum_decl_scope -> string

    Serialize a value of type enum_decl_scope into a biniou string.

    val get_enum_decl_scope_reader : + declaration_name

    Return a function that reads an untagged biniou value of type declaration_name.

    val read_declaration_name : Bi_inbuf.t -> declaration_name

    Input a tagged biniou value of type declaration_name.

    val declaration_name_of_string : ?pos:int -> string -> declaration_name

    Deserialize a biniou value of type declaration_name.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_decl_scope_tag : Bi_io.node_tag

    Tag used by the writers for type enum_decl_scope. Readers may support more than just this tag.

    val write_untagged_enum_decl_scope : Bi_outbuf.t -> enum_decl_scope -> unit

    Output an untagged biniou value of type enum_decl_scope.

    val write_enum_decl_scope : Bi_outbuf.t -> enum_decl_scope -> unit

    Output a biniou value of type enum_decl_scope.

    val string_of_enum_decl_scope : ?len:int -> enum_decl_scope -> string

    Serialize a value of type enum_decl_scope into a biniou string.

    val get_enum_decl_scope_reader : Bi_io.node_tag -> Bi_inbuf.t -> - enum_decl_scope

    Return a function that reads an untagged biniou value of type enum_decl_scope.

    val read_enum_decl_scope : Bi_inbuf.t -> enum_decl_scope

    Input a tagged biniou value of type enum_decl_scope.

    val enum_decl_scope_of_string : ?pos:int -> string -> enum_decl_scope

    Deserialize a biniou value of type enum_decl_scope.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type enum_decl_info. Readers may support more than just this tag.

    val write_untagged_enum_decl_info : Bi_outbuf.t -> enum_decl_info -> unit

    Output an untagged biniou value of type enum_decl_info.

    val write_enum_decl_info : Bi_outbuf.t -> enum_decl_info -> unit

    Output a biniou value of type enum_decl_info.

    val string_of_enum_decl_info : ?len:int -> enum_decl_info -> string

    Serialize a value of type enum_decl_info into a biniou string.

    val get_enum_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> enum_decl_info

    Return a function that reads an untagged biniou value of type enum_decl_info.

    val read_enum_decl_info : Bi_inbuf.t -> enum_decl_info

    Input a tagged biniou value of type enum_decl_info.

    val enum_decl_info_of_string : ?pos:int -> string -> enum_decl_info

    Deserialize a biniou value of type enum_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val input_kind_tag : Bi_io.node_tag

    Tag used by the writers for type input_kind. Readers may support more than just this tag.

    val write_untagged_input_kind : Bi_outbuf.t -> input_kind -> unit

    Output an untagged biniou value of type input_kind.

    val write_input_kind : Bi_outbuf.t -> input_kind -> unit

    Output a biniou value of type input_kind.

    val string_of_input_kind : ?len:int -> input_kind -> string

    Serialize a value of type input_kind into a biniou string.

    val get_input_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> input_kind

    Return a function that reads an untagged biniou value of type input_kind.

    val read_input_kind : Bi_inbuf.t -> input_kind

    Input a tagged biniou value of type input_kind.

    val input_kind_of_string : ?pos:int -> string -> input_kind

    Deserialize a biniou value of type input_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val integer_literal_info_tag : Bi_io.node_tag

    Tag used by the writers for type integer_literal_info. Readers may support more than just this tag.

    val write_untagged_integer_literal_info : + enum_decl_scope

    Return a function that reads an untagged biniou value of type enum_decl_scope.

    val read_enum_decl_scope : Bi_inbuf.t -> enum_decl_scope

    Input a tagged biniou value of type enum_decl_scope.

    val enum_decl_scope_of_string : ?pos:int -> string -> enum_decl_scope

    Deserialize a biniou value of type enum_decl_scope.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type enum_decl_info. Readers may support more than just this tag.

    val write_untagged_enum_decl_info : Bi_outbuf.t -> enum_decl_info -> unit

    Output an untagged biniou value of type enum_decl_info.

    val write_enum_decl_info : Bi_outbuf.t -> enum_decl_info -> unit

    Output a biniou value of type enum_decl_info.

    val string_of_enum_decl_info : ?len:int -> enum_decl_info -> string

    Serialize a value of type enum_decl_info into a biniou string.

    val get_enum_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> enum_decl_info

    Return a function that reads an untagged biniou value of type enum_decl_info.

    val read_enum_decl_info : Bi_inbuf.t -> enum_decl_info

    Input a tagged biniou value of type enum_decl_info.

    val enum_decl_info_of_string : ?pos:int -> string -> enum_decl_info

    Deserialize a biniou value of type enum_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val input_kind_tag : Bi_io.node_tag

    Tag used by the writers for type input_kind. Readers may support more than just this tag.

    val write_untagged_input_kind : Bi_outbuf.t -> input_kind -> unit

    Output an untagged biniou value of type input_kind.

    val write_input_kind : Bi_outbuf.t -> input_kind -> unit

    Output a biniou value of type input_kind.

    val string_of_input_kind : ?len:int -> input_kind -> string

    Serialize a value of type input_kind into a biniou string.

    val get_input_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> input_kind

    Return a function that reads an untagged biniou value of type input_kind.

    val read_input_kind : Bi_inbuf.t -> input_kind

    Input a tagged biniou value of type input_kind.

    val input_kind_of_string : ?pos:int -> string -> input_kind

    Deserialize a biniou value of type input_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val integer_literal_info_tag : Bi_io.node_tag

    Tag used by the writers for type integer_literal_info. Readers may support more than just this tag.

    val write_untagged_integer_literal_info : Bi_outbuf.t -> integer_literal_info -> - unit

    Output an untagged biniou value of type integer_literal_info.

    val write_integer_literal_info : Bi_outbuf.t -> integer_literal_info -> unit

    Output a biniou value of type integer_literal_info.

    val string_of_integer_literal_info : ?len:int -> integer_literal_info -> string

    Serialize a value of type integer_literal_info into a biniou string.

    val get_integer_literal_info_reader : + unit

    Output an untagged biniou value of type integer_literal_info.

    val write_integer_literal_info : Bi_outbuf.t -> integer_literal_info -> unit

    Output a biniou value of type integer_literal_info.

    val string_of_integer_literal_info : ?len:int -> integer_literal_info -> string

    Serialize a value of type integer_literal_info into a biniou string.

    val get_integer_literal_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - integer_literal_info

    Return a function that reads an untagged biniou value of type integer_literal_info.

    val read_integer_literal_info : Bi_inbuf.t -> integer_literal_info

    Input a tagged biniou value of type integer_literal_info.

    val integer_literal_info_of_string : ?pos:int -> string -> integer_literal_info

    Deserialize a biniou value of type integer_literal_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val integer_type_widths_tag : Bi_io.node_tag

    Tag used by the writers for type integer_type_widths. Readers may support more than just this tag.

    val write_untagged_integer_type_widths : + integer_literal_info

    Return a function that reads an untagged biniou value of type integer_literal_info.

    val read_integer_literal_info : Bi_inbuf.t -> integer_literal_info

    Input a tagged biniou value of type integer_literal_info.

    val integer_literal_info_of_string : ?pos:int -> string -> integer_literal_info

    Deserialize a biniou value of type integer_literal_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val integer_type_widths_tag : Bi_io.node_tag

    Tag used by the writers for type integer_type_widths. Readers may support more than just this tag.

    val write_untagged_integer_type_widths : Bi_outbuf.t -> integer_type_widths -> - unit

    Output an untagged biniou value of type integer_type_widths.

    val write_integer_type_widths : Bi_outbuf.t -> integer_type_widths -> unit

    Output a biniou value of type integer_type_widths.

    val string_of_integer_type_widths : ?len:int -> integer_type_widths -> string

    Serialize a value of type integer_type_widths into a biniou string.

    val get_integer_type_widths_reader : + unit

    Output an untagged biniou value of type integer_type_widths.

    val write_integer_type_widths : Bi_outbuf.t -> integer_type_widths -> unit

    Output a biniou value of type integer_type_widths.

    val string_of_integer_type_widths : ?len:int -> integer_type_widths -> string

    Serialize a value of type integer_type_widths into a biniou string.

    val get_integer_type_widths_reader : Bi_io.node_tag -> Bi_inbuf.t -> - integer_type_widths

    Return a function that reads an untagged biniou value of type integer_type_widths.

    val read_integer_type_widths : Bi_inbuf.t -> integer_type_widths

    Input a tagged biniou value of type integer_type_widths.

    val integer_type_widths_of_string : ?pos:int -> string -> integer_type_widths

    Deserialize a biniou value of type integer_type_widths.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_capture_kind_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_capture_kind. Readers may support more than just this tag.

    val write_untagged_lambda_capture_kind : + integer_type_widths

    Return a function that reads an untagged biniou value of type integer_type_widths.

    val read_integer_type_widths : Bi_inbuf.t -> integer_type_widths

    Input a tagged biniou value of type integer_type_widths.

    val integer_type_widths_of_string : ?pos:int -> string -> integer_type_widths

    Deserialize a biniou value of type integer_type_widths.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_capture_kind_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_capture_kind. Readers may support more than just this tag.

    val write_untagged_lambda_capture_kind : Bi_outbuf.t -> lambda_capture_kind -> - unit

    Output an untagged biniou value of type lambda_capture_kind.

    val write_lambda_capture_kind : Bi_outbuf.t -> lambda_capture_kind -> unit

    Output a biniou value of type lambda_capture_kind.

    val string_of_lambda_capture_kind : ?len:int -> lambda_capture_kind -> string

    Serialize a value of type lambda_capture_kind into a biniou string.

    val get_lambda_capture_kind_reader : + unit

    Output an untagged biniou value of type lambda_capture_kind.

    val write_lambda_capture_kind : Bi_outbuf.t -> lambda_capture_kind -> unit

    Output a biniou value of type lambda_capture_kind.

    val string_of_lambda_capture_kind : ?len:int -> lambda_capture_kind -> string

    Serialize a value of type lambda_capture_kind into a biniou string.

    val get_lambda_capture_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - lambda_capture_kind

    Return a function that reads an untagged biniou value of type lambda_capture_kind.

    val read_lambda_capture_kind : Bi_inbuf.t -> lambda_capture_kind

    Input a tagged biniou value of type lambda_capture_kind.

    val lambda_capture_kind_of_string : ?pos:int -> string -> lambda_capture_kind

    Deserialize a biniou value of type lambda_capture_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val named_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type named_decl_info. Readers may support more than just this tag.

    val write_untagged_named_decl_info : Bi_outbuf.t -> named_decl_info -> unit

    Output an untagged biniou value of type named_decl_info.

    val write_named_decl_info : Bi_outbuf.t -> named_decl_info -> unit

    Output a biniou value of type named_decl_info.

    val string_of_named_decl_info : ?len:int -> named_decl_info -> string

    Serialize a value of type named_decl_info into a biniou string.

    val get_named_decl_info_reader : + lambda_capture_kind

    Return a function that reads an untagged biniou value of type lambda_capture_kind.

    val read_lambda_capture_kind : Bi_inbuf.t -> lambda_capture_kind

    Input a tagged biniou value of type lambda_capture_kind.

    val lambda_capture_kind_of_string : ?pos:int -> string -> lambda_capture_kind

    Deserialize a biniou value of type lambda_capture_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val named_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type named_decl_info. Readers may support more than just this tag.

    val write_untagged_named_decl_info : Bi_outbuf.t -> named_decl_info -> unit

    Output an untagged biniou value of type named_decl_info.

    val write_named_decl_info : Bi_outbuf.t -> named_decl_info -> unit

    Output a biniou value of type named_decl_info.

    val string_of_named_decl_info : ?len:int -> named_decl_info -> string

    Serialize a value of type named_decl_info into a biniou string.

    val get_named_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - named_decl_info

    Return a function that reads an untagged biniou value of type named_decl_info.

    val read_named_decl_info : Bi_inbuf.t -> named_decl_info

    Input a tagged biniou value of type named_decl_info.

    val named_decl_info_of_string : ?pos:int -> string -> named_decl_info

    Deserialize a biniou value of type named_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_access_control_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_access_control. Readers may support more than just this tag.

    val write_untagged_obj_c_access_control : + named_decl_info

    Return a function that reads an untagged biniou value of type named_decl_info.

    val read_named_decl_info : Bi_inbuf.t -> named_decl_info

    Input a tagged biniou value of type named_decl_info.

    val named_decl_info_of_string : ?pos:int -> string -> named_decl_info

    Deserialize a biniou value of type named_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_access_control_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_access_control. Readers may support more than just this tag.

    val write_untagged_obj_c_access_control : Bi_outbuf.t -> obj_c_access_control -> - unit

    Output an untagged biniou value of type obj_c_access_control.

    val write_obj_c_access_control : Bi_outbuf.t -> obj_c_access_control -> unit

    Output a biniou value of type obj_c_access_control.

    val string_of_obj_c_access_control : ?len:int -> obj_c_access_control -> string

    Serialize a value of type obj_c_access_control into a biniou string.

    val get_obj_c_access_control_reader : + unit

    Output an untagged biniou value of type obj_c_access_control.

    val write_obj_c_access_control : Bi_outbuf.t -> obj_c_access_control -> unit

    Output a biniou value of type obj_c_access_control.

    val string_of_obj_c_access_control : ?len:int -> obj_c_access_control -> string

    Serialize a value of type obj_c_access_control into a biniou string.

    val get_obj_c_access_control_reader : Bi_io.node_tag -> Bi_inbuf.t -> - obj_c_access_control

    Return a function that reads an untagged biniou value of type obj_c_access_control.

    val read_obj_c_access_control : Bi_inbuf.t -> obj_c_access_control

    Input a tagged biniou value of type obj_c_access_control.

    val obj_c_access_control_of_string : ?pos:int -> string -> obj_c_access_control

    Deserialize a biniou value of type obj_c_access_control.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_availability_check_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_availability_check_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_availability_check_expr_info : + obj_c_access_control

    Return a function that reads an untagged biniou value of type obj_c_access_control.

    val read_obj_c_access_control : Bi_inbuf.t -> obj_c_access_control

    Input a tagged biniou value of type obj_c_access_control.

    val obj_c_access_control_of_string : ?pos:int -> string -> obj_c_access_control

    Deserialize a biniou value of type obj_c_access_control.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_availability_check_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_availability_check_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_availability_check_expr_info : Bi_outbuf.t -> obj_c_availability_check_expr_info -> unit

    Output an untagged biniou value of type obj_c_availability_check_expr_info.

    val write_obj_c_availability_check_expr_info : Bi_outbuf.t -> obj_c_availability_check_expr_info -> unit

    Output a biniou value of type obj_c_availability_check_expr_info.

    val string_of_obj_c_availability_check_expr_info : - ?len:int -> + ?len:int -> obj_c_availability_check_expr_info -> string

    Serialize a value of type obj_c_availability_check_expr_info into a biniou string.

    val get_obj_c_availability_check_expr_info_reader : Bi_io.node_tag -> @@ -316,7 +316,7 @@ obj_c_availability_check_expr_info

    Return a function that reads an untagged biniou value of type obj_c_availability_check_expr_info.

    val read_obj_c_availability_check_expr_info : Bi_inbuf.t -> obj_c_availability_check_expr_info

    Input a tagged biniou value of type obj_c_availability_check_expr_info.

    val obj_c_availability_check_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_availability_check_expr_info

    Deserialize a biniou value of type obj_c_availability_check_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_bridge_cast_kind_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_bridge_cast_kind. Readers may support more than just this tag.

    val write_untagged_obj_c_bridge_cast_kind : Bi_outbuf.t -> @@ -325,13 +325,13 @@ Bi_outbuf.t -> obj_c_bridge_cast_kind -> unit

    Output a biniou value of type obj_c_bridge_cast_kind.

    val string_of_obj_c_bridge_cast_kind : - ?len:int -> + ?len:int -> obj_c_bridge_cast_kind -> string

    Serialize a value of type obj_c_bridge_cast_kind into a biniou string.

    val get_obj_c_bridge_cast_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_bridge_cast_kind

    Return a function that reads an untagged biniou value of type obj_c_bridge_cast_kind.

    val read_obj_c_bridge_cast_kind : Bi_inbuf.t -> obj_c_bridge_cast_kind

    Input a tagged biniou value of type obj_c_bridge_cast_kind.

    val obj_c_bridge_cast_kind_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_bridge_cast_kind

    Deserialize a biniou value of type obj_c_bridge_cast_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_bridged_cast_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_bridged_cast_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_bridged_cast_expr_info : Bi_outbuf.t -> @@ -340,7 +340,7 @@ Bi_outbuf.t -> obj_c_bridged_cast_expr_info -> unit

    Output a biniou value of type obj_c_bridged_cast_expr_info.

    val string_of_obj_c_bridged_cast_expr_info : - ?len:int -> + ?len:int -> obj_c_bridged_cast_expr_info -> string

    Serialize a value of type obj_c_bridged_cast_expr_info into a biniou string.

    val get_obj_c_bridged_cast_expr_info_reader : Bi_io.node_tag -> @@ -348,64 +348,64 @@ obj_c_bridged_cast_expr_info

    Return a function that reads an untagged biniou value of type obj_c_bridged_cast_expr_info.

    val read_obj_c_bridged_cast_expr_info : Bi_inbuf.t -> obj_c_bridged_cast_expr_info

    Input a tagged biniou value of type obj_c_bridged_cast_expr_info.

    val obj_c_bridged_cast_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_bridged_cast_expr_info

    Deserialize a biniou value of type obj_c_bridged_cast_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_ivar_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_ivar_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_ivar_decl_info : Bi_outbuf.t -> obj_c_ivar_decl_info -> - unit

    Output an untagged biniou value of type obj_c_ivar_decl_info.

    val write_obj_c_ivar_decl_info : Bi_outbuf.t -> obj_c_ivar_decl_info -> unit

    Output a biniou value of type obj_c_ivar_decl_info.

    val string_of_obj_c_ivar_decl_info : ?len:int -> obj_c_ivar_decl_info -> string

    Serialize a value of type obj_c_ivar_decl_info into a biniou string.

    val get_obj_c_ivar_decl_info_reader : + unit

    Output an untagged biniou value of type obj_c_ivar_decl_info.

    val write_obj_c_ivar_decl_info : Bi_outbuf.t -> obj_c_ivar_decl_info -> unit

    Output a biniou value of type obj_c_ivar_decl_info.

    val string_of_obj_c_ivar_decl_info : ?len:int -> obj_c_ivar_decl_info -> string

    Serialize a value of type obj_c_ivar_decl_info into a biniou string.

    val get_obj_c_ivar_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - obj_c_ivar_decl_info

    Return a function that reads an untagged biniou value of type obj_c_ivar_decl_info.

    val read_obj_c_ivar_decl_info : Bi_inbuf.t -> obj_c_ivar_decl_info

    Input a tagged biniou value of type obj_c_ivar_decl_info.

    val obj_c_ivar_decl_info_of_string : ?pos:int -> string -> obj_c_ivar_decl_info

    Deserialize a biniou value of type obj_c_ivar_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_control_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_control. Readers may support more than just this tag.

    val write_untagged_obj_c_property_control : + obj_c_ivar_decl_info

    Return a function that reads an untagged biniou value of type obj_c_ivar_decl_info.

    val read_obj_c_ivar_decl_info : Bi_inbuf.t -> obj_c_ivar_decl_info

    Input a tagged biniou value of type obj_c_ivar_decl_info.

    val obj_c_ivar_decl_info_of_string : ?pos:int -> string -> obj_c_ivar_decl_info

    Deserialize a biniou value of type obj_c_ivar_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_control_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_control. Readers may support more than just this tag.

    val write_untagged_obj_c_property_control : Bi_outbuf.t -> obj_c_property_control -> unit

    Output an untagged biniou value of type obj_c_property_control.

    val write_obj_c_property_control : Bi_outbuf.t -> obj_c_property_control -> unit

    Output a biniou value of type obj_c_property_control.

    val string_of_obj_c_property_control : - ?len:int -> + ?len:int -> obj_c_property_control -> string

    Serialize a value of type obj_c_property_control into a biniou string.

    val get_obj_c_property_control_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_property_control

    Return a function that reads an untagged biniou value of type obj_c_property_control.

    val read_obj_c_property_control : Bi_inbuf.t -> obj_c_property_control

    Input a tagged biniou value of type obj_c_property_control.

    val obj_c_property_control_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_property_control

    Deserialize a biniou value of type obj_c_property_control.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_subscript_kind_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_subscript_kind. Readers may support more than just this tag.

    val write_untagged_obj_c_subscript_kind : Bi_outbuf.t -> obj_c_subscript_kind -> - unit

    Output an untagged biniou value of type obj_c_subscript_kind.

    val write_obj_c_subscript_kind : Bi_outbuf.t -> obj_c_subscript_kind -> unit

    Output a biniou value of type obj_c_subscript_kind.

    val string_of_obj_c_subscript_kind : ?len:int -> obj_c_subscript_kind -> string

    Serialize a value of type obj_c_subscript_kind into a biniou string.

    val get_obj_c_subscript_kind_reader : + unit

    Output an untagged biniou value of type obj_c_subscript_kind.

    val write_obj_c_subscript_kind : Bi_outbuf.t -> obj_c_subscript_kind -> unit

    Output a biniou value of type obj_c_subscript_kind.

    val string_of_obj_c_subscript_kind : ?len:int -> obj_c_subscript_kind -> string

    Serialize a value of type obj_c_subscript_kind into a biniou string.

    val get_obj_c_subscript_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - obj_c_subscript_kind

    Return a function that reads an untagged biniou value of type obj_c_subscript_kind.

    val read_obj_c_subscript_kind : Bi_inbuf.t -> obj_c_subscript_kind

    Input a tagged biniou value of type obj_c_subscript_kind.

    val obj_c_subscript_kind_of_string : ?pos:int -> string -> obj_c_subscript_kind

    Deserialize a biniou value of type obj_c_subscript_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val objc_lifetime_attr_tag : Bi_io.node_tag

    Tag used by the writers for type objc_lifetime_attr. Readers may support more than just this tag.

    val write_untagged_objc_lifetime_attr : + obj_c_subscript_kind

    Return a function that reads an untagged biniou value of type obj_c_subscript_kind.

    val read_obj_c_subscript_kind : Bi_inbuf.t -> obj_c_subscript_kind

    Input a tagged biniou value of type obj_c_subscript_kind.

    val obj_c_subscript_kind_of_string : ?pos:int -> string -> obj_c_subscript_kind

    Deserialize a biniou value of type obj_c_subscript_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val objc_lifetime_attr_tag : Bi_io.node_tag

    Tag used by the writers for type objc_lifetime_attr. Readers may support more than just this tag.

    val write_untagged_objc_lifetime_attr : Bi_outbuf.t -> objc_lifetime_attr -> - unit

    Output an untagged biniou value of type objc_lifetime_attr.

    val write_objc_lifetime_attr : Bi_outbuf.t -> objc_lifetime_attr -> unit

    Output a biniou value of type objc_lifetime_attr.

    val string_of_objc_lifetime_attr : ?len:int -> objc_lifetime_attr -> string

    Serialize a value of type objc_lifetime_attr into a biniou string.

    val get_objc_lifetime_attr_reader : + unit

    Output an untagged biniou value of type objc_lifetime_attr.

    val write_objc_lifetime_attr : Bi_outbuf.t -> objc_lifetime_attr -> unit

    Output a biniou value of type objc_lifetime_attr.

    val string_of_objc_lifetime_attr : ?len:int -> objc_lifetime_attr -> string

    Serialize a value of type objc_lifetime_attr into a biniou string.

    val get_objc_lifetime_attr_reader : Bi_io.node_tag -> Bi_inbuf.t -> - objc_lifetime_attr

    Return a function that reads an untagged biniou value of type objc_lifetime_attr.

    val read_objc_lifetime_attr : Bi_inbuf.t -> objc_lifetime_attr

    Input a tagged biniou value of type objc_lifetime_attr.

    val objc_lifetime_attr_of_string : ?pos:int -> string -> objc_lifetime_attr

    Deserialize a biniou value of type objc_lifetime_attr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attr_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type attr_type_info. Readers may support more than just this tag.

    val write_untagged_attr_type_info : Bi_outbuf.t -> attr_type_info -> unit

    Output an untagged biniou value of type attr_type_info.

    val write_attr_type_info : Bi_outbuf.t -> attr_type_info -> unit

    Output a biniou value of type attr_type_info.

    val string_of_attr_type_info : ?len:int -> attr_type_info -> string

    Serialize a value of type attr_type_info into a biniou string.

    val get_attr_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> attr_type_info

    Return a function that reads an untagged biniou value of type attr_type_info.

    val read_attr_type_info : Bi_inbuf.t -> attr_type_info

    Input a tagged biniou value of type attr_type_info.

    val attr_type_info_of_string : ?pos:int -> string -> attr_type_info

    Deserialize a biniou value of type attr_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val object_kind_tag : Bi_io.node_tag

    Tag used by the writers for type object_kind. Readers may support more than just this tag.

    val write_untagged_object_kind : Bi_outbuf.t -> object_kind -> unit

    Output an untagged biniou value of type object_kind.

    val write_object_kind : Bi_outbuf.t -> object_kind -> unit

    Output a biniou value of type object_kind.

    val string_of_object_kind : ?len:int -> object_kind -> string

    Serialize a value of type object_kind into a biniou string.

    val get_object_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> object_kind

    Return a function that reads an untagged biniou value of type object_kind.

    val read_object_kind : Bi_inbuf.t -> object_kind

    Input a tagged biniou value of type object_kind.

    val object_kind_of_string : ?pos:int -> string -> object_kind

    Deserialize a biniou value of type object_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val offset_of_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type offset_of_expr_info. Readers may support more than just this tag.

    val write_untagged_offset_of_expr_info : + objc_lifetime_attr

    Return a function that reads an untagged biniou value of type objc_lifetime_attr.

    val read_objc_lifetime_attr : Bi_inbuf.t -> objc_lifetime_attr

    Input a tagged biniou value of type objc_lifetime_attr.

    val objc_lifetime_attr_of_string : ?pos:int -> string -> objc_lifetime_attr

    Deserialize a biniou value of type objc_lifetime_attr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attr_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type attr_type_info. Readers may support more than just this tag.

    val write_untagged_attr_type_info : Bi_outbuf.t -> attr_type_info -> unit

    Output an untagged biniou value of type attr_type_info.

    val write_attr_type_info : Bi_outbuf.t -> attr_type_info -> unit

    Output a biniou value of type attr_type_info.

    val string_of_attr_type_info : ?len:int -> attr_type_info -> string

    Serialize a value of type attr_type_info into a biniou string.

    val get_attr_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> attr_type_info

    Return a function that reads an untagged biniou value of type attr_type_info.

    val read_attr_type_info : Bi_inbuf.t -> attr_type_info

    Input a tagged biniou value of type attr_type_info.

    val attr_type_info_of_string : ?pos:int -> string -> attr_type_info

    Deserialize a biniou value of type attr_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val object_kind_tag : Bi_io.node_tag

    Tag used by the writers for type object_kind. Readers may support more than just this tag.

    val write_untagged_object_kind : Bi_outbuf.t -> object_kind -> unit

    Output an untagged biniou value of type object_kind.

    val write_object_kind : Bi_outbuf.t -> object_kind -> unit

    Output a biniou value of type object_kind.

    val string_of_object_kind : ?len:int -> object_kind -> string

    Serialize a value of type object_kind into a biniou string.

    val get_object_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> object_kind

    Return a function that reads an untagged biniou value of type object_kind.

    val read_object_kind : Bi_inbuf.t -> object_kind

    Input a tagged biniou value of type object_kind.

    val object_kind_of_string : ?pos:int -> string -> object_kind

    Deserialize a biniou value of type object_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val offset_of_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type offset_of_expr_info. Readers may support more than just this tag.

    val write_untagged_offset_of_expr_info : Bi_outbuf.t -> offset_of_expr_info -> - unit

    Output an untagged biniou value of type offset_of_expr_info.

    val write_offset_of_expr_info : Bi_outbuf.t -> offset_of_expr_info -> unit

    Output a biniou value of type offset_of_expr_info.

    val string_of_offset_of_expr_info : ?len:int -> offset_of_expr_info -> string

    Serialize a value of type offset_of_expr_info into a biniou string.

    val get_offset_of_expr_info_reader : + unit

    Output an untagged biniou value of type offset_of_expr_info.

    val write_offset_of_expr_info : Bi_outbuf.t -> offset_of_expr_info -> unit

    Output a biniou value of type offset_of_expr_info.

    val string_of_offset_of_expr_info : ?len:int -> offset_of_expr_info -> string

    Serialize a value of type offset_of_expr_info into a biniou string.

    val get_offset_of_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - offset_of_expr_info

    Return a function that reads an untagged biniou value of type offset_of_expr_info.

    val read_offset_of_expr_info : Bi_inbuf.t -> offset_of_expr_info

    Input a tagged biniou value of type offset_of_expr_info.

    val offset_of_expr_info_of_string : ?pos:int -> string -> offset_of_expr_info

    Deserialize a biniou value of type offset_of_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val pointer_tag : Bi_io.node_tag

    Tag used by the writers for type pointer. Readers may support more than just this tag.

    val write_untagged_pointer : Bi_outbuf.t -> pointer -> unit

    Output an untagged biniou value of type pointer.

    val write_pointer : Bi_outbuf.t -> pointer -> unit

    Output a biniou value of type pointer.

    val string_of_pointer : ?len:int -> pointer -> string

    Serialize a value of type pointer into a biniou string.

    val get_pointer_reader : Bi_io.node_tag -> Bi_inbuf.t -> pointer

    Return a function that reads an untagged biniou value of type pointer.

    val read_pointer : Bi_inbuf.t -> pointer

    Input a tagged biniou value of type pointer.

    val pointer_of_string : ?pos:int -> string -> pointer

    Deserialize a biniou value of type pointer.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val addr_label_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type addr_label_expr_info. Readers may support more than just this tag.

    val write_untagged_addr_label_expr_info : + offset_of_expr_info

    Return a function that reads an untagged biniou value of type offset_of_expr_info.

    val read_offset_of_expr_info : Bi_inbuf.t -> offset_of_expr_info

    Input a tagged biniou value of type offset_of_expr_info.

    val offset_of_expr_info_of_string : ?pos:int -> string -> offset_of_expr_info

    Deserialize a biniou value of type offset_of_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val pointer_tag : Bi_io.node_tag

    Tag used by the writers for type pointer. Readers may support more than just this tag.

    val write_untagged_pointer : Bi_outbuf.t -> pointer -> unit

    Output an untagged biniou value of type pointer.

    val write_pointer : Bi_outbuf.t -> pointer -> unit

    Output a biniou value of type pointer.

    val string_of_pointer : ?len:int -> pointer -> string

    Serialize a value of type pointer into a biniou string.

    val get_pointer_reader : Bi_io.node_tag -> Bi_inbuf.t -> pointer

    Return a function that reads an untagged biniou value of type pointer.

    val read_pointer : Bi_inbuf.t -> pointer

    Input a tagged biniou value of type pointer.

    val pointer_of_string : ?pos:int -> string -> pointer

    Deserialize a biniou value of type pointer.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val addr_label_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type addr_label_expr_info. Readers may support more than just this tag.

    val write_untagged_addr_label_expr_info : Bi_outbuf.t -> addr_label_expr_info -> - unit

    Output an untagged biniou value of type addr_label_expr_info.

    val write_addr_label_expr_info : Bi_outbuf.t -> addr_label_expr_info -> unit

    Output a biniou value of type addr_label_expr_info.

    val string_of_addr_label_expr_info : ?len:int -> addr_label_expr_info -> string

    Serialize a value of type addr_label_expr_info into a biniou string.

    val get_addr_label_expr_info_reader : + unit

    Output an untagged biniou value of type addr_label_expr_info.

    val write_addr_label_expr_info : Bi_outbuf.t -> addr_label_expr_info -> unit

    Output a biniou value of type addr_label_expr_info.

    val string_of_addr_label_expr_info : ?len:int -> addr_label_expr_info -> string

    Serialize a value of type addr_label_expr_info into a biniou string.

    val get_addr_label_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - addr_label_expr_info

    Return a function that reads an untagged biniou value of type addr_label_expr_info.

    val read_addr_label_expr_info : Bi_inbuf.t -> addr_label_expr_info

    Input a tagged biniou value of type addr_label_expr_info.

    val addr_label_expr_info_of_string : ?pos:int -> string -> addr_label_expr_info

    Deserialize a biniou value of type addr_label_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_new_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_new_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_new_expr_info : Bi_outbuf.t -> cxx_new_expr_info -> unit

    Output an untagged biniou value of type cxx_new_expr_info.

    val write_cxx_new_expr_info : Bi_outbuf.t -> cxx_new_expr_info -> unit

    Output a biniou value of type cxx_new_expr_info.

    val string_of_cxx_new_expr_info : ?len:int -> cxx_new_expr_info -> string

    Serialize a value of type cxx_new_expr_info into a biniou string.

    val get_cxx_new_expr_info_reader : + addr_label_expr_info

    Return a function that reads an untagged biniou value of type addr_label_expr_info.

    val read_addr_label_expr_info : Bi_inbuf.t -> addr_label_expr_info

    Input a tagged biniou value of type addr_label_expr_info.

    val addr_label_expr_info_of_string : ?pos:int -> string -> addr_label_expr_info

    Deserialize a biniou value of type addr_label_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_new_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_new_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_new_expr_info : Bi_outbuf.t -> cxx_new_expr_info -> unit

    Output an untagged biniou value of type cxx_new_expr_info.

    val write_cxx_new_expr_info : Bi_outbuf.t -> cxx_new_expr_info -> unit

    Output a biniou value of type cxx_new_expr_info.

    val string_of_cxx_new_expr_info : ?len:int -> cxx_new_expr_info -> string

    Serialize a value of type cxx_new_expr_info into a biniou string.

    val get_cxx_new_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_new_expr_info

    Return a function that reads an untagged biniou value of type cxx_new_expr_info.

    val read_cxx_new_expr_info : Bi_inbuf.t -> cxx_new_expr_info

    Input a tagged biniou value of type cxx_new_expr_info.

    val cxx_new_expr_info_of_string : ?pos:int -> string -> cxx_new_expr_info

    Deserialize a biniou value of type cxx_new_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_temporary_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_temporary. Readers may support more than just this tag.

    val write_untagged_cxx_temporary : Bi_outbuf.t -> cxx_temporary -> unit

    Output an untagged biniou value of type cxx_temporary.

    val write_cxx_temporary : Bi_outbuf.t -> cxx_temporary -> unit

    Output a biniou value of type cxx_temporary.

    val string_of_cxx_temporary : ?len:int -> cxx_temporary -> string

    Serialize a value of type cxx_temporary into a biniou string.

    val get_cxx_temporary_reader : Bi_io.node_tag -> Bi_inbuf.t -> cxx_temporary

    Return a function that reads an untagged biniou value of type cxx_temporary.

    val read_cxx_temporary : Bi_inbuf.t -> cxx_temporary

    Input a tagged biniou value of type cxx_temporary.

    val cxx_temporary_of_string : ?pos:int -> string -> cxx_temporary

    Deserialize a biniou value of type cxx_temporary.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_bind_temporary_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_bind_temporary_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_bind_temporary_expr_info : + cxx_new_expr_info

    Return a function that reads an untagged biniou value of type cxx_new_expr_info.

    val read_cxx_new_expr_info : Bi_inbuf.t -> cxx_new_expr_info

    Input a tagged biniou value of type cxx_new_expr_info.

    val cxx_new_expr_info_of_string : ?pos:int -> string -> cxx_new_expr_info

    Deserialize a biniou value of type cxx_new_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_temporary_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_temporary. Readers may support more than just this tag.

    val write_untagged_cxx_temporary : Bi_outbuf.t -> cxx_temporary -> unit

    Output an untagged biniou value of type cxx_temporary.

    val write_cxx_temporary : Bi_outbuf.t -> cxx_temporary -> unit

    Output a biniou value of type cxx_temporary.

    val string_of_cxx_temporary : ?len:int -> cxx_temporary -> string

    Serialize a value of type cxx_temporary into a biniou string.

    val get_cxx_temporary_reader : Bi_io.node_tag -> Bi_inbuf.t -> cxx_temporary

    Return a function that reads an untagged biniou value of type cxx_temporary.

    val read_cxx_temporary : Bi_inbuf.t -> cxx_temporary

    Input a tagged biniou value of type cxx_temporary.

    val cxx_temporary_of_string : ?pos:int -> string -> cxx_temporary

    Deserialize a biniou value of type cxx_temporary.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_bind_temporary_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_bind_temporary_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_bind_temporary_expr_info : Bi_outbuf.t -> cxx_bind_temporary_expr_info -> unit

    Output an untagged biniou value of type cxx_bind_temporary_expr_info.

    val write_cxx_bind_temporary_expr_info : Bi_outbuf.t -> cxx_bind_temporary_expr_info -> unit

    Output a biniou value of type cxx_bind_temporary_expr_info.

    val string_of_cxx_bind_temporary_expr_info : - ?len:int -> + ?len:int -> cxx_bind_temporary_expr_info -> string

    Serialize a value of type cxx_bind_temporary_expr_info into a biniou string.

    val get_cxx_bind_temporary_expr_info_reader : Bi_io.node_tag -> @@ -413,16 +413,16 @@ cxx_bind_temporary_expr_info

    Return a function that reads an untagged biniou value of type cxx_bind_temporary_expr_info.

    val read_cxx_bind_temporary_expr_info : Bi_inbuf.t -> cxx_bind_temporary_expr_info

    Input a tagged biniou value of type cxx_bind_temporary_expr_info.

    val cxx_bind_temporary_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - cxx_bind_temporary_expr_info

    Deserialize a biniou value of type cxx_bind_temporary_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val goto_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type goto_stmt_info. Readers may support more than just this tag.

    val write_untagged_goto_stmt_info : Bi_outbuf.t -> goto_stmt_info -> unit

    Output an untagged biniou value of type goto_stmt_info.

    val write_goto_stmt_info : Bi_outbuf.t -> goto_stmt_info -> unit

    Output a biniou value of type goto_stmt_info.

    val string_of_goto_stmt_info : ?len:int -> goto_stmt_info -> string

    Serialize a value of type goto_stmt_info into a biniou string.

    val get_goto_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> goto_stmt_info

    Return a function that reads an untagged biniou value of type goto_stmt_info.

    val read_goto_stmt_info : Bi_inbuf.t -> goto_stmt_info

    Input a tagged biniou value of type goto_stmt_info.

    val goto_stmt_info_of_string : ?pos:int -> string -> goto_stmt_info

    Deserialize a biniou value of type goto_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_array_literal_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_array_literal_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_array_literal_expr_info : + cxx_bind_temporary_expr_info

    Deserialize a biniou value of type cxx_bind_temporary_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val goto_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type goto_stmt_info. Readers may support more than just this tag.

    val write_untagged_goto_stmt_info : Bi_outbuf.t -> goto_stmt_info -> unit

    Output an untagged biniou value of type goto_stmt_info.

    val write_goto_stmt_info : Bi_outbuf.t -> goto_stmt_info -> unit

    Output a biniou value of type goto_stmt_info.

    val string_of_goto_stmt_info : ?len:int -> goto_stmt_info -> string

    Serialize a value of type goto_stmt_info into a biniou string.

    val get_goto_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> goto_stmt_info

    Return a function that reads an untagged biniou value of type goto_stmt_info.

    val read_goto_stmt_info : Bi_inbuf.t -> goto_stmt_info

    Input a tagged biniou value of type goto_stmt_info.

    val goto_stmt_info_of_string : ?pos:int -> string -> goto_stmt_info

    Deserialize a biniou value of type goto_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_array_literal_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_array_literal_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_array_literal_expr_info : Bi_outbuf.t -> obj_c_array_literal_expr_info -> unit

    Output an untagged biniou value of type obj_c_array_literal_expr_info.

    val write_obj_c_array_literal_expr_info : Bi_outbuf.t -> obj_c_array_literal_expr_info -> unit

    Output a biniou value of type obj_c_array_literal_expr_info.

    val string_of_obj_c_array_literal_expr_info : - ?len:int -> + ?len:int -> obj_c_array_literal_expr_info -> string

    Serialize a value of type obj_c_array_literal_expr_info into a biniou string.

    val get_obj_c_array_literal_expr_info_reader : Bi_io.node_tag -> @@ -430,7 +430,7 @@ obj_c_array_literal_expr_info

    Return a function that reads an untagged biniou value of type obj_c_array_literal_expr_info.

    val read_obj_c_array_literal_expr_info : Bi_inbuf.t -> obj_c_array_literal_expr_info

    Input a tagged biniou value of type obj_c_array_literal_expr_info.

    val obj_c_array_literal_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_array_literal_expr_info

    Deserialize a biniou value of type obj_c_array_literal_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_dictionary_literal_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_dictionary_literal_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_dictionary_literal_expr_info : Bi_outbuf.t -> @@ -439,7 +439,7 @@ Bi_outbuf.t -> obj_c_dictionary_literal_expr_info -> unit

    Output a biniou value of type obj_c_dictionary_literal_expr_info.

    val string_of_obj_c_dictionary_literal_expr_info : - ?len:int -> + ?len:int -> obj_c_dictionary_literal_expr_info -> string

    Serialize a value of type obj_c_dictionary_literal_expr_info into a biniou string.

    val get_obj_c_dictionary_literal_expr_info_reader : Bi_io.node_tag -> @@ -447,49 +447,49 @@ obj_c_dictionary_literal_expr_info

    Return a function that reads an untagged biniou value of type obj_c_dictionary_literal_expr_info.

    val read_obj_c_dictionary_literal_expr_info : Bi_inbuf.t -> obj_c_dictionary_literal_expr_info

    Input a tagged biniou value of type obj_c_dictionary_literal_expr_info.

    val obj_c_dictionary_literal_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_dictionary_literal_expr_info

    Deserialize a biniou value of type obj_c_dictionary_literal_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val predefined_expr_type_tag : Bi_io.node_tag

    Tag used by the writers for type predefined_expr_type. Readers may support more than just this tag.

    val write_untagged_predefined_expr_type : Bi_outbuf.t -> predefined_expr_type -> - unit

    Output an untagged biniou value of type predefined_expr_type.

    val write_predefined_expr_type : Bi_outbuf.t -> predefined_expr_type -> unit

    Output a biniou value of type predefined_expr_type.

    val string_of_predefined_expr_type : ?len:int -> predefined_expr_type -> string

    Serialize a value of type predefined_expr_type into a biniou string.

    val get_predefined_expr_type_reader : + unit

    Output an untagged biniou value of type predefined_expr_type.

    val write_predefined_expr_type : Bi_outbuf.t -> predefined_expr_type -> unit

    Output a biniou value of type predefined_expr_type.

    val string_of_predefined_expr_type : ?len:int -> predefined_expr_type -> string

    Serialize a value of type predefined_expr_type into a biniou string.

    val get_predefined_expr_type_reader : Bi_io.node_tag -> Bi_inbuf.t -> - predefined_expr_type

    Return a function that reads an untagged biniou value of type predefined_expr_type.

    val read_predefined_expr_type : Bi_inbuf.t -> predefined_expr_type

    Input a tagged biniou value of type predefined_expr_type.

    val predefined_expr_type_of_string : ?pos:int -> string -> predefined_expr_type

    Deserialize a biniou value of type predefined_expr_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_attribute_tag : Bi_io.node_tag

    Tag used by the writers for type property_attribute. Readers may support more than just this tag.

    val write_untagged_property_attribute : + predefined_expr_type

    Return a function that reads an untagged biniou value of type predefined_expr_type.

    val read_predefined_expr_type : Bi_inbuf.t -> predefined_expr_type

    Input a tagged biniou value of type predefined_expr_type.

    val predefined_expr_type_of_string : ?pos:int -> string -> predefined_expr_type

    Deserialize a biniou value of type predefined_expr_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_attribute_tag : Bi_io.node_tag

    Tag used by the writers for type property_attribute. Readers may support more than just this tag.

    val write_untagged_property_attribute : Bi_outbuf.t -> property_attribute -> - unit

    Output an untagged biniou value of type property_attribute.

    val write_property_attribute : Bi_outbuf.t -> property_attribute -> unit

    Output a biniou value of type property_attribute.

    val string_of_property_attribute : ?len:int -> property_attribute -> string

    Serialize a value of type property_attribute into a biniou string.

    val get_property_attribute_reader : + unit

    Output an untagged biniou value of type property_attribute.

    val write_property_attribute : Bi_outbuf.t -> property_attribute -> unit

    Output a biniou value of type property_attribute.

    val string_of_property_attribute : ?len:int -> property_attribute -> string

    Serialize a value of type property_attribute into a biniou string.

    val get_property_attribute_reader : Bi_io.node_tag -> Bi_inbuf.t -> - property_attribute

    Return a function that reads an untagged biniou value of type property_attribute.

    val read_property_attribute : Bi_inbuf.t -> property_attribute

    Input a tagged biniou value of type property_attribute.

    val property_attribute_of_string : ?pos:int -> string -> property_attribute

    Deserialize a biniou value of type property_attribute.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_implementation_tag : Bi_io.node_tag

    Tag used by the writers for type property_implementation. Readers may support more than just this tag.

    val write_untagged_property_implementation : + property_attribute

    Return a function that reads an untagged biniou value of type property_attribute.

    val read_property_attribute : Bi_inbuf.t -> property_attribute

    Input a tagged biniou value of type property_attribute.

    val property_attribute_of_string : ?pos:int -> string -> property_attribute

    Deserialize a biniou value of type property_attribute.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_implementation_tag : Bi_io.node_tag

    Tag used by the writers for type property_implementation. Readers may support more than just this tag.

    val write_untagged_property_implementation : Bi_outbuf.t -> property_implementation -> unit

    Output an untagged biniou value of type property_implementation.

    val write_property_implementation : Bi_outbuf.t -> property_implementation -> unit

    Output a biniou value of type property_implementation.

    val string_of_property_implementation : - ?len:int -> + ?len:int -> property_implementation -> string

    Serialize a value of type property_implementation into a biniou string.

    val get_property_implementation_reader : Bi_io.node_tag -> Bi_inbuf.t -> property_implementation

    Return a function that reads an untagged biniou value of type property_implementation.

    val read_property_implementation : Bi_inbuf.t -> property_implementation

    Input a tagged biniou value of type property_implementation.

    val property_implementation_of_string : - ?pos:int -> + ?pos:int -> string -> - property_implementation

    Deserialize a biniou value of type property_implementation.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val record_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type record_decl_info. Readers may support more than just this tag.

    val write_untagged_record_decl_info : Bi_outbuf.t -> record_decl_info -> unit

    Output an untagged biniou value of type record_decl_info.

    val write_record_decl_info : Bi_outbuf.t -> record_decl_info -> unit

    Output a biniou value of type record_decl_info.

    val string_of_record_decl_info : ?len:int -> record_decl_info -> string

    Serialize a value of type record_decl_info into a biniou string.

    val get_record_decl_info_reader : + property_implementation

    Deserialize a biniou value of type property_implementation.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val record_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type record_decl_info. Readers may support more than just this tag.

    val write_untagged_record_decl_info : Bi_outbuf.t -> record_decl_info -> unit

    Output an untagged biniou value of type record_decl_info.

    val write_record_decl_info : Bi_outbuf.t -> record_decl_info -> unit

    Output a biniou value of type record_decl_info.

    val string_of_record_decl_info : ?len:int -> record_decl_info -> string

    Serialize a value of type record_decl_info into a biniou string.

    val get_record_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - record_decl_info

    Return a function that reads an untagged biniou value of type record_decl_info.

    val read_record_decl_info : Bi_inbuf.t -> record_decl_info

    Input a tagged biniou value of type record_decl_info.

    val record_decl_info_of_string : ?pos:int -> string -> record_decl_info

    Deserialize a biniou value of type record_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val selector_tag : Bi_io.node_tag

    Tag used by the writers for type selector. Readers may support more than just this tag.

    val write_untagged_selector : Bi_outbuf.t -> selector -> unit

    Output an untagged biniou value of type selector.

    val write_selector : Bi_outbuf.t -> selector -> unit

    Output a biniou value of type selector.

    val string_of_selector : ?len:int -> selector -> string

    Serialize a value of type selector into a biniou string.

    val get_selector_reader : Bi_io.node_tag -> Bi_inbuf.t -> selector

    Return a function that reads an untagged biniou value of type selector.

    val read_selector : Bi_inbuf.t -> selector

    Input a tagged biniou value of type selector.

    val selector_of_string : ?pos:int -> string -> selector

    Deserialize a biniou value of type selector.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_method_ref_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_method_ref_info. Readers may support more than just this tag.

    val write_untagged_obj_c_method_ref_info : + record_decl_info

    Return a function that reads an untagged biniou value of type record_decl_info.

    val read_record_decl_info : Bi_inbuf.t -> record_decl_info

    Input a tagged biniou value of type record_decl_info.

    val record_decl_info_of_string : ?pos:int -> string -> record_decl_info

    Deserialize a biniou value of type record_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val selector_tag : Bi_io.node_tag

    Tag used by the writers for type selector. Readers may support more than just this tag.

    val write_untagged_selector : Bi_outbuf.t -> selector -> unit

    Output an untagged biniou value of type selector.

    val write_selector : Bi_outbuf.t -> selector -> unit

    Output a biniou value of type selector.

    val string_of_selector : ?len:int -> selector -> string

    Serialize a value of type selector into a biniou string.

    val get_selector_reader : Bi_io.node_tag -> Bi_inbuf.t -> selector

    Return a function that reads an untagged biniou value of type selector.

    val read_selector : Bi_inbuf.t -> selector

    Input a tagged biniou value of type selector.

    val selector_of_string : ?pos:int -> string -> selector

    Deserialize a biniou value of type selector.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_method_ref_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_method_ref_info. Readers may support more than just this tag.

    val write_untagged_obj_c_method_ref_info : Bi_outbuf.t -> obj_c_method_ref_info -> unit

    Output an untagged biniou value of type obj_c_method_ref_info.

    val write_obj_c_method_ref_info : Bi_outbuf.t -> obj_c_method_ref_info -> unit

    Output a biniou value of type obj_c_method_ref_info.

    val string_of_obj_c_method_ref_info : - ?len:int -> + ?len:int -> obj_c_method_ref_info -> string

    Serialize a value of type obj_c_method_ref_info into a biniou string.

    val get_obj_c_method_ref_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_method_ref_info

    Return a function that reads an untagged biniou value of type obj_c_method_ref_info.

    val read_obj_c_method_ref_info : Bi_inbuf.t -> obj_c_method_ref_info

    Input a tagged biniou value of type obj_c_method_ref_info.

    val obj_c_method_ref_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_method_ref_info

    Deserialize a biniou value of type obj_c_method_ref_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_subscript_ref_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_subscript_ref_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_subscript_ref_expr_info : Bi_outbuf.t -> @@ -498,7 +498,7 @@ Bi_outbuf.t -> obj_c_subscript_ref_expr_info -> unit

    Output a biniou value of type obj_c_subscript_ref_expr_info.

    val string_of_obj_c_subscript_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_subscript_ref_expr_info -> string

    Serialize a value of type obj_c_subscript_ref_expr_info into a biniou string.

    val get_obj_c_subscript_ref_expr_info_reader : Bi_io.node_tag -> @@ -506,34 +506,34 @@ obj_c_subscript_ref_expr_info

    Return a function that reads an untagged biniou value of type obj_c_subscript_ref_expr_info.

    val read_obj_c_subscript_ref_expr_info : Bi_inbuf.t -> obj_c_subscript_ref_expr_info

    Input a tagged biniou value of type obj_c_subscript_ref_expr_info.

    val obj_c_subscript_ref_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_subscript_ref_expr_info

    Deserialize a biniou value of type obj_c_subscript_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val objc_boxed_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type objc_boxed_expr_info. Readers may support more than just this tag.

    val write_untagged_objc_boxed_expr_info : Bi_outbuf.t -> objc_boxed_expr_info -> - unit

    Output an untagged biniou value of type objc_boxed_expr_info.

    val write_objc_boxed_expr_info : Bi_outbuf.t -> objc_boxed_expr_info -> unit

    Output a biniou value of type objc_boxed_expr_info.

    val string_of_objc_boxed_expr_info : ?len:int -> objc_boxed_expr_info -> string

    Serialize a value of type objc_boxed_expr_info into a biniou string.

    val get_objc_boxed_expr_info_reader : + unit

    Output an untagged biniou value of type objc_boxed_expr_info.

    val write_objc_boxed_expr_info : Bi_outbuf.t -> objc_boxed_expr_info -> unit

    Output a biniou value of type objc_boxed_expr_info.

    val string_of_objc_boxed_expr_info : ?len:int -> objc_boxed_expr_info -> string

    Serialize a value of type objc_boxed_expr_info into a biniou string.

    val get_objc_boxed_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - objc_boxed_expr_info

    Return a function that reads an untagged biniou value of type objc_boxed_expr_info.

    val read_objc_boxed_expr_info : Bi_inbuf.t -> objc_boxed_expr_info

    Input a tagged biniou value of type objc_boxed_expr_info.

    val objc_boxed_expr_info_of_string : ?pos:int -> string -> objc_boxed_expr_info

    Deserialize a biniou value of type objc_boxed_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val sentinel_attr_info_tag : Bi_io.node_tag

    Tag used by the writers for type sentinel_attr_info. Readers may support more than just this tag.

    val write_untagged_sentinel_attr_info : + objc_boxed_expr_info

    Return a function that reads an untagged biniou value of type objc_boxed_expr_info.

    val read_objc_boxed_expr_info : Bi_inbuf.t -> objc_boxed_expr_info

    Input a tagged biniou value of type objc_boxed_expr_info.

    val objc_boxed_expr_info_of_string : ?pos:int -> string -> objc_boxed_expr_info

    Deserialize a biniou value of type objc_boxed_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val sentinel_attr_info_tag : Bi_io.node_tag

    Tag used by the writers for type sentinel_attr_info. Readers may support more than just this tag.

    val write_untagged_sentinel_attr_info : Bi_outbuf.t -> sentinel_attr_info -> - unit

    Output an untagged biniou value of type sentinel_attr_info.

    val write_sentinel_attr_info : Bi_outbuf.t -> sentinel_attr_info -> unit

    Output a biniou value of type sentinel_attr_info.

    val string_of_sentinel_attr_info : ?len:int -> sentinel_attr_info -> string

    Serialize a value of type sentinel_attr_info into a biniou string.

    val get_sentinel_attr_info_reader : + unit

    Output an untagged biniou value of type sentinel_attr_info.

    val write_sentinel_attr_info : Bi_outbuf.t -> sentinel_attr_info -> unit

    Output a biniou value of type sentinel_attr_info.

    val string_of_sentinel_attr_info : ?len:int -> sentinel_attr_info -> string

    Serialize a value of type sentinel_attr_info into a biniou string.

    val get_sentinel_attr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - sentinel_attr_info

    Return a function that reads an untagged biniou value of type sentinel_attr_info.

    val read_sentinel_attr_info : Bi_inbuf.t -> sentinel_attr_info

    Input a tagged biniou value of type sentinel_attr_info.

    val sentinel_attr_info_of_string : ?pos:int -> string -> sentinel_attr_info

    Deserialize a biniou value of type sentinel_attr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_file_tag : Bi_io.node_tag

    Tag used by the writers for type source_file. Readers may support more than just this tag.

    val write_untagged_source_file : Bi_outbuf.t -> source_file -> unit

    Output an untagged biniou value of type source_file.

    val write_source_file : Bi_outbuf.t -> source_file -> unit

    Output a biniou value of type source_file.

    val string_of_source_file : ?len:int -> source_file -> string

    Serialize a value of type source_file into a biniou string.

    val get_source_file_reader : Bi_io.node_tag -> Bi_inbuf.t -> source_file

    Return a function that reads an untagged biniou value of type source_file.

    val read_source_file : Bi_inbuf.t -> source_file

    Input a tagged biniou value of type source_file.

    val source_file_of_string : ?pos:int -> string -> source_file

    Deserialize a biniou value of type source_file.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_location_tag : Bi_io.node_tag

    Tag used by the writers for type source_location. Readers may support more than just this tag.

    val write_untagged_source_location : Bi_outbuf.t -> source_location -> unit

    Output an untagged biniou value of type source_location.

    val write_source_location : Bi_outbuf.t -> source_location -> unit

    Output a biniou value of type source_location.

    val string_of_source_location : ?len:int -> source_location -> string

    Serialize a value of type source_location into a biniou string.

    val get_source_location_reader : + sentinel_attr_info

    Return a function that reads an untagged biniou value of type sentinel_attr_info.

    val read_sentinel_attr_info : Bi_inbuf.t -> sentinel_attr_info

    Input a tagged biniou value of type sentinel_attr_info.

    val sentinel_attr_info_of_string : ?pos:int -> string -> sentinel_attr_info

    Deserialize a biniou value of type sentinel_attr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_file_tag : Bi_io.node_tag

    Tag used by the writers for type source_file. Readers may support more than just this tag.

    val write_untagged_source_file : Bi_outbuf.t -> source_file -> unit

    Output an untagged biniou value of type source_file.

    val write_source_file : Bi_outbuf.t -> source_file -> unit

    Output a biniou value of type source_file.

    val string_of_source_file : ?len:int -> source_file -> string

    Serialize a value of type source_file into a biniou string.

    val get_source_file_reader : Bi_io.node_tag -> Bi_inbuf.t -> source_file

    Return a function that reads an untagged biniou value of type source_file.

    val read_source_file : Bi_inbuf.t -> source_file

    Input a tagged biniou value of type source_file.

    val source_file_of_string : ?pos:int -> string -> source_file

    Deserialize a biniou value of type source_file.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_location_tag : Bi_io.node_tag

    Tag used by the writers for type source_location. Readers may support more than just this tag.

    val write_untagged_source_location : Bi_outbuf.t -> source_location -> unit

    Output an untagged biniou value of type source_location.

    val write_source_location : Bi_outbuf.t -> source_location -> unit

    Output a biniou value of type source_location.

    val string_of_source_location : ?len:int -> source_location -> string

    Serialize a value of type source_location into a biniou string.

    val get_source_location_reader : Bi_io.node_tag -> Bi_inbuf.t -> - source_location

    Return a function that reads an untagged biniou value of type source_location.

    val read_source_location : Bi_inbuf.t -> source_location

    Input a tagged biniou value of type source_location.

    val source_location_of_string : ?pos:int -> string -> source_location

    Deserialize a biniou value of type source_location.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_range_tag : Bi_io.node_tag

    Tag used by the writers for type source_range. Readers may support more than just this tag.

    val write_untagged_source_range : Bi_outbuf.t -> source_range -> unit

    Output an untagged biniou value of type source_range.

    val write_source_range : Bi_outbuf.t -> source_range -> unit

    Output a biniou value of type source_range.

    val string_of_source_range : ?len:int -> source_range -> string

    Serialize a value of type source_range into a biniou string.

    val get_source_range_reader : Bi_io.node_tag -> Bi_inbuf.t -> source_range

    Return a function that reads an untagged biniou value of type source_range.

    val read_source_range : Bi_inbuf.t -> source_range

    Input a tagged biniou value of type source_range.

    val source_range_of_string : ?pos:int -> string -> source_range

    Deserialize a biniou value of type source_range.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_info_tag : Bi_io.node_tag

    Tag used by the writers for type attribute_info. Readers may support more than just this tag.

    val write_untagged_attribute_info : Bi_outbuf.t -> attribute_info -> unit

    Output an untagged biniou value of type attribute_info.

    val write_attribute_info : Bi_outbuf.t -> attribute_info -> unit

    Output a biniou value of type attribute_info.

    val string_of_attribute_info : ?len:int -> attribute_info -> string

    Serialize a value of type attribute_info into a biniou string.

    val get_attribute_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute_info

    Return a function that reads an untagged biniou value of type attribute_info.

    val read_attribute_info : Bi_inbuf.t -> attribute_info

    Input a tagged biniou value of type attribute_info.

    val attribute_info_of_string : ?pos:int -> string -> attribute_info

    Deserialize a biniou value of type attribute_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attr_tuple_tag : Bi_io.node_tag

    Tag used by the writers for type attr_tuple. Readers may support more than just this tag.

    val write_untagged_attr_tuple : Bi_outbuf.t -> attr_tuple -> unit

    Output an untagged biniou value of type attr_tuple.

    val write_attr_tuple : Bi_outbuf.t -> attr_tuple -> unit

    Output a biniou value of type attr_tuple.

    val string_of_attr_tuple : ?len:int -> attr_tuple -> string

    Serialize a value of type attr_tuple into a biniou string.

    val get_attr_tuple_reader : Bi_io.node_tag -> Bi_inbuf.t -> attr_tuple

    Return a function that reads an untagged biniou value of type attr_tuple.

    val read_attr_tuple : Bi_inbuf.t -> attr_tuple

    Input a tagged biniou value of type attr_tuple.

    val attr_tuple_of_string : ?pos:int -> string -> attr_tuple

    Deserialize a biniou value of type attr_tuple.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val comment_info_tag : Bi_io.node_tag

    Tag used by the writers for type comment_info. Readers may support more than just this tag.

    val write_untagged_comment_info : Bi_outbuf.t -> comment_info -> unit

    Output an untagged biniou value of type comment_info.

    val write_comment_info : Bi_outbuf.t -> comment_info -> unit

    Output a biniou value of type comment_info.

    val string_of_comment_info : ?len:int -> comment_info -> string

    Serialize a value of type comment_info into a biniou string.

    val get_comment_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> comment_info

    Return a function that reads an untagged biniou value of type comment_info.

    val read_comment_info : Bi_inbuf.t -> comment_info

    Input a tagged biniou value of type comment_info.

    val comment_info_of_string : ?pos:int -> string -> comment_info

    Deserialize a biniou value of type comment_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val specifier_kind_tag : Bi_io.node_tag

    Tag used by the writers for type specifier_kind. Readers may support more than just this tag.

    val write_untagged_specifier_kind : Bi_outbuf.t -> specifier_kind -> unit

    Output an untagged biniou value of type specifier_kind.

    val write_specifier_kind : Bi_outbuf.t -> specifier_kind -> unit

    Output a biniou value of type specifier_kind.

    val string_of_specifier_kind : ?len:int -> specifier_kind -> string

    Serialize a value of type specifier_kind into a biniou string.

    val get_specifier_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> specifier_kind

    Return a function that reads an untagged biniou value of type specifier_kind.

    val read_specifier_kind : Bi_inbuf.t -> specifier_kind

    Input a tagged biniou value of type specifier_kind.

    val specifier_kind_of_string : ?pos:int -> string -> specifier_kind

    Deserialize a biniou value of type specifier_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type stmt_info. Readers may support more than just this tag.

    val write_untagged_stmt_info : Bi_outbuf.t -> stmt_info -> unit

    Output an untagged biniou value of type stmt_info.

    val write_stmt_info : Bi_outbuf.t -> stmt_info -> unit

    Output a biniou value of type stmt_info.

    val string_of_stmt_info : ?len:int -> stmt_info -> string

    Serialize a value of type stmt_info into a biniou string.

    val get_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> stmt_info

    Return a function that reads an untagged biniou value of type stmt_info.

    val read_stmt_info : Bi_inbuf.t -> stmt_info

    Input a tagged biniou value of type stmt_info.

    val stmt_info_of_string : ?pos:int -> string -> stmt_info

    Deserialize a biniou value of type stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val tag_kind_tag : Bi_io.node_tag

    Tag used by the writers for type tag_kind. Readers may support more than just this tag.

    val write_untagged_tag_kind : Bi_outbuf.t -> tag_kind -> unit

    Output an untagged biniou value of type tag_kind.

    val write_tag_kind : Bi_outbuf.t -> tag_kind -> unit

    Output a biniou value of type tag_kind.

    val string_of_tag_kind : ?len:int -> tag_kind -> string

    Serialize a value of type tag_kind into a biniou string.

    val get_tag_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> tag_kind

    Return a function that reads an untagged biniou value of type tag_kind.

    val read_tag_kind : Bi_inbuf.t -> tag_kind

    Input a tagged biniou value of type tag_kind.

    val tag_kind_of_string : ?pos:int -> string -> tag_kind

    Deserialize a biniou value of type tag_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_ptr_tag : Bi_io.node_tag

    Tag used by the writers for type type_ptr. Readers may support more than just this tag.

    val write_untagged_type_ptr : Bi_outbuf.t -> type_ptr -> unit

    Output an untagged biniou value of type type_ptr.

    val write_type_ptr : Bi_outbuf.t -> type_ptr -> unit

    Output a biniou value of type type_ptr.

    val string_of_type_ptr : ?len:int -> type_ptr -> string

    Serialize a value of type type_ptr into a biniou string.

    val get_type_ptr_reader : Bi_io.node_tag -> Bi_inbuf.t -> type_ptr

    Return a function that reads an untagged biniou value of type type_ptr.

    val read_type_ptr : Bi_inbuf.t -> type_ptr

    Input a tagged biniou value of type type_ptr.

    val type_ptr_of_string : ?pos:int -> string -> type_ptr

    Deserialize a biniou value of type type_ptr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val qual_type_tag : Bi_io.node_tag

    Tag used by the writers for type qual_type. Readers may support more than just this tag.

    val write_untagged_qual_type : Bi_outbuf.t -> qual_type -> unit

    Output an untagged biniou value of type qual_type.

    val write_qual_type : Bi_outbuf.t -> qual_type -> unit

    Output a biniou value of type qual_type.

    val string_of_qual_type : ?len:int -> qual_type -> string

    Serialize a value of type qual_type into a biniou string.

    val get_qual_type_reader : Bi_io.node_tag -> Bi_inbuf.t -> qual_type

    Return a function that reads an untagged biniou value of type qual_type.

    val read_qual_type : Bi_inbuf.t -> qual_type

    Input a tagged biniou value of type qual_type.

    val qual_type_of_string : ?pos:int -> string -> qual_type

    Deserialize a biniou value of type qual_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val array_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type array_type_info. Readers may support more than just this tag.

    val write_untagged_array_type_info : Bi_outbuf.t -> array_type_info -> unit

    Output an untagged biniou value of type array_type_info.

    val write_array_type_info : Bi_outbuf.t -> array_type_info -> unit

    Output a biniou value of type array_type_info.

    val string_of_array_type_info : ?len:int -> array_type_info -> string

    Serialize a value of type array_type_info into a biniou string.

    val get_array_type_info_reader : + source_location

    Return a function that reads an untagged biniou value of type source_location.

    val read_source_location : Bi_inbuf.t -> source_location

    Input a tagged biniou value of type source_location.

    val source_location_of_string : ?pos:int -> string -> source_location

    Deserialize a biniou value of type source_location.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val source_range_tag : Bi_io.node_tag

    Tag used by the writers for type source_range. Readers may support more than just this tag.

    val write_untagged_source_range : Bi_outbuf.t -> source_range -> unit

    Output an untagged biniou value of type source_range.

    val write_source_range : Bi_outbuf.t -> source_range -> unit

    Output a biniou value of type source_range.

    val string_of_source_range : ?len:int -> source_range -> string

    Serialize a value of type source_range into a biniou string.

    val get_source_range_reader : Bi_io.node_tag -> Bi_inbuf.t -> source_range

    Return a function that reads an untagged biniou value of type source_range.

    val read_source_range : Bi_inbuf.t -> source_range

    Input a tagged biniou value of type source_range.

    val source_range_of_string : ?pos:int -> string -> source_range

    Deserialize a biniou value of type source_range.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_info_tag : Bi_io.node_tag

    Tag used by the writers for type attribute_info. Readers may support more than just this tag.

    val write_untagged_attribute_info : Bi_outbuf.t -> attribute_info -> unit

    Output an untagged biniou value of type attribute_info.

    val write_attribute_info : Bi_outbuf.t -> attribute_info -> unit

    Output a biniou value of type attribute_info.

    val string_of_attribute_info : ?len:int -> attribute_info -> string

    Serialize a value of type attribute_info into a biniou string.

    val get_attribute_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute_info

    Return a function that reads an untagged biniou value of type attribute_info.

    val read_attribute_info : Bi_inbuf.t -> attribute_info

    Input a tagged biniou value of type attribute_info.

    val attribute_info_of_string : ?pos:int -> string -> attribute_info

    Deserialize a biniou value of type attribute_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attr_tuple_tag : Bi_io.node_tag

    Tag used by the writers for type attr_tuple. Readers may support more than just this tag.

    val write_untagged_attr_tuple : Bi_outbuf.t -> attr_tuple -> unit

    Output an untagged biniou value of type attr_tuple.

    val write_attr_tuple : Bi_outbuf.t -> attr_tuple -> unit

    Output a biniou value of type attr_tuple.

    val string_of_attr_tuple : ?len:int -> attr_tuple -> string

    Serialize a value of type attr_tuple into a biniou string.

    val get_attr_tuple_reader : Bi_io.node_tag -> Bi_inbuf.t -> attr_tuple

    Return a function that reads an untagged biniou value of type attr_tuple.

    val read_attr_tuple : Bi_inbuf.t -> attr_tuple

    Input a tagged biniou value of type attr_tuple.

    val attr_tuple_of_string : ?pos:int -> string -> attr_tuple

    Deserialize a biniou value of type attr_tuple.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val comment_info_tag : Bi_io.node_tag

    Tag used by the writers for type comment_info. Readers may support more than just this tag.

    val write_untagged_comment_info : Bi_outbuf.t -> comment_info -> unit

    Output an untagged biniou value of type comment_info.

    val write_comment_info : Bi_outbuf.t -> comment_info -> unit

    Output a biniou value of type comment_info.

    val string_of_comment_info : ?len:int -> comment_info -> string

    Serialize a value of type comment_info into a biniou string.

    val get_comment_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> comment_info

    Return a function that reads an untagged biniou value of type comment_info.

    val read_comment_info : Bi_inbuf.t -> comment_info

    Input a tagged biniou value of type comment_info.

    val comment_info_of_string : ?pos:int -> string -> comment_info

    Deserialize a biniou value of type comment_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val specifier_kind_tag : Bi_io.node_tag

    Tag used by the writers for type specifier_kind. Readers may support more than just this tag.

    val write_untagged_specifier_kind : Bi_outbuf.t -> specifier_kind -> unit

    Output an untagged biniou value of type specifier_kind.

    val write_specifier_kind : Bi_outbuf.t -> specifier_kind -> unit

    Output a biniou value of type specifier_kind.

    val string_of_specifier_kind : ?len:int -> specifier_kind -> string

    Serialize a value of type specifier_kind into a biniou string.

    val get_specifier_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> specifier_kind

    Return a function that reads an untagged biniou value of type specifier_kind.

    val read_specifier_kind : Bi_inbuf.t -> specifier_kind

    Input a tagged biniou value of type specifier_kind.

    val specifier_kind_of_string : ?pos:int -> string -> specifier_kind

    Deserialize a biniou value of type specifier_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type stmt_info. Readers may support more than just this tag.

    val write_untagged_stmt_info : Bi_outbuf.t -> stmt_info -> unit

    Output an untagged biniou value of type stmt_info.

    val write_stmt_info : Bi_outbuf.t -> stmt_info -> unit

    Output a biniou value of type stmt_info.

    val string_of_stmt_info : ?len:int -> stmt_info -> string

    Serialize a value of type stmt_info into a biniou string.

    val get_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> stmt_info

    Return a function that reads an untagged biniou value of type stmt_info.

    val read_stmt_info : Bi_inbuf.t -> stmt_info

    Input a tagged biniou value of type stmt_info.

    val stmt_info_of_string : ?pos:int -> string -> stmt_info

    Deserialize a biniou value of type stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val tag_kind_tag : Bi_io.node_tag

    Tag used by the writers for type tag_kind. Readers may support more than just this tag.

    val write_untagged_tag_kind : Bi_outbuf.t -> tag_kind -> unit

    Output an untagged biniou value of type tag_kind.

    val write_tag_kind : Bi_outbuf.t -> tag_kind -> unit

    Output a biniou value of type tag_kind.

    val string_of_tag_kind : ?len:int -> tag_kind -> string

    Serialize a value of type tag_kind into a biniou string.

    val get_tag_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> tag_kind

    Return a function that reads an untagged biniou value of type tag_kind.

    val read_tag_kind : Bi_inbuf.t -> tag_kind

    Input a tagged biniou value of type tag_kind.

    val tag_kind_of_string : ?pos:int -> string -> tag_kind

    Deserialize a biniou value of type tag_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_ptr_tag : Bi_io.node_tag

    Tag used by the writers for type type_ptr. Readers may support more than just this tag.

    val write_untagged_type_ptr : Bi_outbuf.t -> type_ptr -> unit

    Output an untagged biniou value of type type_ptr.

    val write_type_ptr : Bi_outbuf.t -> type_ptr -> unit

    Output a biniou value of type type_ptr.

    val string_of_type_ptr : ?len:int -> type_ptr -> string

    Serialize a value of type type_ptr into a biniou string.

    val get_type_ptr_reader : Bi_io.node_tag -> Bi_inbuf.t -> type_ptr

    Return a function that reads an untagged biniou value of type type_ptr.

    val read_type_ptr : Bi_inbuf.t -> type_ptr

    Input a tagged biniou value of type type_ptr.

    val type_ptr_of_string : ?pos:int -> string -> type_ptr

    Deserialize a biniou value of type type_ptr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val qual_type_tag : Bi_io.node_tag

    Tag used by the writers for type qual_type. Readers may support more than just this tag.

    val write_untagged_qual_type : Bi_outbuf.t -> qual_type -> unit

    Output an untagged biniou value of type qual_type.

    val write_qual_type : Bi_outbuf.t -> qual_type -> unit

    Output a biniou value of type qual_type.

    val string_of_qual_type : ?len:int -> qual_type -> string

    Serialize a value of type qual_type into a biniou string.

    val get_qual_type_reader : Bi_io.node_tag -> Bi_inbuf.t -> qual_type

    Return a function that reads an untagged biniou value of type qual_type.

    val read_qual_type : Bi_inbuf.t -> qual_type

    Input a tagged biniou value of type qual_type.

    val qual_type_of_string : ?pos:int -> string -> qual_type

    Deserialize a biniou value of type qual_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val array_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type array_type_info. Readers may support more than just this tag.

    val write_untagged_array_type_info : Bi_outbuf.t -> array_type_info -> unit

    Output an untagged biniou value of type array_type_info.

    val write_array_type_info : Bi_outbuf.t -> array_type_info -> unit

    Output a biniou value of type array_type_info.

    val string_of_array_type_info : ?len:int -> array_type_info -> string

    Serialize a value of type array_type_info into a biniou string.

    val get_array_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - array_type_info

    Return a function that reads an untagged biniou value of type array_type_info.

    val read_array_type_info : Bi_inbuf.t -> array_type_info

    Input a tagged biniou value of type array_type_info.

    val array_type_info_of_string : ?pos:int -> string -> array_type_info

    Deserialize a biniou value of type array_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val compound_assign_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type compound_assign_operator_info. Readers may support more than just this tag.

    val write_untagged_compound_assign_operator_info : + array_type_info

    Return a function that reads an untagged biniou value of type array_type_info.

    val read_array_type_info : Bi_inbuf.t -> array_type_info

    Input a tagged biniou value of type array_type_info.

    val array_type_info_of_string : ?pos:int -> string -> array_type_info

    Deserialize a biniou value of type array_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val compound_assign_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type compound_assign_operator_info. Readers may support more than just this tag.

    val write_untagged_compound_assign_operator_info : Bi_outbuf.t -> compound_assign_operator_info -> unit

    Output an untagged biniou value of type compound_assign_operator_info.

    val write_compound_assign_operator_info : Bi_outbuf.t -> compound_assign_operator_info -> unit

    Output a biniou value of type compound_assign_operator_info.

    val string_of_compound_assign_operator_info : - ?len:int -> + ?len:int -> compound_assign_operator_info -> string

    Serialize a value of type compound_assign_operator_info into a biniou string.

    val get_compound_assign_operator_info_reader : Bi_io.node_tag -> @@ -541,28 +541,28 @@ compound_assign_operator_info

    Return a function that reads an untagged biniou value of type compound_assign_operator_info.

    val read_compound_assign_operator_info : Bi_inbuf.t -> compound_assign_operator_info

    Input a tagged biniou value of type compound_assign_operator_info.

    val compound_assign_operator_info_of_string : - ?pos:int -> + ?pos:int -> string -> compound_assign_operator_info

    Deserialize a biniou value of type compound_assign_operator_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_delete_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_delete_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_delete_expr_info : Bi_outbuf.t -> cxx_delete_expr_info -> - unit

    Output an untagged biniou value of type cxx_delete_expr_info.

    val write_cxx_delete_expr_info : Bi_outbuf.t -> cxx_delete_expr_info -> unit

    Output a biniou value of type cxx_delete_expr_info.

    val string_of_cxx_delete_expr_info : ?len:int -> cxx_delete_expr_info -> string

    Serialize a value of type cxx_delete_expr_info into a biniou string.

    val get_cxx_delete_expr_info_reader : + unit

    Output an untagged biniou value of type cxx_delete_expr_info.

    val write_cxx_delete_expr_info : Bi_outbuf.t -> cxx_delete_expr_info -> unit

    Output a biniou value of type cxx_delete_expr_info.

    val string_of_cxx_delete_expr_info : ?len:int -> cxx_delete_expr_info -> string

    Serialize a value of type cxx_delete_expr_info into a biniou string.

    val get_cxx_delete_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_delete_expr_info

    Return a function that reads an untagged biniou value of type cxx_delete_expr_info.

    val read_cxx_delete_expr_info : Bi_inbuf.t -> cxx_delete_expr_info

    Input a tagged biniou value of type cxx_delete_expr_info.

    val cxx_delete_expr_info_of_string : ?pos:int -> string -> cxx_delete_expr_info

    Deserialize a biniou value of type cxx_delete_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_ref_tag : Bi_io.node_tag

    Tag used by the writers for type decl_ref. Readers may support more than just this tag.

    val write_untagged_decl_ref : Bi_outbuf.t -> decl_ref -> unit

    Output an untagged biniou value of type decl_ref.

    val write_decl_ref : Bi_outbuf.t -> decl_ref -> unit

    Output a biniou value of type decl_ref.

    val string_of_decl_ref : ?len:int -> decl_ref -> string

    Serialize a value of type decl_ref into a biniou string.

    val get_decl_ref_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_ref

    Return a function that reads an untagged biniou value of type decl_ref.

    val read_decl_ref : Bi_inbuf.t -> decl_ref

    Input a tagged biniou value of type decl_ref.

    val decl_ref_of_string : ?pos:int -> string -> decl_ref

    Deserialize a biniou value of type decl_ref.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_construct_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_construct_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_construct_expr_info : + cxx_delete_expr_info

    Return a function that reads an untagged biniou value of type cxx_delete_expr_info.

    val read_cxx_delete_expr_info : Bi_inbuf.t -> cxx_delete_expr_info

    Input a tagged biniou value of type cxx_delete_expr_info.

    val cxx_delete_expr_info_of_string : ?pos:int -> string -> cxx_delete_expr_info

    Deserialize a biniou value of type cxx_delete_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_ref_tag : Bi_io.node_tag

    Tag used by the writers for type decl_ref. Readers may support more than just this tag.

    val write_untagged_decl_ref : Bi_outbuf.t -> decl_ref -> unit

    Output an untagged biniou value of type decl_ref.

    val write_decl_ref : Bi_outbuf.t -> decl_ref -> unit

    Output a biniou value of type decl_ref.

    val string_of_decl_ref : ?len:int -> decl_ref -> string

    Serialize a value of type decl_ref into a biniou string.

    val get_decl_ref_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_ref

    Return a function that reads an untagged biniou value of type decl_ref.

    val read_decl_ref : Bi_inbuf.t -> decl_ref

    Input a tagged biniou value of type decl_ref.

    val decl_ref_of_string : ?pos:int -> string -> decl_ref

    Deserialize a biniou value of type decl_ref.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_construct_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_construct_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_construct_expr_info : Bi_outbuf.t -> cxx_construct_expr_info -> unit

    Output an untagged biniou value of type cxx_construct_expr_info.

    val write_cxx_construct_expr_info : Bi_outbuf.t -> cxx_construct_expr_info -> unit

    Output a biniou value of type cxx_construct_expr_info.

    val string_of_cxx_construct_expr_info : - ?len:int -> + ?len:int -> cxx_construct_expr_info -> string

    Serialize a value of type cxx_construct_expr_info into a biniou string.

    val get_cxx_construct_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> cxx_construct_expr_info

    Return a function that reads an untagged biniou value of type cxx_construct_expr_info.

    val read_cxx_construct_expr_info : Bi_inbuf.t -> cxx_construct_expr_info

    Input a tagged biniou value of type cxx_construct_expr_info.

    val cxx_construct_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> cxx_construct_expr_info

    Deserialize a biniou value of type cxx_construct_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_ctor_initializer_subject_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_ctor_initializer_subject. Readers may support more than just this tag.

    val write_untagged_cxx_ctor_initializer_subject : Bi_outbuf.t -> @@ -571,7 +571,7 @@ Bi_outbuf.t -> cxx_ctor_initializer_subject -> unit

    Output a biniou value of type cxx_ctor_initializer_subject.

    val string_of_cxx_ctor_initializer_subject : - ?len:int -> + ?len:int -> cxx_ctor_initializer_subject -> string

    Serialize a value of type cxx_ctor_initializer_subject into a biniou string.

    val get_cxx_ctor_initializer_subject_reader : Bi_io.node_tag -> @@ -579,43 +579,43 @@ cxx_ctor_initializer_subject

    Return a function that reads an untagged biniou value of type cxx_ctor_initializer_subject.

    val read_cxx_ctor_initializer_subject : Bi_inbuf.t -> cxx_ctor_initializer_subject

    Input a tagged biniou value of type cxx_ctor_initializer_subject.

    val cxx_ctor_initializer_subject_of_string : - ?pos:int -> + ?pos:int -> string -> cxx_ctor_initializer_subject

    Deserialize a biniou value of type cxx_ctor_initializer_subject.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_ref_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type decl_ref_expr_info. Readers may support more than just this tag.

    val write_untagged_decl_ref_expr_info : Bi_outbuf.t -> decl_ref_expr_info -> - unit

    Output an untagged biniou value of type decl_ref_expr_info.

    val write_decl_ref_expr_info : Bi_outbuf.t -> decl_ref_expr_info -> unit

    Output a biniou value of type decl_ref_expr_info.

    val string_of_decl_ref_expr_info : ?len:int -> decl_ref_expr_info -> string

    Serialize a value of type decl_ref_expr_info into a biniou string.

    val get_decl_ref_expr_info_reader : + unit

    Output an untagged biniou value of type decl_ref_expr_info.

    val write_decl_ref_expr_info : Bi_outbuf.t -> decl_ref_expr_info -> unit

    Output a biniou value of type decl_ref_expr_info.

    val string_of_decl_ref_expr_info : ?len:int -> decl_ref_expr_info -> string

    Serialize a value of type decl_ref_expr_info into a biniou string.

    val get_decl_ref_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - decl_ref_expr_info

    Return a function that reads an untagged biniou value of type decl_ref_expr_info.

    val read_decl_ref_expr_info : Bi_inbuf.t -> decl_ref_expr_info

    Input a tagged biniou value of type decl_ref_expr_info.

    val decl_ref_expr_info_of_string : ?pos:int -> string -> decl_ref_expr_info

    Deserialize a biniou value of type decl_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val expr_with_cleanups_info_tag : Bi_io.node_tag

    Tag used by the writers for type expr_with_cleanups_info. Readers may support more than just this tag.

    val write_untagged_expr_with_cleanups_info : + decl_ref_expr_info

    Return a function that reads an untagged biniou value of type decl_ref_expr_info.

    val read_decl_ref_expr_info : Bi_inbuf.t -> decl_ref_expr_info

    Input a tagged biniou value of type decl_ref_expr_info.

    val decl_ref_expr_info_of_string : ?pos:int -> string -> decl_ref_expr_info

    Deserialize a biniou value of type decl_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val expr_with_cleanups_info_tag : Bi_io.node_tag

    Tag used by the writers for type expr_with_cleanups_info. Readers may support more than just this tag.

    val write_untagged_expr_with_cleanups_info : Bi_outbuf.t -> expr_with_cleanups_info -> unit

    Output an untagged biniou value of type expr_with_cleanups_info.

    val write_expr_with_cleanups_info : Bi_outbuf.t -> expr_with_cleanups_info -> unit

    Output a biniou value of type expr_with_cleanups_info.

    val string_of_expr_with_cleanups_info : - ?len:int -> + ?len:int -> expr_with_cleanups_info -> string

    Serialize a value of type expr_with_cleanups_info into a biniou string.

    val get_expr_with_cleanups_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> expr_with_cleanups_info

    Return a function that reads an untagged biniou value of type expr_with_cleanups_info.

    val read_expr_with_cleanups_info : Bi_inbuf.t -> expr_with_cleanups_info

    Input a tagged biniou value of type expr_with_cleanups_info.

    val expr_with_cleanups_info_of_string : - ?pos:int -> + ?pos:int -> string -> expr_with_cleanups_info

    Deserialize a biniou value of type expr_with_cleanups_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val function_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type function_type_info. Readers may support more than just this tag.

    val write_untagged_function_type_info : Bi_outbuf.t -> function_type_info -> - unit

    Output an untagged biniou value of type function_type_info.

    val write_function_type_info : Bi_outbuf.t -> function_type_info -> unit

    Output a biniou value of type function_type_info.

    val string_of_function_type_info : ?len:int -> function_type_info -> string

    Serialize a value of type function_type_info into a biniou string.

    val get_function_type_info_reader : + unit

    Output an untagged biniou value of type function_type_info.

    val write_function_type_info : Bi_outbuf.t -> function_type_info -> unit

    Output a biniou value of type function_type_info.

    val string_of_function_type_info : ?len:int -> function_type_info -> string

    Serialize a value of type function_type_info into a biniou string.

    val get_function_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - function_type_info

    Return a function that reads an untagged biniou value of type function_type_info.

    val read_function_type_info : Bi_inbuf.t -> function_type_info

    Input a tagged biniou value of type function_type_info.

    val function_type_info_of_string : ?pos:int -> string -> function_type_info

    Deserialize a biniou value of type function_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val materialize_temporary_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type materialize_temporary_expr_info. Readers may support more than just this tag.

    val write_untagged_materialize_temporary_expr_info : + function_type_info

    Return a function that reads an untagged biniou value of type function_type_info.

    val read_function_type_info : Bi_inbuf.t -> function_type_info

    Input a tagged biniou value of type function_type_info.

    val function_type_info_of_string : ?pos:int -> string -> function_type_info

    Deserialize a biniou value of type function_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val materialize_temporary_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type materialize_temporary_expr_info. Readers may support more than just this tag.

    val write_untagged_materialize_temporary_expr_info : Bi_outbuf.t -> materialize_temporary_expr_info -> unit

    Output an untagged biniou value of type materialize_temporary_expr_info.

    val write_materialize_temporary_expr_info : Bi_outbuf.t -> materialize_temporary_expr_info -> unit

    Output a biniou value of type materialize_temporary_expr_info.

    val string_of_materialize_temporary_expr_info : - ?len:int -> + ?len:int -> materialize_temporary_expr_info -> string

    Serialize a value of type materialize_temporary_expr_info into a biniou string.

    val get_materialize_temporary_expr_info_reader : Bi_io.node_tag -> @@ -623,31 +623,31 @@ materialize_temporary_expr_info

    Return a function that reads an untagged biniou value of type materialize_temporary_expr_info.

    val read_materialize_temporary_expr_info : Bi_inbuf.t -> materialize_temporary_expr_info

    Input a tagged biniou value of type materialize_temporary_expr_info.

    val materialize_temporary_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - materialize_temporary_expr_info

    Deserialize a biniou value of type materialize_temporary_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val member_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type member_expr_info. Readers may support more than just this tag.

    val write_untagged_member_expr_info : Bi_outbuf.t -> member_expr_info -> unit

    Output an untagged biniou value of type member_expr_info.

    val write_member_expr_info : Bi_outbuf.t -> member_expr_info -> unit

    Output a biniou value of type member_expr_info.

    val string_of_member_expr_info : ?len:int -> member_expr_info -> string

    Serialize a value of type member_expr_info into a biniou string.

    val get_member_expr_info_reader : + materialize_temporary_expr_info

    Deserialize a biniou value of type materialize_temporary_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val member_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type member_expr_info. Readers may support more than just this tag.

    val write_untagged_member_expr_info : Bi_outbuf.t -> member_expr_info -> unit

    Output an untagged biniou value of type member_expr_info.

    val write_member_expr_info : Bi_outbuf.t -> member_expr_info -> unit

    Output a biniou value of type member_expr_info.

    val string_of_member_expr_info : ?len:int -> member_expr_info -> string

    Serialize a value of type member_expr_info into a biniou string.

    val get_member_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - member_expr_info

    Return a function that reads an untagged biniou value of type member_expr_info.

    val read_member_expr_info : Bi_inbuf.t -> member_expr_info

    Input a tagged biniou value of type member_expr_info.

    val member_expr_info_of_string : ?pos:int -> string -> member_expr_info

    Deserialize a biniou value of type member_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val namespace_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type namespace_decl_info. Readers may support more than just this tag.

    val write_untagged_namespace_decl_info : + member_expr_info

    Return a function that reads an untagged biniou value of type member_expr_info.

    val read_member_expr_info : Bi_inbuf.t -> member_expr_info

    Input a tagged biniou value of type member_expr_info.

    val member_expr_info_of_string : ?pos:int -> string -> member_expr_info

    Deserialize a biniou value of type member_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val namespace_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type namespace_decl_info. Readers may support more than just this tag.

    val write_untagged_namespace_decl_info : Bi_outbuf.t -> namespace_decl_info -> - unit

    Output an untagged biniou value of type namespace_decl_info.

    val write_namespace_decl_info : Bi_outbuf.t -> namespace_decl_info -> unit

    Output a biniou value of type namespace_decl_info.

    val string_of_namespace_decl_info : ?len:int -> namespace_decl_info -> string

    Serialize a value of type namespace_decl_info into a biniou string.

    val get_namespace_decl_info_reader : + unit

    Output an untagged biniou value of type namespace_decl_info.

    val write_namespace_decl_info : Bi_outbuf.t -> namespace_decl_info -> unit

    Output a biniou value of type namespace_decl_info.

    val string_of_namespace_decl_info : ?len:int -> namespace_decl_info -> string

    Serialize a value of type namespace_decl_info into a biniou string.

    val get_namespace_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - namespace_decl_info

    Return a function that reads an untagged biniou value of type namespace_decl_info.

    val read_namespace_decl_info : Bi_inbuf.t -> namespace_decl_info

    Input a tagged biniou value of type namespace_decl_info.

    val namespace_decl_info_of_string : ?pos:int -> string -> namespace_decl_info

    Deserialize a biniou value of type namespace_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val nested_name_specifier_loc_tag : Bi_io.node_tag

    Tag used by the writers for type nested_name_specifier_loc. Readers may support more than just this tag.

    val write_untagged_nested_name_specifier_loc : + namespace_decl_info

    Return a function that reads an untagged biniou value of type namespace_decl_info.

    val read_namespace_decl_info : Bi_inbuf.t -> namespace_decl_info

    Input a tagged biniou value of type namespace_decl_info.

    val namespace_decl_info_of_string : ?pos:int -> string -> namespace_decl_info

    Deserialize a biniou value of type namespace_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val nested_name_specifier_loc_tag : Bi_io.node_tag

    Tag used by the writers for type nested_name_specifier_loc. Readers may support more than just this tag.

    val write_untagged_nested_name_specifier_loc : Bi_outbuf.t -> nested_name_specifier_loc -> unit

    Output an untagged biniou value of type nested_name_specifier_loc.

    val write_nested_name_specifier_loc : Bi_outbuf.t -> nested_name_specifier_loc -> unit

    Output a biniou value of type nested_name_specifier_loc.

    val string_of_nested_name_specifier_loc : - ?len:int -> + ?len:int -> nested_name_specifier_loc -> string

    Serialize a value of type nested_name_specifier_loc into a biniou string.

    val get_nested_name_specifier_loc_reader : Bi_io.node_tag -> Bi_inbuf.t -> nested_name_specifier_loc

    Return a function that reads an untagged biniou value of type nested_name_specifier_loc.

    val read_nested_name_specifier_loc : Bi_inbuf.t -> nested_name_specifier_loc

    Input a tagged biniou value of type nested_name_specifier_loc.

    val nested_name_specifier_loc_of_string : - ?pos:int -> + ?pos:int -> string -> nested_name_specifier_loc

    Deserialize a biniou value of type nested_name_specifier_loc.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val namespace_alias_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type namespace_alias_decl_info. Readers may support more than just this tag.

    val write_untagged_namespace_alias_decl_info : Bi_outbuf.t -> @@ -656,13 +656,13 @@ Bi_outbuf.t -> namespace_alias_decl_info -> unit

    Output a biniou value of type namespace_alias_decl_info.

    val string_of_namespace_alias_decl_info : - ?len:int -> + ?len:int -> namespace_alias_decl_info -> string

    Serialize a value of type namespace_alias_decl_info into a biniou string.

    val get_namespace_alias_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> namespace_alias_decl_info

    Return a function that reads an untagged biniou value of type namespace_alias_decl_info.

    val read_namespace_alias_decl_info : Bi_inbuf.t -> namespace_alias_decl_info

    Input a tagged biniou value of type namespace_alias_decl_info.

    val namespace_alias_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> namespace_alias_decl_info

    Deserialize a biniou value of type namespace_alias_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_category_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_category_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_category_decl_info : Bi_outbuf.t -> @@ -671,13 +671,13 @@ Bi_outbuf.t -> obj_c_category_decl_info -> unit

    Output a biniou value of type obj_c_category_decl_info.

    val string_of_obj_c_category_decl_info : - ?len:int -> + ?len:int -> obj_c_category_decl_info -> string

    Serialize a value of type obj_c_category_decl_info into a biniou string.

    val get_obj_c_category_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_category_decl_info

    Return a function that reads an untagged biniou value of type obj_c_category_decl_info.

    val read_obj_c_category_decl_info : Bi_inbuf.t -> obj_c_category_decl_info

    Input a tagged biniou value of type obj_c_category_decl_info.

    val obj_c_category_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_category_decl_info

    Deserialize a biniou value of type obj_c_category_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_category_impl_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_category_impl_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_category_impl_decl_info : Bi_outbuf.t -> @@ -686,7 +686,7 @@ Bi_outbuf.t -> obj_c_category_impl_decl_info -> unit

    Output a biniou value of type obj_c_category_impl_decl_info.

    val string_of_obj_c_category_impl_decl_info : - ?len:int -> + ?len:int -> obj_c_category_impl_decl_info -> string

    Serialize a value of type obj_c_category_impl_decl_info into a biniou string.

    val get_obj_c_category_impl_decl_info_reader : Bi_io.node_tag -> @@ -694,7 +694,7 @@ obj_c_category_impl_decl_info

    Return a function that reads an untagged biniou value of type obj_c_category_impl_decl_info.

    val read_obj_c_category_impl_decl_info : Bi_inbuf.t -> obj_c_category_impl_decl_info

    Input a tagged biniou value of type obj_c_category_impl_decl_info.

    val obj_c_category_impl_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_category_impl_decl_info

    Deserialize a biniou value of type obj_c_category_impl_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_compatible_alias_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_compatible_alias_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_compatible_alias_decl_info : Bi_outbuf.t -> @@ -703,7 +703,7 @@ Bi_outbuf.t -> obj_c_compatible_alias_decl_info -> unit

    Output a biniou value of type obj_c_compatible_alias_decl_info.

    val string_of_obj_c_compatible_alias_decl_info : - ?len:int -> + ?len:int -> obj_c_compatible_alias_decl_info -> string

    Serialize a value of type obj_c_compatible_alias_decl_info into a biniou string.

    val get_obj_c_compatible_alias_decl_info_reader : Bi_io.node_tag -> @@ -711,7 +711,7 @@ obj_c_compatible_alias_decl_info

    Return a function that reads an untagged biniou value of type obj_c_compatible_alias_decl_info.

    val read_obj_c_compatible_alias_decl_info : Bi_inbuf.t -> obj_c_compatible_alias_decl_info

    Input a tagged biniou value of type obj_c_compatible_alias_decl_info.

    val obj_c_compatible_alias_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_compatible_alias_decl_info

    Deserialize a biniou value of type obj_c_compatible_alias_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_interface_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_interface_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_interface_decl_info : Bi_outbuf.t -> @@ -720,13 +720,13 @@ Bi_outbuf.t -> obj_c_interface_decl_info -> unit

    Output a biniou value of type obj_c_interface_decl_info.

    val string_of_obj_c_interface_decl_info : - ?len:int -> + ?len:int -> obj_c_interface_decl_info -> string

    Serialize a value of type obj_c_interface_decl_info into a biniou string.

    val get_obj_c_interface_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_interface_decl_info

    Return a function that reads an untagged biniou value of type obj_c_interface_decl_info.

    val read_obj_c_interface_decl_info : Bi_inbuf.t -> obj_c_interface_decl_info

    Input a tagged biniou value of type obj_c_interface_decl_info.

    val obj_c_interface_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_interface_decl_info

    Deserialize a biniou value of type obj_c_interface_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_ivar_ref_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_ivar_ref_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_ivar_ref_expr_info : Bi_outbuf.t -> @@ -735,13 +735,13 @@ Bi_outbuf.t -> obj_c_ivar_ref_expr_info -> unit

    Output a biniou value of type obj_c_ivar_ref_expr_info.

    val string_of_obj_c_ivar_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_ivar_ref_expr_info -> string

    Serialize a value of type obj_c_ivar_ref_expr_info into a biniou string.

    val get_obj_c_ivar_ref_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_ivar_ref_expr_info

    Return a function that reads an untagged biniou value of type obj_c_ivar_ref_expr_info.

    val read_obj_c_ivar_ref_expr_info : Bi_inbuf.t -> obj_c_ivar_ref_expr_info

    Input a tagged biniou value of type obj_c_ivar_ref_expr_info.

    val obj_c_ivar_ref_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_ivar_ref_expr_info

    Deserialize a biniou value of type obj_c_ivar_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_property_decl_info : Bi_outbuf.t -> @@ -750,13 +750,13 @@ Bi_outbuf.t -> obj_c_property_decl_info -> unit

    Output a biniou value of type obj_c_property_decl_info.

    val string_of_obj_c_property_decl_info : - ?len:int -> + ?len:int -> obj_c_property_decl_info -> string

    Serialize a value of type obj_c_property_decl_info into a biniou string.

    val get_obj_c_property_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_property_decl_info

    Return a function that reads an untagged biniou value of type obj_c_property_decl_info.

    val read_obj_c_property_decl_info : Bi_inbuf.t -> obj_c_property_decl_info

    Input a tagged biniou value of type obj_c_property_decl_info.

    val obj_c_property_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_property_decl_info

    Deserialize a biniou value of type obj_c_property_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_impl_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_impl_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_property_impl_decl_info : Bi_outbuf.t -> @@ -765,7 +765,7 @@ Bi_outbuf.t -> obj_c_property_impl_decl_info -> unit

    Output a biniou value of type obj_c_property_impl_decl_info.

    val string_of_obj_c_property_impl_decl_info : - ?len:int -> + ?len:int -> obj_c_property_impl_decl_info -> string

    Serialize a value of type obj_c_property_impl_decl_info into a biniou string.

    val get_obj_c_property_impl_decl_info_reader : Bi_io.node_tag -> @@ -773,7 +773,7 @@ obj_c_property_impl_decl_info

    Return a function that reads an untagged biniou value of type obj_c_property_impl_decl_info.

    val read_obj_c_property_impl_decl_info : Bi_inbuf.t -> obj_c_property_impl_decl_info

    Input a tagged biniou value of type obj_c_property_impl_decl_info.

    val obj_c_property_impl_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_property_impl_decl_info

    Deserialize a biniou value of type obj_c_property_impl_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_protocol_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_protocol_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_protocol_decl_info : Bi_outbuf.t -> @@ -782,58 +782,58 @@ Bi_outbuf.t -> obj_c_protocol_decl_info -> unit

    Output a biniou value of type obj_c_protocol_decl_info.

    val string_of_obj_c_protocol_decl_info : - ?len:int -> + ?len:int -> obj_c_protocol_decl_info -> string

    Serialize a value of type obj_c_protocol_decl_info into a biniou string.

    val get_obj_c_protocol_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_protocol_decl_info

    Return a function that reads an untagged biniou value of type obj_c_protocol_decl_info.

    val read_obj_c_protocol_decl_info : Bi_inbuf.t -> obj_c_protocol_decl_info

    Input a tagged biniou value of type obj_c_protocol_decl_info.

    val obj_c_protocol_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_protocol_decl_info

    Deserialize a biniou value of type obj_c_protocol_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val objc_encode_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type objc_encode_expr_info. Readers may support more than just this tag.

    val write_untagged_objc_encode_expr_info : Bi_outbuf.t -> objc_encode_expr_info -> unit

    Output an untagged biniou value of type objc_encode_expr_info.

    val write_objc_encode_expr_info : Bi_outbuf.t -> objc_encode_expr_info -> unit

    Output a biniou value of type objc_encode_expr_info.

    val string_of_objc_encode_expr_info : - ?len:int -> + ?len:int -> objc_encode_expr_info -> string

    Serialize a value of type objc_encode_expr_info into a biniou string.

    val get_objc_encode_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> objc_encode_expr_info

    Return a function that reads an untagged biniou value of type objc_encode_expr_info.

    val read_objc_encode_expr_info : Bi_inbuf.t -> objc_encode_expr_info

    Input a tagged biniou value of type objc_encode_expr_info.

    val objc_encode_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> objc_encode_expr_info

    Deserialize a biniou value of type objc_encode_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val objc_object_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type objc_object_type_info. Readers may support more than just this tag.

    val write_untagged_objc_object_type_info : Bi_outbuf.t -> objc_object_type_info -> unit

    Output an untagged biniou value of type objc_object_type_info.

    val write_objc_object_type_info : Bi_outbuf.t -> objc_object_type_info -> unit

    Output a biniou value of type objc_object_type_info.

    val string_of_objc_object_type_info : - ?len:int -> + ?len:int -> objc_object_type_info -> string

    Serialize a value of type objc_object_type_info into a biniou string.

    val get_objc_object_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> objc_object_type_info

    Return a function that reads an untagged biniou value of type objc_object_type_info.

    val read_objc_object_type_info : Bi_inbuf.t -> objc_object_type_info

    Input a tagged biniou value of type objc_object_type_info.

    val objc_object_type_info_of_string : - ?pos:int -> + ?pos:int -> string -> objc_object_type_info

    Deserialize a biniou value of type objc_object_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val overload_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type overload_expr_info. Readers may support more than just this tag.

    val write_untagged_overload_expr_info : Bi_outbuf.t -> overload_expr_info -> - unit

    Output an untagged biniou value of type overload_expr_info.

    val write_overload_expr_info : Bi_outbuf.t -> overload_expr_info -> unit

    Output a biniou value of type overload_expr_info.

    val string_of_overload_expr_info : ?len:int -> overload_expr_info -> string

    Serialize a value of type overload_expr_info into a biniou string.

    val get_overload_expr_info_reader : + unit

    Output an untagged biniou value of type overload_expr_info.

    val write_overload_expr_info : Bi_outbuf.t -> overload_expr_info -> unit

    Output a biniou value of type overload_expr_info.

    val string_of_overload_expr_info : ?len:int -> overload_expr_info -> string

    Serialize a value of type overload_expr_info into a biniou string.

    val get_overload_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - overload_expr_info

    Return a function that reads an untagged biniou value of type overload_expr_info.

    val read_overload_expr_info : Bi_inbuf.t -> overload_expr_info

    Input a tagged biniou value of type overload_expr_info.

    val overload_expr_info_of_string : ?pos:int -> string -> overload_expr_info

    Deserialize a biniou value of type overload_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val params_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type params_type_info. Readers may support more than just this tag.

    val write_untagged_params_type_info : Bi_outbuf.t -> params_type_info -> unit

    Output an untagged biniou value of type params_type_info.

    val write_params_type_info : Bi_outbuf.t -> params_type_info -> unit

    Output a biniou value of type params_type_info.

    val string_of_params_type_info : ?len:int -> params_type_info -> string

    Serialize a value of type params_type_info into a biniou string.

    val get_params_type_info_reader : + overload_expr_info

    Return a function that reads an untagged biniou value of type overload_expr_info.

    val read_overload_expr_info : Bi_inbuf.t -> overload_expr_info

    Input a tagged biniou value of type overload_expr_info.

    val overload_expr_info_of_string : ?pos:int -> string -> overload_expr_info

    Deserialize a biniou value of type overload_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val params_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type params_type_info. Readers may support more than just this tag.

    val write_untagged_params_type_info : Bi_outbuf.t -> params_type_info -> unit

    Output an untagged biniou value of type params_type_info.

    val write_params_type_info : Bi_outbuf.t -> params_type_info -> unit

    Output a biniou value of type params_type_info.

    val string_of_params_type_info : ?len:int -> params_type_info -> string

    Serialize a value of type params_type_info into a biniou string.

    val get_params_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - params_type_info

    Return a function that reads an untagged biniou value of type params_type_info.

    val read_params_type_info : Bi_inbuf.t -> params_type_info

    Input a tagged biniou value of type params_type_info.

    val params_type_info_of_string : ?pos:int -> string -> params_type_info

    Deserialize a biniou value of type params_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_ref_kind_tag : Bi_io.node_tag

    Tag used by the writers for type property_ref_kind. Readers may support more than just this tag.

    val write_untagged_property_ref_kind : Bi_outbuf.t -> property_ref_kind -> unit

    Output an untagged biniou value of type property_ref_kind.

    val write_property_ref_kind : Bi_outbuf.t -> property_ref_kind -> unit

    Output a biniou value of type property_ref_kind.

    val string_of_property_ref_kind : ?len:int -> property_ref_kind -> string

    Serialize a value of type property_ref_kind into a biniou string.

    val get_property_ref_kind_reader : + params_type_info

    Return a function that reads an untagged biniou value of type params_type_info.

    val read_params_type_info : Bi_inbuf.t -> params_type_info

    Input a tagged biniou value of type params_type_info.

    val params_type_info_of_string : ?pos:int -> string -> params_type_info

    Deserialize a biniou value of type params_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val property_ref_kind_tag : Bi_io.node_tag

    Tag used by the writers for type property_ref_kind. Readers may support more than just this tag.

    val write_untagged_property_ref_kind : Bi_outbuf.t -> property_ref_kind -> unit

    Output an untagged biniou value of type property_ref_kind.

    val write_property_ref_kind : Bi_outbuf.t -> property_ref_kind -> unit

    Output a biniou value of type property_ref_kind.

    val string_of_property_ref_kind : ?len:int -> property_ref_kind -> string

    Serialize a value of type property_ref_kind into a biniou string.

    val get_property_ref_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - property_ref_kind

    Return a function that reads an untagged biniou value of type property_ref_kind.

    val read_property_ref_kind : Bi_inbuf.t -> property_ref_kind

    Input a tagged biniou value of type property_ref_kind.

    val property_ref_kind_of_string : ?pos:int -> string -> property_ref_kind

    Deserialize a biniou value of type property_ref_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_ref_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_ref_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_property_ref_expr_info : + property_ref_kind

    Return a function that reads an untagged biniou value of type property_ref_kind.

    val read_property_ref_kind : Bi_inbuf.t -> property_ref_kind

    Input a tagged biniou value of type property_ref_kind.

    val property_ref_kind_of_string : ?pos:int -> string -> property_ref_kind

    Deserialize a biniou value of type property_ref_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_property_ref_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_property_ref_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_property_ref_expr_info : Bi_outbuf.t -> obj_c_property_ref_expr_info -> unit

    Output an untagged biniou value of type obj_c_property_ref_expr_info.

    val write_obj_c_property_ref_expr_info : Bi_outbuf.t -> obj_c_property_ref_expr_info -> unit

    Output a biniou value of type obj_c_property_ref_expr_info.

    val string_of_obj_c_property_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_property_ref_expr_info -> string

    Serialize a value of type obj_c_property_ref_expr_info into a biniou string.

    val get_obj_c_property_ref_expr_info_reader : Bi_io.node_tag -> @@ -841,46 +841,46 @@ obj_c_property_ref_expr_info

    Return a function that reads an untagged biniou value of type obj_c_property_ref_expr_info.

    val read_obj_c_property_ref_expr_info : Bi_inbuf.t -> obj_c_property_ref_expr_info

    Input a tagged biniou value of type obj_c_property_ref_expr_info.

    val obj_c_property_ref_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - obj_c_property_ref_expr_info

    Deserialize a biniou value of type obj_c_property_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val receiver_kind_tag : Bi_io.node_tag

    Tag used by the writers for type receiver_kind. Readers may support more than just this tag.

    val write_untagged_receiver_kind : Bi_outbuf.t -> receiver_kind -> unit

    Output an untagged biniou value of type receiver_kind.

    val write_receiver_kind : Bi_outbuf.t -> receiver_kind -> unit

    Output a biniou value of type receiver_kind.

    val string_of_receiver_kind : ?len:int -> receiver_kind -> string

    Serialize a value of type receiver_kind into a biniou string.

    val get_receiver_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> receiver_kind

    Return a function that reads an untagged biniou value of type receiver_kind.

    val read_receiver_kind : Bi_inbuf.t -> receiver_kind

    Input a tagged biniou value of type receiver_kind.

    val receiver_kind_of_string : ?pos:int -> string -> receiver_kind

    Deserialize a biniou value of type receiver_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_message_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_message_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_message_expr_info : + obj_c_property_ref_expr_info

    Deserialize a biniou value of type obj_c_property_ref_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val receiver_kind_tag : Bi_io.node_tag

    Tag used by the writers for type receiver_kind. Readers may support more than just this tag.

    val write_untagged_receiver_kind : Bi_outbuf.t -> receiver_kind -> unit

    Output an untagged biniou value of type receiver_kind.

    val write_receiver_kind : Bi_outbuf.t -> receiver_kind -> unit

    Output a biniou value of type receiver_kind.

    val string_of_receiver_kind : ?len:int -> receiver_kind -> string

    Serialize a value of type receiver_kind into a biniou string.

    val get_receiver_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> receiver_kind

    Return a function that reads an untagged biniou value of type receiver_kind.

    val read_receiver_kind : Bi_inbuf.t -> receiver_kind

    Input a tagged biniou value of type receiver_kind.

    val receiver_kind_of_string : ?pos:int -> string -> receiver_kind

    Deserialize a biniou value of type receiver_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_message_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_message_expr_info. Readers may support more than just this tag.

    val write_untagged_obj_c_message_expr_info : Bi_outbuf.t -> obj_c_message_expr_info -> unit

    Output an untagged biniou value of type obj_c_message_expr_info.

    val write_obj_c_message_expr_info : Bi_outbuf.t -> obj_c_message_expr_info -> unit

    Output a biniou value of type obj_c_message_expr_info.

    val string_of_obj_c_message_expr_info : - ?len:int -> + ?len:int -> obj_c_message_expr_info -> string

    Serialize a value of type obj_c_message_expr_info into a biniou string.

    val get_obj_c_message_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_message_expr_info

    Return a function that reads an untagged biniou value of type obj_c_message_expr_info.

    val read_obj_c_message_expr_info : Bi_inbuf.t -> obj_c_message_expr_info

    Input a tagged biniou value of type obj_c_message_expr_info.

    val obj_c_message_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - obj_c_message_expr_info

    Deserialize a biniou value of type obj_c_message_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_info_tag : Bi_io.node_tag

    Tag used by the writers for type type_info. Readers may support more than just this tag.

    val write_untagged_type_info : Bi_outbuf.t -> type_info -> unit

    Output an untagged biniou value of type type_info.

    val write_type_info : Bi_outbuf.t -> type_info -> unit

    Output a biniou value of type type_info.

    val string_of_type_info : ?len:int -> type_info -> string

    Serialize a value of type type_info into a biniou string.

    val get_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> type_info

    Return a function that reads an untagged biniou value of type type_info.

    val read_type_info : Bi_inbuf.t -> type_info

    Input a tagged biniou value of type type_info.

    val type_info_of_string : ?pos:int -> string -> type_info

    Deserialize a biniou value of type type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_trait_info_tag : Bi_io.node_tag

    Tag used by the writers for type type_trait_info. Readers may support more than just this tag.

    val write_untagged_type_trait_info : Bi_outbuf.t -> type_trait_info -> unit

    Output an untagged biniou value of type type_trait_info.

    val write_type_trait_info : Bi_outbuf.t -> type_trait_info -> unit

    Output a biniou value of type type_trait_info.

    val string_of_type_trait_info : ?len:int -> type_trait_info -> string

    Serialize a value of type type_trait_info into a biniou string.

    val get_type_trait_info_reader : + obj_c_message_expr_info

    Deserialize a biniou value of type obj_c_message_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_info_tag : Bi_io.node_tag

    Tag used by the writers for type type_info. Readers may support more than just this tag.

    val write_untagged_type_info : Bi_outbuf.t -> type_info -> unit

    Output an untagged biniou value of type type_info.

    val write_type_info : Bi_outbuf.t -> type_info -> unit

    Output a biniou value of type type_info.

    val string_of_type_info : ?len:int -> type_info -> string

    Serialize a value of type type_info into a biniou string.

    val get_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> type_info

    Return a function that reads an untagged biniou value of type type_info.

    val read_type_info : Bi_inbuf.t -> type_info

    Input a tagged biniou value of type type_info.

    val type_info_of_string : ?pos:int -> string -> type_info

    Deserialize a biniou value of type type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val type_trait_info_tag : Bi_io.node_tag

    Tag used by the writers for type type_trait_info. Readers may support more than just this tag.

    val write_untagged_type_trait_info : Bi_outbuf.t -> type_trait_info -> unit

    Output an untagged biniou value of type type_trait_info.

    val write_type_trait_info : Bi_outbuf.t -> type_trait_info -> unit

    Output a biniou value of type type_trait_info.

    val string_of_type_trait_info : ?len:int -> type_trait_info -> string

    Serialize a value of type type_trait_info into a biniou string.

    val get_type_trait_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - type_trait_info

    Return a function that reads an untagged biniou value of type type_trait_info.

    val read_type_trait_info : Bi_inbuf.t -> type_trait_info

    Input a tagged biniou value of type type_trait_info.

    val type_trait_info_of_string : ?pos:int -> string -> type_trait_info

    Deserialize a biniou value of type type_trait_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val typedef_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type typedef_decl_info. Readers may support more than just this tag.

    val write_untagged_typedef_decl_info : Bi_outbuf.t -> typedef_decl_info -> unit

    Output an untagged biniou value of type typedef_decl_info.

    val write_typedef_decl_info : Bi_outbuf.t -> typedef_decl_info -> unit

    Output a biniou value of type typedef_decl_info.

    val string_of_typedef_decl_info : ?len:int -> typedef_decl_info -> string

    Serialize a value of type typedef_decl_info into a biniou string.

    val get_typedef_decl_info_reader : + type_trait_info

    Return a function that reads an untagged biniou value of type type_trait_info.

    val read_type_trait_info : Bi_inbuf.t -> type_trait_info

    Input a tagged biniou value of type type_trait_info.

    val type_trait_info_of_string : ?pos:int -> string -> type_trait_info

    Deserialize a biniou value of type type_trait_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val typedef_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type typedef_decl_info. Readers may support more than just this tag.

    val write_untagged_typedef_decl_info : Bi_outbuf.t -> typedef_decl_info -> unit

    Output an untagged biniou value of type typedef_decl_info.

    val write_typedef_decl_info : Bi_outbuf.t -> typedef_decl_info -> unit

    Output a biniou value of type typedef_decl_info.

    val string_of_typedef_decl_info : ?len:int -> typedef_decl_info -> string

    Serialize a value of type typedef_decl_info into a biniou string.

    val get_typedef_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - typedef_decl_info

    Return a function that reads an untagged biniou value of type typedef_decl_info.

    val read_typedef_decl_info : Bi_inbuf.t -> typedef_decl_info

    Input a tagged biniou value of type typedef_decl_info.

    val typedef_decl_info_of_string : ?pos:int -> string -> typedef_decl_info

    Deserialize a biniou value of type typedef_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val typedef_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type typedef_type_info. Readers may support more than just this tag.

    val write_untagged_typedef_type_info : Bi_outbuf.t -> typedef_type_info -> unit

    Output an untagged biniou value of type typedef_type_info.

    val write_typedef_type_info : Bi_outbuf.t -> typedef_type_info -> unit

    Output a biniou value of type typedef_type_info.

    val string_of_typedef_type_info : ?len:int -> typedef_type_info -> string

    Serialize a value of type typedef_type_info into a biniou string.

    val get_typedef_type_info_reader : + typedef_decl_info

    Return a function that reads an untagged biniou value of type typedef_decl_info.

    val read_typedef_decl_info : Bi_inbuf.t -> typedef_decl_info

    Input a tagged biniou value of type typedef_decl_info.

    val typedef_decl_info_of_string : ?pos:int -> string -> typedef_decl_info

    Deserialize a biniou value of type typedef_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val typedef_type_info_tag : Bi_io.node_tag

    Tag used by the writers for type typedef_type_info. Readers may support more than just this tag.

    val write_untagged_typedef_type_info : Bi_outbuf.t -> typedef_type_info -> unit

    Output an untagged biniou value of type typedef_type_info.

    val write_typedef_type_info : Bi_outbuf.t -> typedef_type_info -> unit

    Output a biniou value of type typedef_type_info.

    val string_of_typedef_type_info : ?len:int -> typedef_type_info -> string

    Serialize a value of type typedef_type_info into a biniou string.

    val get_typedef_type_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - typedef_type_info

    Return a function that reads an untagged biniou value of type typedef_type_info.

    val read_typedef_type_info : Bi_inbuf.t -> typedef_type_info

    Input a tagged biniou value of type typedef_type_info.

    val typedef_type_info_of_string : ?pos:int -> string -> typedef_type_info

    Deserialize a biniou value of type typedef_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val c_type_tag : Bi_io.node_tag

    Tag used by the writers for type c_type. Readers may support more than just this tag.

    val write_untagged_c_type : Bi_outbuf.t -> c_type -> unit

    Output an untagged biniou value of type c_type.

    val write_c_type : Bi_outbuf.t -> c_type -> unit

    Output a biniou value of type c_type.

    val string_of_c_type : ?len:int -> c_type -> string

    Serialize a value of type c_type into a biniou string.

    val get_c_type_reader : Bi_io.node_tag -> Bi_inbuf.t -> c_type

    Return a function that reads an untagged biniou value of type c_type.

    val read_c_type : Bi_inbuf.t -> c_type

    Input a tagged biniou value of type c_type.

    val c_type_of_string : ?pos:int -> string -> c_type

    Deserialize a biniou value of type c_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val translation_unit_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type translation_unit_decl_info. Readers may support more than just this tag.

    val write_untagged_translation_unit_decl_info : + typedef_type_info

    Return a function that reads an untagged biniou value of type typedef_type_info.

    val read_typedef_type_info : Bi_inbuf.t -> typedef_type_info

    Input a tagged biniou value of type typedef_type_info.

    val typedef_type_info_of_string : ?pos:int -> string -> typedef_type_info

    Deserialize a biniou value of type typedef_type_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val c_type_tag : Bi_io.node_tag

    Tag used by the writers for type c_type. Readers may support more than just this tag.

    val write_untagged_c_type : Bi_outbuf.t -> c_type -> unit

    Output an untagged biniou value of type c_type.

    val write_c_type : Bi_outbuf.t -> c_type -> unit

    Output a biniou value of type c_type.

    val string_of_c_type : ?len:int -> c_type -> string

    Serialize a value of type c_type into a biniou string.

    val get_c_type_reader : Bi_io.node_tag -> Bi_inbuf.t -> c_type

    Return a function that reads an untagged biniou value of type c_type.

    val read_c_type : Bi_inbuf.t -> c_type

    Input a tagged biniou value of type c_type.

    val c_type_of_string : ?pos:int -> string -> c_type

    Deserialize a biniou value of type c_type.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val translation_unit_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type translation_unit_decl_info. Readers may support more than just this tag.

    val write_untagged_translation_unit_decl_info : Bi_outbuf.t -> translation_unit_decl_info -> unit

    Output an untagged biniou value of type translation_unit_decl_info.

    val write_translation_unit_decl_info : Bi_outbuf.t -> translation_unit_decl_info -> unit

    Output a biniou value of type translation_unit_decl_info.

    val string_of_translation_unit_decl_info : - ?len:int -> + ?len:int -> translation_unit_decl_info -> string

    Serialize a value of type translation_unit_decl_info into a biniou string.

    val get_translation_unit_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> translation_unit_decl_info

    Return a function that reads an untagged biniou value of type translation_unit_decl_info.

    val read_translation_unit_decl_info : Bi_inbuf.t -> translation_unit_decl_info

    Input a tagged biniou value of type translation_unit_decl_info.

    val translation_unit_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> translation_unit_decl_info

    Deserialize a biniou value of type translation_unit_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unary_expr_or_type_trait_kind_tag : Bi_io.node_tag

    Tag used by the writers for type unary_expr_or_type_trait_kind. Readers may support more than just this tag.

    val write_untagged_unary_expr_or_type_trait_kind : Bi_outbuf.t -> @@ -889,7 +889,7 @@ Bi_outbuf.t -> unary_expr_or_type_trait_kind -> unit

    Output a biniou value of type unary_expr_or_type_trait_kind.

    val string_of_unary_expr_or_type_trait_kind : - ?len:int -> + ?len:int -> unary_expr_or_type_trait_kind -> string

    Serialize a value of type unary_expr_or_type_trait_kind into a biniou string.

    val get_unary_expr_or_type_trait_kind_reader : Bi_io.node_tag -> @@ -897,7 +897,7 @@ unary_expr_or_type_trait_kind

    Return a function that reads an untagged biniou value of type unary_expr_or_type_trait_kind.

    val read_unary_expr_or_type_trait_kind : Bi_inbuf.t -> unary_expr_or_type_trait_kind

    Input a tagged biniou value of type unary_expr_or_type_trait_kind.

    val unary_expr_or_type_trait_kind_of_string : - ?pos:int -> + ?pos:int -> string -> unary_expr_or_type_trait_kind

    Deserialize a biniou value of type unary_expr_or_type_trait_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unary_expr_or_type_trait_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type unary_expr_or_type_trait_expr_info. Readers may support more than just this tag.

    val write_untagged_unary_expr_or_type_trait_expr_info : Bi_outbuf.t -> @@ -906,7 +906,7 @@ Bi_outbuf.t -> unary_expr_or_type_trait_expr_info -> unit

    Output a biniou value of type unary_expr_or_type_trait_expr_info.

    val string_of_unary_expr_or_type_trait_expr_info : - ?len:int -> + ?len:int -> unary_expr_or_type_trait_expr_info -> string

    Serialize a value of type unary_expr_or_type_trait_expr_info into a biniou string.

    val get_unary_expr_or_type_trait_expr_info_reader : Bi_io.node_tag -> @@ -914,28 +914,28 @@ unary_expr_or_type_trait_expr_info

    Return a function that reads an untagged biniou value of type unary_expr_or_type_trait_expr_info.

    val read_unary_expr_or_type_trait_expr_info : Bi_inbuf.t -> unary_expr_or_type_trait_expr_info

    Input a tagged biniou value of type unary_expr_or_type_trait_expr_info.

    val unary_expr_or_type_trait_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> unary_expr_or_type_trait_expr_info

    Deserialize a biniou value of type unary_expr_or_type_trait_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unary_operator_kind_tag : Bi_io.node_tag

    Tag used by the writers for type unary_operator_kind. Readers may support more than just this tag.

    val write_untagged_unary_operator_kind : Bi_outbuf.t -> unary_operator_kind -> - unit

    Output an untagged biniou value of type unary_operator_kind.

    val write_unary_operator_kind : Bi_outbuf.t -> unary_operator_kind -> unit

    Output a biniou value of type unary_operator_kind.

    val string_of_unary_operator_kind : ?len:int -> unary_operator_kind -> string

    Serialize a value of type unary_operator_kind into a biniou string.

    val get_unary_operator_kind_reader : + unit

    Output an untagged biniou value of type unary_operator_kind.

    val write_unary_operator_kind : Bi_outbuf.t -> unary_operator_kind -> unit

    Output a biniou value of type unary_operator_kind.

    val string_of_unary_operator_kind : ?len:int -> unary_operator_kind -> string

    Serialize a value of type unary_operator_kind into a biniou string.

    val get_unary_operator_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> - unary_operator_kind

    Return a function that reads an untagged biniou value of type unary_operator_kind.

    val read_unary_operator_kind : Bi_inbuf.t -> unary_operator_kind

    Input a tagged biniou value of type unary_operator_kind.

    val unary_operator_kind_of_string : ?pos:int -> string -> unary_operator_kind

    Deserialize a biniou value of type unary_operator_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unary_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type unary_operator_info. Readers may support more than just this tag.

    val write_untagged_unary_operator_info : + unary_operator_kind

    Return a function that reads an untagged biniou value of type unary_operator_kind.

    val read_unary_operator_kind : Bi_inbuf.t -> unary_operator_kind

    Input a tagged biniou value of type unary_operator_kind.

    val unary_operator_kind_of_string : ?pos:int -> string -> unary_operator_kind

    Deserialize a biniou value of type unary_operator_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unary_operator_info_tag : Bi_io.node_tag

    Tag used by the writers for type unary_operator_info. Readers may support more than just this tag.

    val write_untagged_unary_operator_info : Bi_outbuf.t -> unary_operator_info -> - unit

    Output an untagged biniou value of type unary_operator_info.

    val write_unary_operator_info : Bi_outbuf.t -> unary_operator_info -> unit

    Output a biniou value of type unary_operator_info.

    val string_of_unary_operator_info : ?len:int -> unary_operator_info -> string

    Serialize a value of type unary_operator_info into a biniou string.

    val get_unary_operator_info_reader : + unit

    Output an untagged biniou value of type unary_operator_info.

    val write_unary_operator_info : Bi_outbuf.t -> unary_operator_info -> unit

    Output a biniou value of type unary_operator_info.

    val string_of_unary_operator_info : ?len:int -> unary_operator_info -> string

    Serialize a value of type unary_operator_info into a biniou string.

    val get_unary_operator_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - unary_operator_info

    Return a function that reads an untagged biniou value of type unary_operator_info.

    val read_unary_operator_info : Bi_inbuf.t -> unary_operator_info

    Input a tagged biniou value of type unary_operator_info.

    val unary_operator_info_of_string : ?pos:int -> string -> unary_operator_info

    Deserialize a biniou value of type unary_operator_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unresolved_lookup_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type unresolved_lookup_expr_info. Readers may support more than just this tag.

    val write_untagged_unresolved_lookup_expr_info : + unary_operator_info

    Return a function that reads an untagged biniou value of type unary_operator_info.

    val read_unary_operator_info : Bi_inbuf.t -> unary_operator_info

    Input a tagged biniou value of type unary_operator_info.

    val unary_operator_info_of_string : ?pos:int -> string -> unary_operator_info

    Deserialize a biniou value of type unary_operator_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val unresolved_lookup_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type unresolved_lookup_expr_info. Readers may support more than just this tag.

    val write_untagged_unresolved_lookup_expr_info : Bi_outbuf.t -> unresolved_lookup_expr_info -> unit

    Output an untagged biniou value of type unresolved_lookup_expr_info.

    val write_unresolved_lookup_expr_info : Bi_outbuf.t -> unresolved_lookup_expr_info -> unit

    Output a biniou value of type unresolved_lookup_expr_info.

    val string_of_unresolved_lookup_expr_info : - ?len:int -> + ?len:int -> unresolved_lookup_expr_info -> string

    Serialize a value of type unresolved_lookup_expr_info into a biniou string.

    val get_unresolved_lookup_expr_info_reader : Bi_io.node_tag -> @@ -943,7 +943,7 @@ unresolved_lookup_expr_info

    Return a function that reads an untagged biniou value of type unresolved_lookup_expr_info.

    val read_unresolved_lookup_expr_info : Bi_inbuf.t -> unresolved_lookup_expr_info

    Input a tagged biniou value of type unresolved_lookup_expr_info.

    val unresolved_lookup_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> unresolved_lookup_expr_info

    Deserialize a biniou value of type unresolved_lookup_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val using_directive_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type using_directive_decl_info. Readers may support more than just this tag.

    val write_untagged_using_directive_decl_info : Bi_outbuf.t -> @@ -952,40 +952,40 @@ Bi_outbuf.t -> using_directive_decl_info -> unit

    Output a biniou value of type using_directive_decl_info.

    val string_of_using_directive_decl_info : - ?len:int -> + ?len:int -> using_directive_decl_info -> string

    Serialize a value of type using_directive_decl_info into a biniou string.

    val get_using_directive_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> using_directive_decl_info

    Return a function that reads an untagged biniou value of type using_directive_decl_info.

    val read_using_directive_decl_info : Bi_inbuf.t -> using_directive_decl_info

    Input a tagged biniou value of type using_directive_decl_info.

    val using_directive_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> - using_directive_decl_info

    Deserialize a biniou value of type using_directive_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val value_kind_tag : Bi_io.node_tag

    Tag used by the writers for type value_kind. Readers may support more than just this tag.

    val write_untagged_value_kind : Bi_outbuf.t -> value_kind -> unit

    Output an untagged biniou value of type value_kind.

    val write_value_kind : Bi_outbuf.t -> value_kind -> unit

    Output a biniou value of type value_kind.

    val string_of_value_kind : ?len:int -> value_kind -> string

    Serialize a value of type value_kind into a biniou string.

    val get_value_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> value_kind

    Return a function that reads an untagged biniou value of type value_kind.

    val read_value_kind : Bi_inbuf.t -> value_kind

    Input a tagged biniou value of type value_kind.

    val value_kind_of_string : ?pos:int -> string -> value_kind

    Deserialize a biniou value of type value_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type expr_info. Readers may support more than just this tag.

    val write_untagged_expr_info : Bi_outbuf.t -> expr_info -> unit

    Output an untagged biniou value of type expr_info.

    val write_expr_info : Bi_outbuf.t -> expr_info -> unit

    Output a biniou value of type expr_info.

    val string_of_expr_info : ?len:int -> expr_info -> string

    Serialize a value of type expr_info into a biniou string.

    val get_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> expr_info

    Return a function that reads an untagged biniou value of type expr_info.

    val read_expr_info : Bi_inbuf.t -> expr_info

    Input a tagged biniou value of type expr_info.

    val expr_info_of_string : ?pos:int -> string -> expr_info

    Deserialize a biniou value of type expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val version_tuple_tag : Bi_io.node_tag

    Tag used by the writers for type version_tuple. Readers may support more than just this tag.

    val write_untagged_version_tuple : Bi_outbuf.t -> version_tuple -> unit

    Output an untagged biniou value of type version_tuple.

    val write_version_tuple : Bi_outbuf.t -> version_tuple -> unit

    Output a biniou value of type version_tuple.

    val string_of_version_tuple : ?len:int -> version_tuple -> string

    Serialize a value of type version_tuple into a biniou string.

    val get_version_tuple_reader : Bi_io.node_tag -> Bi_inbuf.t -> version_tuple

    Return a function that reads an untagged biniou value of type version_tuple.

    val read_version_tuple : Bi_inbuf.t -> version_tuple

    Input a tagged biniou value of type version_tuple.

    val version_tuple_of_string : ?pos:int -> string -> version_tuple

    Deserialize a biniou value of type version_tuple.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val availability_attr_info_tag : Bi_io.node_tag

    Tag used by the writers for type availability_attr_info. Readers may support more than just this tag.

    val write_untagged_availability_attr_info : + using_directive_decl_info

    Deserialize a biniou value of type using_directive_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val value_kind_tag : Bi_io.node_tag

    Tag used by the writers for type value_kind. Readers may support more than just this tag.

    val write_untagged_value_kind : Bi_outbuf.t -> value_kind -> unit

    Output an untagged biniou value of type value_kind.

    val write_value_kind : Bi_outbuf.t -> value_kind -> unit

    Output a biniou value of type value_kind.

    val string_of_value_kind : ?len:int -> value_kind -> string

    Serialize a value of type value_kind into a biniou string.

    val get_value_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> value_kind

    Return a function that reads an untagged biniou value of type value_kind.

    val read_value_kind : Bi_inbuf.t -> value_kind

    Input a tagged biniou value of type value_kind.

    val value_kind_of_string : ?pos:int -> string -> value_kind

    Deserialize a biniou value of type value_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type expr_info. Readers may support more than just this tag.

    val write_untagged_expr_info : Bi_outbuf.t -> expr_info -> unit

    Output an untagged biniou value of type expr_info.

    val write_expr_info : Bi_outbuf.t -> expr_info -> unit

    Output a biniou value of type expr_info.

    val string_of_expr_info : ?len:int -> expr_info -> string

    Serialize a value of type expr_info into a biniou string.

    val get_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> expr_info

    Return a function that reads an untagged biniou value of type expr_info.

    val read_expr_info : Bi_inbuf.t -> expr_info

    Input a tagged biniou value of type expr_info.

    val expr_info_of_string : ?pos:int -> string -> expr_info

    Deserialize a biniou value of type expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val version_tuple_tag : Bi_io.node_tag

    Tag used by the writers for type version_tuple. Readers may support more than just this tag.

    val write_untagged_version_tuple : Bi_outbuf.t -> version_tuple -> unit

    Output an untagged biniou value of type version_tuple.

    val write_version_tuple : Bi_outbuf.t -> version_tuple -> unit

    Output a biniou value of type version_tuple.

    val string_of_version_tuple : ?len:int -> version_tuple -> string

    Serialize a value of type version_tuple into a biniou string.

    val get_version_tuple_reader : Bi_io.node_tag -> Bi_inbuf.t -> version_tuple

    Return a function that reads an untagged biniou value of type version_tuple.

    val read_version_tuple : Bi_inbuf.t -> version_tuple

    Input a tagged biniou value of type version_tuple.

    val version_tuple_of_string : ?pos:int -> string -> version_tuple

    Deserialize a biniou value of type version_tuple.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val availability_attr_info_tag : Bi_io.node_tag

    Tag used by the writers for type availability_attr_info. Readers may support more than just this tag.

    val write_untagged_availability_attr_info : Bi_outbuf.t -> availability_attr_info -> unit

    Output an untagged biniou value of type availability_attr_info.

    val write_availability_attr_info : Bi_outbuf.t -> availability_attr_info -> unit

    Output a biniou value of type availability_attr_info.

    val string_of_availability_attr_info : - ?len:int -> + ?len:int -> availability_attr_info -> string

    Serialize a value of type availability_attr_info into a biniou string.

    val get_availability_attr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> availability_attr_info

    Return a function that reads an untagged biniou value of type availability_attr_info.

    val read_availability_attr_info : Bi_inbuf.t -> availability_attr_info

    Input a tagged biniou value of type availability_attr_info.

    val availability_attr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - availability_attr_info

    Deserialize a biniou value of type availability_attr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val visibility_attr_tag : Bi_io.node_tag

    Tag used by the writers for type visibility_attr. Readers may support more than just this tag.

    val write_untagged_visibility_attr : Bi_outbuf.t -> visibility_attr -> unit

    Output an untagged biniou value of type visibility_attr.

    val write_visibility_attr : Bi_outbuf.t -> visibility_attr -> unit

    Output a biniou value of type visibility_attr.

    val string_of_visibility_attr : ?len:int -> visibility_attr -> string

    Serialize a value of type visibility_attr into a biniou string.

    val get_visibility_attr_reader : + availability_attr_info

    Deserialize a biniou value of type availability_attr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val visibility_attr_tag : Bi_io.node_tag

    Tag used by the writers for type visibility_attr. Readers may support more than just this tag.

    val write_untagged_visibility_attr : Bi_outbuf.t -> visibility_attr -> unit

    Output an untagged biniou value of type visibility_attr.

    val write_visibility_attr : Bi_outbuf.t -> visibility_attr -> unit

    Output a biniou value of type visibility_attr.

    val string_of_visibility_attr : ?len:int -> visibility_attr -> string

    Serialize a value of type visibility_attr into a biniou string.

    val get_visibility_attr_reader : Bi_io.node_tag -> Bi_inbuf.t -> - visibility_attr

    Return a function that reads an untagged biniou value of type visibility_attr.

    val read_visibility_attr : Bi_inbuf.t -> visibility_attr

    Input a tagged biniou value of type visibility_attr.

    val visibility_attr_of_string : ?pos:int -> string -> visibility_attr

    Deserialize a biniou value of type visibility_attr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_tag : Bi_io.node_tag

    Tag used by the writers for type attribute. Readers may support more than just this tag.

    val write_untagged_attribute : Bi_outbuf.t -> attribute -> unit

    Output an untagged biniou value of type attribute.

    val write_attribute : Bi_outbuf.t -> attribute -> unit

    Output a biniou value of type attribute.

    val string_of_attribute : ?len:int -> attribute -> string

    Serialize a value of type attribute into a biniou string.

    val get_attribute_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute

    Return a function that reads an untagged biniou value of type attribute.

    val read_attribute : Bi_inbuf.t -> attribute

    Input a tagged biniou value of type attribute.

    val attribute_of_string : ?pos:int -> string -> attribute

    Deserialize a biniou value of type attribute.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_instantiation_arg_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_instantiation_arg_info. Readers may support more than just this tag.

    val write_untagged_template_instantiation_arg_info : + visibility_attr

    Return a function that reads an untagged biniou value of type visibility_attr.

    val read_visibility_attr : Bi_inbuf.t -> visibility_attr

    Input a tagged biniou value of type visibility_attr.

    val visibility_attr_of_string : ?pos:int -> string -> visibility_attr

    Deserialize a biniou value of type visibility_attr.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val attribute_tag : Bi_io.node_tag

    Tag used by the writers for type attribute. Readers may support more than just this tag.

    val write_untagged_attribute : Bi_outbuf.t -> attribute -> unit

    Output an untagged biniou value of type attribute.

    val write_attribute : Bi_outbuf.t -> attribute -> unit

    Output a biniou value of type attribute.

    val string_of_attribute : ?len:int -> attribute -> string

    Serialize a value of type attribute into a biniou string.

    val get_attribute_reader : Bi_io.node_tag -> Bi_inbuf.t -> attribute

    Return a function that reads an untagged biniou value of type attribute.

    val read_attribute : Bi_inbuf.t -> attribute

    Input a tagged biniou value of type attribute.

    val attribute_of_string : ?pos:int -> string -> attribute

    Deserialize a biniou value of type attribute.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_instantiation_arg_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_instantiation_arg_info. Readers may support more than just this tag.

    val write_untagged_template_instantiation_arg_info : Bi_outbuf.t -> template_instantiation_arg_info -> unit

    Output an untagged biniou value of type template_instantiation_arg_info.

    val write_template_instantiation_arg_info : Bi_outbuf.t -> template_instantiation_arg_info -> unit

    Output a biniou value of type template_instantiation_arg_info.

    val string_of_template_instantiation_arg_info : - ?len:int -> + ?len:int -> template_instantiation_arg_info -> string

    Serialize a value of type template_instantiation_arg_info into a biniou string.

    val get_template_instantiation_arg_info_reader : Bi_io.node_tag -> @@ -993,16 +993,16 @@ template_instantiation_arg_info

    Return a function that reads an untagged biniou value of type template_instantiation_arg_info.

    val read_template_instantiation_arg_info : Bi_inbuf.t -> template_instantiation_arg_info

    Input a tagged biniou value of type template_instantiation_arg_info.

    val template_instantiation_arg_info_of_string : - ?pos:int -> + ?pos:int -> string -> - template_instantiation_arg_info

    Deserialize a biniou value of type template_instantiation_arg_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val comment_tag : Bi_io.node_tag

    Tag used by the writers for type comment. Readers may support more than just this tag.

    val write_untagged_comment : Bi_outbuf.t -> comment -> unit

    Output an untagged biniou value of type comment.

    val write_comment : Bi_outbuf.t -> comment -> unit

    Output a biniou value of type comment.

    val string_of_comment : ?len:int -> comment -> string

    Serialize a value of type comment into a biniou string.

    val get_comment_reader : Bi_io.node_tag -> Bi_inbuf.t -> comment

    Return a function that reads an untagged biniou value of type comment.

    val read_comment : Bi_inbuf.t -> comment

    Input a tagged biniou value of type comment.

    val comment_of_string : ?pos:int -> string -> comment

    Deserialize a biniou value of type comment.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_specialization_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_specialization_info. Readers may support more than just this tag.

    val write_untagged_template_specialization_info : + template_instantiation_arg_info

    Deserialize a biniou value of type template_instantiation_arg_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val comment_tag : Bi_io.node_tag

    Tag used by the writers for type comment. Readers may support more than just this tag.

    val write_untagged_comment : Bi_outbuf.t -> comment -> unit

    Output an untagged biniou value of type comment.

    val write_comment : Bi_outbuf.t -> comment -> unit

    Output a biniou value of type comment.

    val string_of_comment : ?len:int -> comment -> string

    Serialize a value of type comment into a biniou string.

    val get_comment_reader : Bi_io.node_tag -> Bi_inbuf.t -> comment

    Return a function that reads an untagged biniou value of type comment.

    val read_comment : Bi_inbuf.t -> comment

    Input a tagged biniou value of type comment.

    val comment_of_string : ?pos:int -> string -> comment

    Deserialize a biniou value of type comment.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_specialization_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_specialization_info. Readers may support more than just this tag.

    val write_untagged_template_specialization_info : Bi_outbuf.t -> template_specialization_info -> unit

    Output an untagged biniou value of type template_specialization_info.

    val write_template_specialization_info : Bi_outbuf.t -> template_specialization_info -> unit

    Output a biniou value of type template_specialization_info.

    val string_of_template_specialization_info : - ?len:int -> + ?len:int -> template_specialization_info -> string

    Serialize a value of type template_specialization_info into a biniou string.

    val get_template_specialization_info_reader : Bi_io.node_tag -> @@ -1010,142 +1010,142 @@ template_specialization_info

    Return a function that reads an untagged biniou value of type template_specialization_info.

    val read_template_specialization_info : Bi_inbuf.t -> template_specialization_info

    Input a tagged biniou value of type template_specialization_info.

    val template_specialization_info_of_string : - ?pos:int -> + ?pos:int -> string -> - template_specialization_info

    Deserialize a biniou value of type template_specialization_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type decl_info. Readers may support more than just this tag.

    val write_untagged_decl_info : Bi_outbuf.t -> decl_info -> unit

    Output an untagged biniou value of type decl_info.

    val write_decl_info : Bi_outbuf.t -> decl_info -> unit

    Output a biniou value of type decl_info.

    val string_of_decl_info : ?len:int -> decl_info -> string

    Serialize a value of type decl_info into a biniou string.

    val get_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_info

    Return a function that reads an untagged biniou value of type decl_info.

    val read_decl_info : Bi_inbuf.t -> decl_info

    Input a tagged biniou value of type decl_info.

    val decl_info_of_string : ?pos:int -> string -> decl_info

    Deserialize a biniou value of type decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val block_captured_variable_tag : Bi_io.node_tag

    Tag used by the writers for type block_captured_variable. Readers may support more than just this tag.

    val write_untagged_block_captured_variable : + template_specialization_info

    Deserialize a biniou value of type template_specialization_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type decl_info. Readers may support more than just this tag.

    val write_untagged_decl_info : Bi_outbuf.t -> decl_info -> unit

    Output an untagged biniou value of type decl_info.

    val write_decl_info : Bi_outbuf.t -> decl_info -> unit

    Output a biniou value of type decl_info.

    val string_of_decl_info : ?len:int -> decl_info -> string

    Serialize a value of type decl_info into a biniou string.

    val get_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl_info

    Return a function that reads an untagged biniou value of type decl_info.

    val read_decl_info : Bi_inbuf.t -> decl_info

    Input a tagged biniou value of type decl_info.

    val decl_info_of_string : ?pos:int -> string -> decl_info

    Deserialize a biniou value of type decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val block_captured_variable_tag : Bi_io.node_tag

    Tag used by the writers for type block_captured_variable. Readers may support more than just this tag.

    val write_untagged_block_captured_variable : Bi_outbuf.t -> block_captured_variable -> unit

    Output an untagged biniou value of type block_captured_variable.

    val write_block_captured_variable : Bi_outbuf.t -> block_captured_variable -> unit

    Output a biniou value of type block_captured_variable.

    val string_of_block_captured_variable : - ?len:int -> + ?len:int -> block_captured_variable -> string

    Serialize a value of type block_captured_variable into a biniou string.

    val get_block_captured_variable_reader : Bi_io.node_tag -> Bi_inbuf.t -> block_captured_variable

    Return a function that reads an untagged biniou value of type block_captured_variable.

    val read_block_captured_variable : Bi_inbuf.t -> block_captured_variable

    Input a tagged biniou value of type block_captured_variable.

    val block_captured_variable_of_string : - ?pos:int -> + ?pos:int -> string -> - block_captured_variable

    Deserialize a biniou value of type block_captured_variable.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val block_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type block_decl_info. Readers may support more than just this tag.

    val write_untagged_block_decl_info : Bi_outbuf.t -> block_decl_info -> unit

    Output an untagged biniou value of type block_decl_info.

    val write_block_decl_info : Bi_outbuf.t -> block_decl_info -> unit

    Output a biniou value of type block_decl_info.

    val string_of_block_decl_info : ?len:int -> block_decl_info -> string

    Serialize a value of type block_decl_info into a biniou string.

    val get_block_decl_info_reader : + block_captured_variable

    Deserialize a biniou value of type block_captured_variable.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val block_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type block_decl_info. Readers may support more than just this tag.

    val write_untagged_block_decl_info : Bi_outbuf.t -> block_decl_info -> unit

    Output an untagged biniou value of type block_decl_info.

    val write_block_decl_info : Bi_outbuf.t -> block_decl_info -> unit

    Output a biniou value of type block_decl_info.

    val string_of_block_decl_info : ?len:int -> block_decl_info -> string

    Serialize a value of type block_decl_info into a biniou string.

    val get_block_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - block_decl_info

    Return a function that reads an untagged biniou value of type block_decl_info.

    val read_block_decl_info : Bi_inbuf.t -> block_decl_info

    Input a tagged biniou value of type block_decl_info.

    val block_decl_info_of_string : ?pos:int -> string -> block_decl_info

    Deserialize a biniou value of type block_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val coreturn_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type coreturn_stmt_info. Readers may support more than just this tag.

    val write_untagged_coreturn_stmt_info : + block_decl_info

    Return a function that reads an untagged biniou value of type block_decl_info.

    val read_block_decl_info : Bi_inbuf.t -> block_decl_info

    Input a tagged biniou value of type block_decl_info.

    val block_decl_info_of_string : ?pos:int -> string -> block_decl_info

    Deserialize a biniou value of type block_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val coreturn_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type coreturn_stmt_info. Readers may support more than just this tag.

    val write_untagged_coreturn_stmt_info : Bi_outbuf.t -> coreturn_stmt_info -> - unit

    Output an untagged biniou value of type coreturn_stmt_info.

    val write_coreturn_stmt_info : Bi_outbuf.t -> coreturn_stmt_info -> unit

    Output a biniou value of type coreturn_stmt_info.

    val string_of_coreturn_stmt_info : ?len:int -> coreturn_stmt_info -> string

    Serialize a value of type coreturn_stmt_info into a biniou string.

    val get_coreturn_stmt_info_reader : + unit

    Output an untagged biniou value of type coreturn_stmt_info.

    val write_coreturn_stmt_info : Bi_outbuf.t -> coreturn_stmt_info -> unit

    Output a biniou value of type coreturn_stmt_info.

    val string_of_coreturn_stmt_info : ?len:int -> coreturn_stmt_info -> string

    Serialize a value of type coreturn_stmt_info into a biniou string.

    val get_coreturn_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - coreturn_stmt_info

    Return a function that reads an untagged biniou value of type coreturn_stmt_info.

    val read_coreturn_stmt_info : Bi_inbuf.t -> coreturn_stmt_info

    Input a tagged biniou value of type coreturn_stmt_info.

    val coreturn_stmt_info_of_string : ?pos:int -> string -> coreturn_stmt_info

    Deserialize a biniou value of type coreturn_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val coro_body_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type coro_body_stmt_info. Readers may support more than just this tag.

    val write_untagged_coro_body_stmt_info : + coreturn_stmt_info

    Return a function that reads an untagged biniou value of type coreturn_stmt_info.

    val read_coreturn_stmt_info : Bi_inbuf.t -> coreturn_stmt_info

    Input a tagged biniou value of type coreturn_stmt_info.

    val coreturn_stmt_info_of_string : ?pos:int -> string -> coreturn_stmt_info

    Deserialize a biniou value of type coreturn_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val coro_body_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type coro_body_stmt_info. Readers may support more than just this tag.

    val write_untagged_coro_body_stmt_info : Bi_outbuf.t -> coro_body_stmt_info -> - unit

    Output an untagged biniou value of type coro_body_stmt_info.

    val write_coro_body_stmt_info : Bi_outbuf.t -> coro_body_stmt_info -> unit

    Output a biniou value of type coro_body_stmt_info.

    val string_of_coro_body_stmt_info : ?len:int -> coro_body_stmt_info -> string

    Serialize a value of type coro_body_stmt_info into a biniou string.

    val get_coro_body_stmt_info_reader : + unit

    Output an untagged biniou value of type coro_body_stmt_info.

    val write_coro_body_stmt_info : Bi_outbuf.t -> coro_body_stmt_info -> unit

    Output a biniou value of type coro_body_stmt_info.

    val string_of_coro_body_stmt_info : ?len:int -> coro_body_stmt_info -> string

    Serialize a value of type coro_body_stmt_info into a biniou string.

    val get_coro_body_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - coro_body_stmt_info

    Return a function that reads an untagged biniou value of type coro_body_stmt_info.

    val read_coro_body_stmt_info : Bi_inbuf.t -> coro_body_stmt_info

    Input a tagged biniou value of type coro_body_stmt_info.

    val coro_body_stmt_info_of_string : ?pos:int -> string -> coro_body_stmt_info

    Deserialize a biniou value of type coro_body_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_catch_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_catch_stmt_info. Readers may support more than just this tag.

    val write_untagged_cxx_catch_stmt_info : + coro_body_stmt_info

    Return a function that reads an untagged biniou value of type coro_body_stmt_info.

    val read_coro_body_stmt_info : Bi_inbuf.t -> coro_body_stmt_info

    Input a tagged biniou value of type coro_body_stmt_info.

    val coro_body_stmt_info_of_string : ?pos:int -> string -> coro_body_stmt_info

    Deserialize a biniou value of type coro_body_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_catch_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_catch_stmt_info. Readers may support more than just this tag.

    val write_untagged_cxx_catch_stmt_info : Bi_outbuf.t -> cxx_catch_stmt_info -> - unit

    Output an untagged biniou value of type cxx_catch_stmt_info.

    val write_cxx_catch_stmt_info : Bi_outbuf.t -> cxx_catch_stmt_info -> unit

    Output a biniou value of type cxx_catch_stmt_info.

    val string_of_cxx_catch_stmt_info : ?len:int -> cxx_catch_stmt_info -> string

    Serialize a value of type cxx_catch_stmt_info into a biniou string.

    val get_cxx_catch_stmt_info_reader : + unit

    Output an untagged biniou value of type cxx_catch_stmt_info.

    val write_cxx_catch_stmt_info : Bi_outbuf.t -> cxx_catch_stmt_info -> unit

    Output a biniou value of type cxx_catch_stmt_info.

    val string_of_cxx_catch_stmt_info : ?len:int -> cxx_catch_stmt_info -> string

    Serialize a value of type cxx_catch_stmt_info into a biniou string.

    val get_cxx_catch_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_catch_stmt_info

    Return a function that reads an untagged biniou value of type cxx_catch_stmt_info.

    val read_cxx_catch_stmt_info : Bi_inbuf.t -> cxx_catch_stmt_info

    Input a tagged biniou value of type cxx_catch_stmt_info.

    val cxx_catch_stmt_info_of_string : ?pos:int -> string -> cxx_catch_stmt_info

    Deserialize a biniou value of type cxx_catch_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_ctor_initializer_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_ctor_initializer. Readers may support more than just this tag.

    val write_untagged_cxx_ctor_initializer : + cxx_catch_stmt_info

    Return a function that reads an untagged biniou value of type cxx_catch_stmt_info.

    val read_cxx_catch_stmt_info : Bi_inbuf.t -> cxx_catch_stmt_info

    Input a tagged biniou value of type cxx_catch_stmt_info.

    val cxx_catch_stmt_info_of_string : ?pos:int -> string -> cxx_catch_stmt_info

    Deserialize a biniou value of type cxx_catch_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_ctor_initializer_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_ctor_initializer. Readers may support more than just this tag.

    val write_untagged_cxx_ctor_initializer : Bi_outbuf.t -> cxx_ctor_initializer -> - unit

    Output an untagged biniou value of type cxx_ctor_initializer.

    val write_cxx_ctor_initializer : Bi_outbuf.t -> cxx_ctor_initializer -> unit

    Output a biniou value of type cxx_ctor_initializer.

    val string_of_cxx_ctor_initializer : ?len:int -> cxx_ctor_initializer -> string

    Serialize a value of type cxx_ctor_initializer into a biniou string.

    val get_cxx_ctor_initializer_reader : + unit

    Output an untagged biniou value of type cxx_ctor_initializer.

    val write_cxx_ctor_initializer : Bi_outbuf.t -> cxx_ctor_initializer -> unit

    Output a biniou value of type cxx_ctor_initializer.

    val string_of_cxx_ctor_initializer : ?len:int -> cxx_ctor_initializer -> string

    Serialize a value of type cxx_ctor_initializer into a biniou string.

    val get_cxx_ctor_initializer_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_ctor_initializer

    Return a function that reads an untagged biniou value of type cxx_ctor_initializer.

    val read_cxx_ctor_initializer : Bi_inbuf.t -> cxx_ctor_initializer

    Input a tagged biniou value of type cxx_ctor_initializer.

    val cxx_ctor_initializer_of_string : ?pos:int -> string -> cxx_ctor_initializer

    Deserialize a biniou value of type cxx_ctor_initializer.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_default_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_default_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_default_expr_info : + cxx_ctor_initializer

    Return a function that reads an untagged biniou value of type cxx_ctor_initializer.

    val read_cxx_ctor_initializer : Bi_inbuf.t -> cxx_ctor_initializer

    Input a tagged biniou value of type cxx_ctor_initializer.

    val cxx_ctor_initializer_of_string : ?pos:int -> string -> cxx_ctor_initializer

    Deserialize a biniou value of type cxx_ctor_initializer.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_default_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_default_expr_info. Readers may support more than just this tag.

    val write_untagged_cxx_default_expr_info : Bi_outbuf.t -> cxx_default_expr_info -> unit

    Output an untagged biniou value of type cxx_default_expr_info.

    val write_cxx_default_expr_info : Bi_outbuf.t -> cxx_default_expr_info -> unit

    Output a biniou value of type cxx_default_expr_info.

    val string_of_cxx_default_expr_info : - ?len:int -> + ?len:int -> cxx_default_expr_info -> string

    Serialize a value of type cxx_default_expr_info into a biniou string.

    val get_cxx_default_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> cxx_default_expr_info

    Return a function that reads an untagged biniou value of type cxx_default_expr_info.

    val read_cxx_default_expr_info : Bi_inbuf.t -> cxx_default_expr_info

    Input a tagged biniou value of type cxx_default_expr_info.

    val cxx_default_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> cxx_default_expr_info

    Deserialize a biniou value of type cxx_default_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_method_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_method_decl_info. Readers may support more than just this tag.

    val write_untagged_cxx_method_decl_info : Bi_outbuf.t -> cxx_method_decl_info -> - unit

    Output an untagged biniou value of type cxx_method_decl_info.

    val write_cxx_method_decl_info : Bi_outbuf.t -> cxx_method_decl_info -> unit

    Output a biniou value of type cxx_method_decl_info.

    val string_of_cxx_method_decl_info : ?len:int -> cxx_method_decl_info -> string

    Serialize a value of type cxx_method_decl_info into a biniou string.

    val get_cxx_method_decl_info_reader : + unit

    Output an untagged biniou value of type cxx_method_decl_info.

    val write_cxx_method_decl_info : Bi_outbuf.t -> cxx_method_decl_info -> unit

    Output a biniou value of type cxx_method_decl_info.

    val string_of_cxx_method_decl_info : ?len:int -> cxx_method_decl_info -> string

    Serialize a value of type cxx_method_decl_info into a biniou string.

    val get_cxx_method_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_method_decl_info

    Return a function that reads an untagged biniou value of type cxx_method_decl_info.

    val read_cxx_method_decl_info : Bi_inbuf.t -> cxx_method_decl_info

    Input a tagged biniou value of type cxx_method_decl_info.

    val cxx_method_decl_info_of_string : ?pos:int -> string -> cxx_method_decl_info

    Deserialize a biniou value of type cxx_method_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_record_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_record_decl_info. Readers may support more than just this tag.

    val write_untagged_cxx_record_decl_info : + cxx_method_decl_info

    Return a function that reads an untagged biniou value of type cxx_method_decl_info.

    val read_cxx_method_decl_info : Bi_inbuf.t -> cxx_method_decl_info

    Input a tagged biniou value of type cxx_method_decl_info.

    val cxx_method_decl_info_of_string : ?pos:int -> string -> cxx_method_decl_info

    Deserialize a biniou value of type cxx_method_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val cxx_record_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type cxx_record_decl_info. Readers may support more than just this tag.

    val write_untagged_cxx_record_decl_info : Bi_outbuf.t -> cxx_record_decl_info -> - unit

    Output an untagged biniou value of type cxx_record_decl_info.

    val write_cxx_record_decl_info : Bi_outbuf.t -> cxx_record_decl_info -> unit

    Output a biniou value of type cxx_record_decl_info.

    val string_of_cxx_record_decl_info : ?len:int -> cxx_record_decl_info -> string

    Serialize a value of type cxx_record_decl_info into a biniou string.

    val get_cxx_record_decl_info_reader : + unit

    Output an untagged biniou value of type cxx_record_decl_info.

    val write_cxx_record_decl_info : Bi_outbuf.t -> cxx_record_decl_info -> unit

    Output a biniou value of type cxx_record_decl_info.

    val string_of_cxx_record_decl_info : ?len:int -> cxx_record_decl_info -> string

    Serialize a value of type cxx_record_decl_info into a biniou string.

    val get_cxx_record_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - cxx_record_decl_info

    Return a function that reads an untagged biniou value of type cxx_record_decl_info.

    val read_cxx_record_decl_info : Bi_inbuf.t -> cxx_record_decl_info

    Input a tagged biniou value of type cxx_record_decl_info.

    val cxx_record_decl_info_of_string : ?pos:int -> string -> cxx_record_decl_info

    Deserialize a biniou value of type cxx_record_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_tag : Bi_io.node_tag

    Tag used by the writers for type decl. Readers may support more than just this tag.

    val write_untagged_decl : Bi_outbuf.t -> decl -> unit

    Output an untagged biniou value of type decl.

    val write_decl : Bi_outbuf.t -> decl -> unit

    Output a biniou value of type decl.

    val string_of_decl : ?len:int -> decl -> string

    Serialize a value of type decl into a biniou string.

    val get_decl_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl

    Return a function that reads an untagged biniou value of type decl.

    val read_decl : Bi_inbuf.t -> decl

    Input a tagged biniou value of type decl.

    val decl_of_string : ?pos:int -> string -> decl

    Deserialize a biniou value of type decl.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_constant_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type enum_constant_decl_info. Readers may support more than just this tag.

    val write_untagged_enum_constant_decl_info : + cxx_record_decl_info

    Return a function that reads an untagged biniou value of type cxx_record_decl_info.

    val read_cxx_record_decl_info : Bi_inbuf.t -> cxx_record_decl_info

    Input a tagged biniou value of type cxx_record_decl_info.

    val cxx_record_decl_info_of_string : ?pos:int -> string -> cxx_record_decl_info

    Deserialize a biniou value of type cxx_record_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val decl_tag : Bi_io.node_tag

    Tag used by the writers for type decl. Readers may support more than just this tag.

    val write_untagged_decl : Bi_outbuf.t -> decl -> unit

    Output an untagged biniou value of type decl.

    val write_decl : Bi_outbuf.t -> decl -> unit

    Output a biniou value of type decl.

    val string_of_decl : ?len:int -> decl -> string

    Serialize a value of type decl into a biniou string.

    val get_decl_reader : Bi_io.node_tag -> Bi_inbuf.t -> decl

    Return a function that reads an untagged biniou value of type decl.

    val read_decl : Bi_inbuf.t -> decl

    Input a tagged biniou value of type decl.

    val decl_of_string : ?pos:int -> string -> decl

    Deserialize a biniou value of type decl.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val enum_constant_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type enum_constant_decl_info. Readers may support more than just this tag.

    val write_untagged_enum_constant_decl_info : Bi_outbuf.t -> enum_constant_decl_info -> unit

    Output an untagged biniou value of type enum_constant_decl_info.

    val write_enum_constant_decl_info : Bi_outbuf.t -> enum_constant_decl_info -> unit

    Output a biniou value of type enum_constant_decl_info.

    val string_of_enum_constant_decl_info : - ?len:int -> + ?len:int -> enum_constant_decl_info -> string

    Serialize a value of type enum_constant_decl_info into a biniou string.

    val get_enum_constant_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> enum_constant_decl_info

    Return a function that reads an untagged biniou value of type enum_constant_decl_info.

    val read_enum_constant_decl_info : Bi_inbuf.t -> enum_constant_decl_info

    Input a tagged biniou value of type enum_constant_decl_info.

    val enum_constant_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> - enum_constant_decl_info

    Deserialize a biniou value of type enum_constant_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val field_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type field_decl_info. Readers may support more than just this tag.

    val write_untagged_field_decl_info : Bi_outbuf.t -> field_decl_info -> unit

    Output an untagged biniou value of type field_decl_info.

    val write_field_decl_info : Bi_outbuf.t -> field_decl_info -> unit

    Output a biniou value of type field_decl_info.

    val string_of_field_decl_info : ?len:int -> field_decl_info -> string

    Serialize a value of type field_decl_info into a biniou string.

    val get_field_decl_info_reader : + enum_constant_decl_info

    Deserialize a biniou value of type enum_constant_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val field_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type field_decl_info. Readers may support more than just this tag.

    val write_untagged_field_decl_info : Bi_outbuf.t -> field_decl_info -> unit

    Output an untagged biniou value of type field_decl_info.

    val write_field_decl_info : Bi_outbuf.t -> field_decl_info -> unit

    Output a biniou value of type field_decl_info.

    val string_of_field_decl_info : ?len:int -> field_decl_info -> string

    Serialize a value of type field_decl_info into a biniou string.

    val get_field_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - field_decl_info

    Return a function that reads an untagged biniou value of type field_decl_info.

    val read_field_decl_info : Bi_inbuf.t -> field_decl_info

    Input a tagged biniou value of type field_decl_info.

    val field_decl_info_of_string : ?pos:int -> string -> field_decl_info

    Deserialize a biniou value of type field_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val friend_info_tag : Bi_io.node_tag

    Tag used by the writers for type friend_info. Readers may support more than just this tag.

    val write_untagged_friend_info : Bi_outbuf.t -> friend_info -> unit

    Output an untagged biniou value of type friend_info.

    val write_friend_info : Bi_outbuf.t -> friend_info -> unit

    Output a biniou value of type friend_info.

    val string_of_friend_info : ?len:int -> friend_info -> string

    Serialize a value of type friend_info into a biniou string.

    val get_friend_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> friend_info

    Return a function that reads an untagged biniou value of type friend_info.

    val read_friend_info : Bi_inbuf.t -> friend_info

    Input a tagged biniou value of type friend_info.

    val friend_info_of_string : ?pos:int -> string -> friend_info

    Deserialize a biniou value of type friend_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val function_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type function_decl_info. Readers may support more than just this tag.

    val write_untagged_function_decl_info : + field_decl_info

    Return a function that reads an untagged biniou value of type field_decl_info.

    val read_field_decl_info : Bi_inbuf.t -> field_decl_info

    Input a tagged biniou value of type field_decl_info.

    val field_decl_info_of_string : ?pos:int -> string -> field_decl_info

    Deserialize a biniou value of type field_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val friend_info_tag : Bi_io.node_tag

    Tag used by the writers for type friend_info. Readers may support more than just this tag.

    val write_untagged_friend_info : Bi_outbuf.t -> friend_info -> unit

    Output an untagged biniou value of type friend_info.

    val write_friend_info : Bi_outbuf.t -> friend_info -> unit

    Output a biniou value of type friend_info.

    val string_of_friend_info : ?len:int -> friend_info -> string

    Serialize a value of type friend_info into a biniou string.

    val get_friend_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> friend_info

    Return a function that reads an untagged biniou value of type friend_info.

    val read_friend_info : Bi_inbuf.t -> friend_info

    Input a tagged biniou value of type friend_info.

    val friend_info_of_string : ?pos:int -> string -> friend_info

    Deserialize a biniou value of type friend_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val function_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type function_decl_info. Readers may support more than just this tag.

    val write_untagged_function_decl_info : Bi_outbuf.t -> function_decl_info -> - unit

    Output an untagged biniou value of type function_decl_info.

    val write_function_decl_info : Bi_outbuf.t -> function_decl_info -> unit

    Output a biniou value of type function_decl_info.

    val string_of_function_decl_info : ?len:int -> function_decl_info -> string

    Serialize a value of type function_decl_info into a biniou string.

    val get_function_decl_info_reader : + unit

    Output an untagged biniou value of type function_decl_info.

    val write_function_decl_info : Bi_outbuf.t -> function_decl_info -> unit

    Output a biniou value of type function_decl_info.

    val string_of_function_decl_info : ?len:int -> function_decl_info -> string

    Serialize a value of type function_decl_info into a biniou string.

    val get_function_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - function_decl_info

    Return a function that reads an untagged biniou value of type function_decl_info.

    val read_function_decl_info : Bi_inbuf.t -> function_decl_info

    Input a tagged biniou value of type function_decl_info.

    val function_decl_info_of_string : ?pos:int -> string -> function_decl_info

    Deserialize a biniou value of type function_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val generic_selection_info_tag : Bi_io.node_tag

    Tag used by the writers for type generic_selection_info. Readers may support more than just this tag.

    val write_untagged_generic_selection_info : + function_decl_info

    Return a function that reads an untagged biniou value of type function_decl_info.

    val read_function_decl_info : Bi_inbuf.t -> function_decl_info

    Input a tagged biniou value of type function_decl_info.

    val function_decl_info_of_string : ?pos:int -> string -> function_decl_info

    Deserialize a biniou value of type function_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val generic_selection_info_tag : Bi_io.node_tag

    Tag used by the writers for type generic_selection_info. Readers may support more than just this tag.

    val write_untagged_generic_selection_info : Bi_outbuf.t -> generic_selection_info -> unit

    Output an untagged biniou value of type generic_selection_info.

    val write_generic_selection_info : Bi_outbuf.t -> generic_selection_info -> unit

    Output a biniou value of type generic_selection_info.

    val string_of_generic_selection_info : - ?len:int -> + ?len:int -> generic_selection_info -> string

    Serialize a value of type generic_selection_info into a biniou string.

    val get_generic_selection_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> generic_selection_info

    Return a function that reads an untagged biniou value of type generic_selection_info.

    val read_generic_selection_info : Bi_inbuf.t -> generic_selection_info

    Input a tagged biniou value of type generic_selection_info.

    val generic_selection_info_of_string : - ?pos:int -> + ?pos:int -> string -> generic_selection_info

    Deserialize a biniou value of type generic_selection_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val holding_var_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type holding_var_decl_info. Readers may support more than just this tag.

    val write_untagged_holding_var_decl_info : Bi_outbuf.t -> holding_var_decl_info -> unit

    Output an untagged biniou value of type holding_var_decl_info.

    val write_holding_var_decl_info : Bi_outbuf.t -> holding_var_decl_info -> unit

    Output a biniou value of type holding_var_decl_info.

    val string_of_holding_var_decl_info : - ?len:int -> + ?len:int -> holding_var_decl_info -> string

    Serialize a value of type holding_var_decl_info into a biniou string.

    val get_holding_var_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> holding_var_decl_info

    Return a function that reads an untagged biniou value of type holding_var_decl_info.

    val read_holding_var_decl_info : Bi_inbuf.t -> holding_var_decl_info

    Input a tagged biniou value of type holding_var_decl_info.

    val holding_var_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> - holding_var_decl_info

    Deserialize a biniou value of type holding_var_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val if_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type if_stmt_info. Readers may support more than just this tag.

    val write_untagged_if_stmt_info : Bi_outbuf.t -> if_stmt_info -> unit

    Output an untagged biniou value of type if_stmt_info.

    val write_if_stmt_info : Bi_outbuf.t -> if_stmt_info -> unit

    Output a biniou value of type if_stmt_info.

    val string_of_if_stmt_info : ?len:int -> if_stmt_info -> string

    Serialize a value of type if_stmt_info into a biniou string.

    val get_if_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> if_stmt_info

    Return a function that reads an untagged biniou value of type if_stmt_info.

    val read_if_stmt_info : Bi_inbuf.t -> if_stmt_info

    Input a tagged biniou value of type if_stmt_info.

    val if_stmt_info_of_string : ?pos:int -> string -> if_stmt_info

    Deserialize a biniou value of type if_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_capture_info_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_capture_info. Readers may support more than just this tag.

    val write_untagged_lambda_capture_info : + holding_var_decl_info

    Deserialize a biniou value of type holding_var_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val if_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type if_stmt_info. Readers may support more than just this tag.

    val write_untagged_if_stmt_info : Bi_outbuf.t -> if_stmt_info -> unit

    Output an untagged biniou value of type if_stmt_info.

    val write_if_stmt_info : Bi_outbuf.t -> if_stmt_info -> unit

    Output a biniou value of type if_stmt_info.

    val string_of_if_stmt_info : ?len:int -> if_stmt_info -> string

    Serialize a value of type if_stmt_info into a biniou string.

    val get_if_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> if_stmt_info

    Return a function that reads an untagged biniou value of type if_stmt_info.

    val read_if_stmt_info : Bi_inbuf.t -> if_stmt_info

    Input a tagged biniou value of type if_stmt_info.

    val if_stmt_info_of_string : ?pos:int -> string -> if_stmt_info

    Deserialize a biniou value of type if_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_capture_info_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_capture_info. Readers may support more than just this tag.

    val write_untagged_lambda_capture_info : Bi_outbuf.t -> lambda_capture_info -> - unit

    Output an untagged biniou value of type lambda_capture_info.

    val write_lambda_capture_info : Bi_outbuf.t -> lambda_capture_info -> unit

    Output a biniou value of type lambda_capture_info.

    val string_of_lambda_capture_info : ?len:int -> lambda_capture_info -> string

    Serialize a value of type lambda_capture_info into a biniou string.

    val get_lambda_capture_info_reader : + unit

    Output an untagged biniou value of type lambda_capture_info.

    val write_lambda_capture_info : Bi_outbuf.t -> lambda_capture_info -> unit

    Output a biniou value of type lambda_capture_info.

    val string_of_lambda_capture_info : ?len:int -> lambda_capture_info -> string

    Serialize a value of type lambda_capture_info into a biniou string.

    val get_lambda_capture_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - lambda_capture_info

    Return a function that reads an untagged biniou value of type lambda_capture_info.

    val read_lambda_capture_info : Bi_inbuf.t -> lambda_capture_info

    Input a tagged biniou value of type lambda_capture_info.

    val lambda_capture_info_of_string : ?pos:int -> string -> lambda_capture_info

    Deserialize a biniou value of type lambda_capture_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_expr_info. Readers may support more than just this tag.

    val write_untagged_lambda_expr_info : Bi_outbuf.t -> lambda_expr_info -> unit

    Output an untagged biniou value of type lambda_expr_info.

    val write_lambda_expr_info : Bi_outbuf.t -> lambda_expr_info -> unit

    Output a biniou value of type lambda_expr_info.

    val string_of_lambda_expr_info : ?len:int -> lambda_expr_info -> string

    Serialize a value of type lambda_expr_info into a biniou string.

    val get_lambda_expr_info_reader : + lambda_capture_info

    Return a function that reads an untagged biniou value of type lambda_capture_info.

    val read_lambda_capture_info : Bi_inbuf.t -> lambda_capture_info

    Input a tagged biniou value of type lambda_capture_info.

    val lambda_capture_info_of_string : ?pos:int -> string -> lambda_capture_info

    Deserialize a biniou value of type lambda_capture_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lambda_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type lambda_expr_info. Readers may support more than just this tag.

    val write_untagged_lambda_expr_info : Bi_outbuf.t -> lambda_expr_info -> unit

    Output an untagged biniou value of type lambda_expr_info.

    val write_lambda_expr_info : Bi_outbuf.t -> lambda_expr_info -> unit

    Output a biniou value of type lambda_expr_info.

    val string_of_lambda_expr_info : ?len:int -> lambda_expr_info -> string

    Serialize a value of type lambda_expr_info into a biniou string.

    val get_lambda_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - lambda_expr_info

    Return a function that reads an untagged biniou value of type lambda_expr_info.

    val read_lambda_expr_info : Bi_inbuf.t -> lambda_expr_info

    Input a tagged biniou value of type lambda_expr_info.

    val lambda_expr_info_of_string : ?pos:int -> string -> lambda_expr_info

    Deserialize a biniou value of type lambda_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_implementation_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_implementation_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_implementation_decl_info : + lambda_expr_info

    Return a function that reads an untagged biniou value of type lambda_expr_info.

    val read_lambda_expr_info : Bi_inbuf.t -> lambda_expr_info

    Input a tagged biniou value of type lambda_expr_info.

    val lambda_expr_info_of_string : ?pos:int -> string -> lambda_expr_info

    Deserialize a biniou value of type lambda_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_implementation_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_implementation_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_implementation_decl_info : Bi_outbuf.t -> obj_c_implementation_decl_info -> unit

    Output an untagged biniou value of type obj_c_implementation_decl_info.

    val write_obj_c_implementation_decl_info : Bi_outbuf.t -> obj_c_implementation_decl_info -> unit

    Output a biniou value of type obj_c_implementation_decl_info.

    val string_of_obj_c_implementation_decl_info : - ?len:int -> + ?len:int -> obj_c_implementation_decl_info -> string

    Serialize a value of type obj_c_implementation_decl_info into a biniou string.

    val get_obj_c_implementation_decl_info_reader : Bi_io.node_tag -> @@ -1153,7 +1153,7 @@ obj_c_implementation_decl_info

    Return a function that reads an untagged biniou value of type obj_c_implementation_decl_info.

    val read_obj_c_implementation_decl_info : Bi_inbuf.t -> obj_c_implementation_decl_info

    Input a tagged biniou value of type obj_c_implementation_decl_info.

    val obj_c_implementation_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_implementation_decl_info

    Deserialize a biniou value of type obj_c_implementation_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_message_expr_kind_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_message_expr_kind. Readers may support more than just this tag.

    val write_untagged_obj_c_message_expr_kind : Bi_outbuf.t -> @@ -1162,13 +1162,13 @@ Bi_outbuf.t -> obj_c_message_expr_kind -> unit

    Output a biniou value of type obj_c_message_expr_kind.

    val string_of_obj_c_message_expr_kind : - ?len:int -> + ?len:int -> obj_c_message_expr_kind -> string

    Serialize a value of type obj_c_message_expr_kind into a biniou string.

    val get_obj_c_message_expr_kind_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_message_expr_kind

    Return a function that reads an untagged biniou value of type obj_c_message_expr_kind.

    val read_obj_c_message_expr_kind : Bi_inbuf.t -> obj_c_message_expr_kind

    Input a tagged biniou value of type obj_c_message_expr_kind.

    val obj_c_message_expr_kind_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_message_expr_kind

    Deserialize a biniou value of type obj_c_message_expr_kind.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val obj_c_method_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type obj_c_method_decl_info. Readers may support more than just this tag.

    val write_untagged_obj_c_method_decl_info : Bi_outbuf.t -> @@ -1177,13 +1177,13 @@ Bi_outbuf.t -> obj_c_method_decl_info -> unit

    Output a biniou value of type obj_c_method_decl_info.

    val string_of_obj_c_method_decl_info : - ?len:int -> + ?len:int -> obj_c_method_decl_info -> string

    Serialize a value of type obj_c_method_decl_info into a biniou string.

    val get_obj_c_method_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> obj_c_method_decl_info

    Return a function that reads an untagged biniou value of type obj_c_method_decl_info.

    val read_obj_c_method_decl_info : Bi_inbuf.t -> obj_c_method_decl_info

    Input a tagged biniou value of type obj_c_method_decl_info.

    val obj_c_method_decl_info_of_string : - ?pos:int -> + ?pos:int -> string -> obj_c_method_decl_info

    Deserialize a biniou value of type obj_c_method_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val opaque_value_expr_info_tag : Bi_io.node_tag

    Tag used by the writers for type opaque_value_expr_info. Readers may support more than just this tag.

    val write_untagged_opaque_value_expr_info : Bi_outbuf.t -> @@ -1192,21 +1192,21 @@ Bi_outbuf.t -> opaque_value_expr_info -> unit

    Output a biniou value of type opaque_value_expr_info.

    val string_of_opaque_value_expr_info : - ?len:int -> + ?len:int -> opaque_value_expr_info -> string

    Serialize a value of type opaque_value_expr_info into a biniou string.

    val get_opaque_value_expr_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> opaque_value_expr_info

    Return a function that reads an untagged biniou value of type opaque_value_expr_info.

    val read_opaque_value_expr_info : Bi_inbuf.t -> opaque_value_expr_info

    Input a tagged biniou value of type opaque_value_expr_info.

    val opaque_value_expr_info_of_string : - ?pos:int -> + ?pos:int -> string -> - opaque_value_expr_info

    Deserialize a biniou value of type opaque_value_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val stmt_tag : Bi_io.node_tag

    Tag used by the writers for type stmt. Readers may support more than just this tag.

    val write_untagged_stmt : Bi_outbuf.t -> stmt -> unit

    Output an untagged biniou value of type stmt.

    val write_stmt : Bi_outbuf.t -> stmt -> unit

    Output a biniou value of type stmt.

    val string_of_stmt : ?len:int -> stmt -> string

    Serialize a value of type stmt into a biniou string.

    val get_stmt_reader : Bi_io.node_tag -> Bi_inbuf.t -> stmt

    Return a function that reads an untagged biniou value of type stmt.

    val read_stmt : Bi_inbuf.t -> stmt

    Input a tagged biniou value of type stmt.

    val stmt_of_string : ?pos:int -> string -> stmt

    Deserialize a biniou value of type stmt.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val switch_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type switch_stmt_info. Readers may support more than just this tag.

    val write_untagged_switch_stmt_info : Bi_outbuf.t -> switch_stmt_info -> unit

    Output an untagged biniou value of type switch_stmt_info.

    val write_switch_stmt_info : Bi_outbuf.t -> switch_stmt_info -> unit

    Output a biniou value of type switch_stmt_info.

    val string_of_switch_stmt_info : ?len:int -> switch_stmt_info -> string

    Serialize a value of type switch_stmt_info into a biniou string.

    val get_switch_stmt_info_reader : + opaque_value_expr_info

    Deserialize a biniou value of type opaque_value_expr_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val stmt_tag : Bi_io.node_tag

    Tag used by the writers for type stmt. Readers may support more than just this tag.

    val write_untagged_stmt : Bi_outbuf.t -> stmt -> unit

    Output an untagged biniou value of type stmt.

    val write_stmt : Bi_outbuf.t -> stmt -> unit

    Output a biniou value of type stmt.

    val string_of_stmt : ?len:int -> stmt -> string

    Serialize a value of type stmt into a biniou string.

    val get_stmt_reader : Bi_io.node_tag -> Bi_inbuf.t -> stmt

    Return a function that reads an untagged biniou value of type stmt.

    val read_stmt : Bi_inbuf.t -> stmt

    Input a tagged biniou value of type stmt.

    val stmt_of_string : ?pos:int -> string -> stmt

    Deserialize a biniou value of type stmt.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val switch_stmt_info_tag : Bi_io.node_tag

    Tag used by the writers for type switch_stmt_info. Readers may support more than just this tag.

    val write_untagged_switch_stmt_info : Bi_outbuf.t -> switch_stmt_info -> unit

    Output an untagged biniou value of type switch_stmt_info.

    val write_switch_stmt_info : Bi_outbuf.t -> switch_stmt_info -> unit

    Output a biniou value of type switch_stmt_info.

    val string_of_switch_stmt_info : ?len:int -> switch_stmt_info -> string

    Serialize a value of type switch_stmt_info into a biniou string.

    val get_switch_stmt_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - switch_stmt_info

    Return a function that reads an untagged biniou value of type switch_stmt_info.

    val read_switch_stmt_info : Bi_inbuf.t -> switch_stmt_info

    Input a tagged biniou value of type switch_stmt_info.

    val switch_stmt_info_of_string : ?pos:int -> string -> switch_stmt_info

    Deserialize a biniou value of type switch_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_decl_info. Readers may support more than just this tag.

    val write_untagged_template_decl_info : + switch_stmt_info

    Return a function that reads an untagged biniou value of type switch_stmt_info.

    val read_switch_stmt_info : Bi_inbuf.t -> switch_stmt_info

    Input a tagged biniou value of type switch_stmt_info.

    val switch_stmt_info_of_string : ?pos:int -> string -> switch_stmt_info

    Deserialize a biniou value of type switch_stmt_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val template_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type template_decl_info. Readers may support more than just this tag.

    val write_untagged_template_decl_info : Bi_outbuf.t -> template_decl_info -> - unit

    Output an untagged biniou value of type template_decl_info.

    val write_template_decl_info : Bi_outbuf.t -> template_decl_info -> unit

    Output a biniou value of type template_decl_info.

    val string_of_template_decl_info : ?len:int -> template_decl_info -> string

    Serialize a value of type template_decl_info into a biniou string.

    val get_template_decl_info_reader : + unit

    Output an untagged biniou value of type template_decl_info.

    val write_template_decl_info : Bi_outbuf.t -> template_decl_info -> unit

    Output a biniou value of type template_decl_info.

    val string_of_template_decl_info : ?len:int -> template_decl_info -> string

    Serialize a value of type template_decl_info into a biniou string.

    val get_template_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> - template_decl_info

    Return a function that reads an untagged biniou value of type template_decl_info.

    val read_template_decl_info : Bi_inbuf.t -> template_decl_info

    Input a tagged biniou value of type template_decl_info.

    val template_decl_info_of_string : ?pos:int -> string -> template_decl_info

    Deserialize a biniou value of type template_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val var_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type var_decl_info. Readers may support more than just this tag.

    val write_untagged_var_decl_info : Bi_outbuf.t -> var_decl_info -> unit

    Output an untagged biniou value of type var_decl_info.

    val write_var_decl_info : Bi_outbuf.t -> var_decl_info -> unit

    Output a biniou value of type var_decl_info.

    val string_of_var_decl_info : ?len:int -> var_decl_info -> string

    Serialize a value of type var_decl_info into a biniou string.

    val get_var_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> var_decl_info

    Return a function that reads an untagged biniou value of type var_decl_info.

    val read_var_decl_info : Bi_inbuf.t -> var_decl_info

    Input a tagged biniou value of type var_decl_info.

    val var_decl_info_of_string : ?pos:int -> string -> var_decl_info

    Deserialize a biniou value of type var_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lookup_tag : Bi_io.node_tag

    Tag used by the writers for type lookup. Readers may support more than just this tag.

    val write_untagged_lookup : Bi_outbuf.t -> lookup -> unit

    Output an untagged biniou value of type lookup.

    val write_lookup : Bi_outbuf.t -> lookup -> unit

    Output a biniou value of type lookup.

    val string_of_lookup : ?len:int -> lookup -> string

    Serialize a value of type lookup into a biniou string.

    val get_lookup_reader : Bi_io.node_tag -> Bi_inbuf.t -> lookup

    Return a function that reads an untagged biniou value of type lookup.

    val read_lookup : Bi_inbuf.t -> lookup

    Input a tagged biniou value of type lookup.

    val lookup_of_string : ?pos:int -> string -> lookup

    Deserialize a biniou value of type lookup.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lookups_tag : Bi_io.node_tag

    Tag used by the writers for type lookups. Readers may support more than just this tag.

    val write_untagged_lookups : Bi_outbuf.t -> lookups -> unit

    Output an untagged biniou value of type lookups.

    val write_lookups : Bi_outbuf.t -> lookups -> unit

    Output a biniou value of type lookups.

    val string_of_lookups : ?len:int -> lookups -> string

    Serialize a value of type lookups into a biniou string.

    val get_lookups_reader : Bi_io.node_tag -> Bi_inbuf.t -> lookups

    Return a function that reads an untagged biniou value of type lookups.

    val read_lookups : Bi_inbuf.t -> lookups

    Input a tagged biniou value of type lookups.

    val lookups_of_string : ?pos:int -> string -> lookups

    Deserialize a biniou value of type lookups.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    \ No newline at end of file + template_decl_info

    Return a function that reads an untagged biniou value of type template_decl_info.

    val read_template_decl_info : Bi_inbuf.t -> template_decl_info

    Input a tagged biniou value of type template_decl_info.

    val template_decl_info_of_string : ?pos:int -> string -> template_decl_info

    Deserialize a biniou value of type template_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val var_decl_info_tag : Bi_io.node_tag

    Tag used by the writers for type var_decl_info. Readers may support more than just this tag.

    val write_untagged_var_decl_info : Bi_outbuf.t -> var_decl_info -> unit

    Output an untagged biniou value of type var_decl_info.

    val write_var_decl_info : Bi_outbuf.t -> var_decl_info -> unit

    Output a biniou value of type var_decl_info.

    val string_of_var_decl_info : ?len:int -> var_decl_info -> string

    Serialize a value of type var_decl_info into a biniou string.

    val get_var_decl_info_reader : Bi_io.node_tag -> Bi_inbuf.t -> var_decl_info

    Return a function that reads an untagged biniou value of type var_decl_info.

    val read_var_decl_info : Bi_inbuf.t -> var_decl_info

    Input a tagged biniou value of type var_decl_info.

    val var_decl_info_of_string : ?pos:int -> string -> var_decl_info

    Deserialize a biniou value of type var_decl_info.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lookup_tag : Bi_io.node_tag

    Tag used by the writers for type lookup. Readers may support more than just this tag.

    val write_untagged_lookup : Bi_outbuf.t -> lookup -> unit

    Output an untagged biniou value of type lookup.

    val write_lookup : Bi_outbuf.t -> lookup -> unit

    Output a biniou value of type lookup.

    val string_of_lookup : ?len:int -> lookup -> string

    Serialize a value of type lookup into a biniou string.

    val get_lookup_reader : Bi_io.node_tag -> Bi_inbuf.t -> lookup

    Return a function that reads an untagged biniou value of type lookup.

    val read_lookup : Bi_inbuf.t -> lookup

    Input a tagged biniou value of type lookup.

    val lookup_of_string : ?pos:int -> string -> lookup

    Deserialize a biniou value of type lookup.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    val lookups_tag : Bi_io.node_tag

    Tag used by the writers for type lookups. Readers may support more than just this tag.

    val write_untagged_lookups : Bi_outbuf.t -> lookups -> unit

    Output an untagged biniou value of type lookups.

    val write_lookups : Bi_outbuf.t -> lookups -> unit

    Output a biniou value of type lookups.

    val string_of_lookups : ?len:int -> lookups -> string

    Serialize a value of type lookups into a biniou string.

    val get_lookups_reader : Bi_io.node_tag -> Bi_inbuf.t -> lookups

    Return a function that reads an untagged biniou value of type lookups.

    val read_lookups : Bi_inbuf.t -> lookups

    Input a tagged biniou value of type lookups.

    val lookups_of_string : ?pos:int -> string -> lookups

    Deserialize a biniou value of type lookups.

    • parameter pos

      specifies the position where reading starts. Default: 0.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_j/index.html index ed495ad2f7d..d9f69d9d6e8 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_j/index.html @@ -1,5 +1,5 @@ -Clang_ast_j (infer.ATDGenerated.Clang_ast_j)

    Module ATDGenerated.Clang_ast_j

    type access_specifier = Clang_ast_t.access_specifier
    type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
    type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
    1. aei_kind : atomic_expr_kind;
    }
    type attribute_kind = Clang_ast_t.attribute_kind =
    1. | AddressSpaceAttrKind
    2. | AnnotateTypeAttrKind
    3. | ArmInAttrKind
    4. | ArmInOutAttrKind
    5. | ArmMveStrictPolymorphismAttrKind
    6. | ArmOutAttrKind
    7. | ArmPreservesAttrKind
    8. | ArmStreamingAttrKind
    9. | ArmStreamingCompatibleAttrKind
    10. | BTFTypeTagAttrKind
    11. | CmseNSCallAttrKind
    12. | HLSLGroupSharedAddressSpaceAttrKind
    13. | HLSLParamModifierAttrKind
    14. | NoDerefAttrKind
    15. | ObjCGCAttrKind
    16. | ObjCInertUnsafeUnretainedAttrKind
    17. | ObjCKindOfAttrKind
    18. | OpenCLConstantAddressSpaceAttrKind
    19. | OpenCLGenericAddressSpaceAttrKind
    20. | OpenCLGlobalAddressSpaceAttrKind
    21. | OpenCLGlobalDeviceAddressSpaceAttrKind
    22. | OpenCLGlobalHostAddressSpaceAttrKind
    23. | OpenCLLocalAddressSpaceAttrKind
    24. | OpenCLPrivateAddressSpaceAttrKind
    25. | Ptr32AttrKind
    26. | Ptr64AttrKind
    27. | SPtrAttrKind
    28. | TypeNonNullAttrKind
    29. | TypeNullUnspecifiedAttrKind
    30. | TypeNullableAttrKind
    31. | TypeNullableResultAttrKind
    32. | UPtrAttrKind
    33. | WebAssemblyFuncrefAttrKind
    34. | CodeAlignAttrKind
    35. | FallThroughAttrKind
    36. | LikelyAttrKind
    37. | MustTailAttrKind
    38. | OpenCLUnrollHintAttrKind
    39. | UnlikelyAttrKind
    40. | AlwaysInlineAttrKind
    41. | NoInlineAttrKind
    42. | NoMergeAttrKind
    43. | SuppressAttrKind
    44. | AArch64SVEPcsAttrKind
    45. | AArch64VectorPcsAttrKind
    46. | AMDGPUKernelCallAttrKind
    47. | AcquireHandleAttrKind
    48. | AnyX86NoCfCheckAttrKind
    49. | CDeclAttrKind
    50. | FastCallAttrKind
    51. | IntelOclBiccAttrKind
    52. | LifetimeBoundAttrKind
    53. | M68kRTDAttrKind
    54. | MSABIAttrKind
    55. | NSReturnsRetainedAttrKind
    56. | ObjCOwnershipAttrKind
    57. | PascalAttrKind
    58. | PcsAttrKind
    59. | PreserveAllAttrKind
    60. | PreserveMostAttrKind
    61. | RegCallAttrKind
    62. | StdCallAttrKind
    63. | SwiftAsyncCallAttrKind
    64. | SwiftCallAttrKind
    65. | SysVABIAttrKind
    66. | ThisCallAttrKind
    67. | VectorCallAttrKind
    68. | SwiftAsyncContextAttrKind
    69. | SwiftContextAttrKind
    70. | SwiftErrorResultAttrKind
    71. | SwiftIndirectResultAttrKind
    72. | AnnotateAttrKind
    73. | CFConsumedAttrKind
    74. | CarriesDependencyAttrKind
    75. | NSConsumedAttrKind
    76. | NonNullAttrKind
    77. | OSConsumedAttrKind
    78. | PassObjectSizeAttrKind
    79. | ReleaseHandleAttrKind
    80. | UseHandleAttrKind
    81. | HLSLSV_DispatchThreadIDAttrKind
    82. | HLSLSV_GroupIndexAttrKind
    83. | AMDGPUFlatWorkGroupSizeAttrKind
    84. | AMDGPUNumSGPRAttrKind
    85. | AMDGPUNumVGPRAttrKind
    86. | AMDGPUWavesPerEUAttrKind
    87. | ARMInterruptAttrKind
    88. | AVRInterruptAttrKind
    89. | AVRSignalAttrKind
    90. | AcquireCapabilityAttrKind
    91. | AcquiredAfterAttrKind
    92. | AcquiredBeforeAttrKind
    93. | AlignMac68kAttrKind
    94. | AlignNaturalAttrKind
    95. | AlignedAttrKind
    96. | AllocAlignAttrKind
    97. | AllocSizeAttrKind
    98. | AlwaysDestroyAttrKind
    99. | AnalyzerNoReturnAttrKind
    100. | AnyX86InterruptAttrKind
    101. | AnyX86NoCallerSavedRegistersAttrKind
    102. | ArcWeakrefUnavailableAttrKind
    103. | ArgumentWithTypeTagAttrKind
    104. | ArmBuiltinAliasAttrKind
    105. | ArmLocallyStreamingAttrKind
    106. | ArmNewAttrKind
    107. | ArtificialAttrKind
    108. | AsmLabelAttrKind
    109. | AssertCapabilityAttrKind
    110. | AssertExclusiveLockAttrKind
    111. | AssertSharedLockAttrKind
    112. | AssumeAlignedAttrKind
    113. | AssumptionAttrKind
    114. | AvailabilityAttrKind
    115. | AvailableOnlyInDefaultEvalMethodAttrKind
    116. | BPFPreserveAccessIndexAttrKind
    117. | BPFPreserveStaticOffsetAttrKind
    118. | BTFDeclTagAttrKind
    119. | BlocksAttrKind
    120. | BuiltinAttrKind
    121. | C11NoReturnAttrKind
    122. | CFAuditedTransferAttrKind
    123. | CFGuardAttrKind
    124. | CFICanonicalJumpTableAttrKind
    125. | CFReturnsNotRetainedAttrKind
    126. | CFReturnsRetainedAttrKind
    127. | CFUnknownTransferAttrKind
    128. | CPUDispatchAttrKind
    129. | CPUSpecificAttrKind
    130. | CUDAConstantAttrKind
    131. | CUDADeviceAttrKind
    132. | CUDADeviceBuiltinSurfaceTypeAttrKind
    133. | CUDADeviceBuiltinTextureTypeAttrKind
    134. | CUDAGlobalAttrKind
    135. | CUDAHostAttrKind
    136. | CUDAInvalidTargetAttrKind
    137. | CUDALaunchBoundsAttrKind
    138. | CUDASharedAttrKind
    139. | CXX11NoReturnAttrKind
    140. | CallableWhenAttrKind
    141. | CallbackAttrKind
    142. | CapabilityAttrKind
    143. | CapturedRecordAttrKind
    144. | CleanupAttrKind
    145. | CmseNSEntryAttrKind
    146. | CodeModelAttrKind
    147. | CodeSegAttrKind
    148. | ColdAttrKind
    149. | CommonAttrKind
    150. | ConstAttrKind
    151. | ConstInitAttrKind
    152. | ConstructorAttrKind
    153. | ConsumableAttrKind
    154. | ConsumableAutoCastAttrKind
    155. | ConsumableSetOnReadAttrKind
    156. | ConvergentAttrKind
    157. | CoroDisableLifetimeBoundAttrKind
    158. | CoroLifetimeBoundAttrKind
    159. | CoroOnlyDestroyWhenCompleteAttrKind
    160. | CoroReturnTypeAttrKind
    161. | CoroWrapperAttrKind
    162. | CountedByAttrKind
    163. | DLLExportAttrKind
    164. | DLLExportStaticLocalAttrKind
    165. | DLLImportAttrKind
    166. | DLLImportStaticLocalAttrKind
    167. | DeprecatedAttrKind
    168. | DestructorAttrKind
    169. | DiagnoseAsBuiltinAttrKind
    170. | DiagnoseIfAttrKind
    171. | DisableSanitizerInstrumentationAttrKind
    172. | DisableTailCallsAttrKind
    173. | EmptyBasesAttrKind
    174. | EnableIfAttrKind
    175. | EnforceTCBAttrKind
    176. | EnforceTCBLeafAttrKind
    177. | EnumExtensibilityAttrKind
    178. | ErrorAttrKind
    179. | ExcludeFromExplicitInstantiationAttrKind
    180. | ExclusiveTrylockFunctionAttrKind
    181. | ExternalSourceSymbolAttrKind
    182. | FinalAttrKind
    183. | FlagEnumAttrKind
    184. | FlattenAttrKind
    185. | FormatAttrKind
    186. | FormatArgAttrKind
    187. | FunctionReturnThunksAttrKind
    188. | GNUInlineAttrKind
    189. | GuardedByAttrKind
    190. | GuardedVarAttrKind
    191. | HIPManagedAttrKind
    192. | HLSLNumThreadsAttrKind
    193. | HLSLResourceAttrKind
    194. | HLSLResourceBindingAttrKind
    195. | HLSLShaderAttrKind
    196. | HotAttrKind
    197. | IBActionAttrKind
    198. | IBOutletAttrKind
    199. | IBOutletCollectionAttrKind
    200. | InitPriorityAttrKind
    201. | InternalLinkageAttrKind
    202. | LTOVisibilityPublicAttrKind
    203. | LayoutVersionAttrKind
    204. | LeafAttrKind
    205. | LockReturnedAttrKind
    206. | LocksExcludedAttrKind
    207. | M68kInterruptAttrKind
    208. | MIGServerRoutineAttrKind
    209. | MSAllocatorAttrKind
    210. | MSConstexprAttrKind
    211. | MSInheritanceAttrKind
    212. | MSNoVTableAttrKind
    213. | MSP430InterruptAttrKind
    214. | MSStructAttrKind
    215. | MSVtorDispAttrKind
    216. | MaxFieldAlignmentAttrKind
    217. | MayAliasAttrKind
    218. | MaybeUndefAttrKind
    219. | MicroMipsAttrKind
    220. | MinSizeAttrKind
    221. | MinVectorWidthAttrKind
    222. | Mips16AttrKind
    223. | MipsInterruptAttrKind
    224. | MipsLongCallAttrKind
    225. | MipsShortCallAttrKind
    226. | NSConsumesSelfAttrKind
    227. | NSErrorDomainAttrKind
    228. | NSReturnsAutoreleasedAttrKind
    229. | NSReturnsNotRetainedAttrKind
    230. | NVPTXKernelAttrKind
    231. | NakedAttrKind
    232. | NoAliasAttrKind
    233. | NoCommonAttrKind
    234. | NoDebugAttrKind
    235. | NoDestroyAttrKind
    236. | NoDuplicateAttrKind
    237. | NoInstrumentFunctionAttrKind
    238. | NoMicroMipsAttrKind
    239. | NoMips16AttrKind
    240. | NoProfileFunctionAttrKind
    241. | NoRandomizeLayoutAttrKind
    242. | NoReturnAttrKind
    243. | NoSanitizeAttrKind
    244. | NoSpeculativeLoadHardeningAttrKind
    245. | NoSplitStackAttrKind
    246. | NoStackProtectorAttrKind
    247. | NoThreadSafetyAnalysisAttrKind
    248. | NoThrowAttrKind
    249. | NoUniqueAddressAttrKind
    250. | NoUwtableAttrKind
    251. | NotTailCalledAttrKind
    252. | OMPAllocateDeclAttrKind
    253. | OMPCaptureNoInitAttrKind
    254. | OMPDeclareTargetDeclAttrKind
    255. | OMPDeclareVariantAttrKind
    256. | OMPThreadPrivateDeclAttrKind
    257. | OSConsumesThisAttrKind
    258. | OSReturnsNotRetainedAttrKind
    259. | OSReturnsRetainedAttrKind
    260. | OSReturnsRetainedOnNonZeroAttrKind
    261. | OSReturnsRetainedOnZeroAttrKind
    262. | ObjCBridgeAttrKind
    263. | ObjCBridgeMutableAttrKind
    264. | ObjCBridgeRelatedAttrKind
    265. | ObjCExceptionAttrKind
    266. | ObjCExplicitProtocolImplAttrKind
    267. | ObjCExternallyRetainedAttrKind
    268. | ObjCIndependentClassAttrKind
    269. | ObjCMethodFamilyAttrKind
    270. | ObjCNSObjectAttrKind
    271. | ObjCPreciseLifetimeAttrKind
    272. | ObjCRequiresPropertyDefsAttrKind
    273. | ObjCRequiresSuperAttrKind
    274. | ObjCReturnsInnerPointerAttrKind
    275. | ObjCRootClassAttrKind
    276. | ObjCSubclassingRestrictedAttrKind
    277. | OpenCLIntelReqdSubGroupSizeAttrKind
    278. | OpenCLKernelAttrKind
    279. | OptimizeNoneAttrKind
    280. | OverrideAttrKind
    281. | OwnerAttrKind
    282. | OwnershipAttrKind
    283. | PackedAttrKind
    284. | ParamTypestateAttrKind
    285. | PatchableFunctionEntryAttrKind
    286. | PointerAttrKind
    287. | PragmaClangBSSSectionAttrKind
    288. | PragmaClangDataSectionAttrKind
    289. | PragmaClangRelroSectionAttrKind
    290. | PragmaClangRodataSectionAttrKind
    291. | PragmaClangTextSectionAttrKind
    292. | PreferredNameAttrKind
    293. | PreferredTypeAttrKind
    294. | PtGuardedByAttrKind
    295. | PtGuardedVarAttrKind
    296. | PureAttrKind
    297. | RISCVInterruptAttrKind
    298. | RandomizeLayoutAttrKind
    299. | ReadOnlyPlacementAttrKind
    300. | ReinitializesAttrKind
    301. | ReleaseCapabilityAttrKind
    302. | ReqdWorkGroupSizeAttrKind
    303. | RequiresCapabilityAttrKind
    304. | RestrictAttrKind
    305. | RetainAttrKind
    306. | ReturnTypestateAttrKind
    307. | ReturnsNonNullAttrKind
    308. | ReturnsTwiceAttrKind
    309. | SYCLKernelAttrKind
    310. | SYCLSpecialClassAttrKind
    311. | ScopedLockableAttrKind
    312. | SectionAttrKind
    313. | SelectAnyAttrKind
    314. | SentinelAttrKind
    315. | SetTypestateAttrKind
    316. | SharedTrylockFunctionAttrKind
    317. | SpeculativeLoadHardeningAttrKind
    318. | StandaloneDebugAttrKind
    319. | StrictFPAttrKind
    320. | StrictGuardStackCheckAttrKind
    321. | SwiftAsyncAttrKind
    322. | SwiftAsyncErrorAttrKind
    323. | SwiftAsyncNameAttrKind
    324. | SwiftAttrAttrKind
    325. | SwiftBridgeAttrKind
    326. | SwiftBridgedTypedefAttrKind
    327. | SwiftErrorAttrKind
    328. | SwiftImportAsNonGenericAttrKind
    329. | SwiftImportPropertyAsAccessorsAttrKind
    330. | SwiftNameAttrKind
    331. | SwiftNewTypeAttrKind
    332. | SwiftPrivateAttrKind
    333. | TLSModelAttrKind
    334. | TargetAttrKind
    335. | TargetClonesAttrKind
    336. | TargetVersionAttrKind
    337. | TestTypestateAttrKind
    338. | TransparentUnionAttrKind
    339. | TrivialABIAttrKind
    340. | TryAcquireCapabilityAttrKind
    341. | TypeTagForDatatypeAttrKind
    342. | TypeVisibilityAttrKind
    343. | UnavailableAttrKind
    344. | UninitializedAttrKind
    345. | UnsafeBufferUsageAttrKind
    346. | UnusedAttrKind
    347. | UsedAttrKind
    348. | UsingIfExistsAttrKind
    349. | UuidAttrKind
    350. | VecReturnAttrKind
    351. | VecTypeHintAttrKind
    352. | VisibilityAttrKind
    353. | WarnUnusedAttrKind
    354. | WarnUnusedResultAttrKind
    355. | WeakAttrKind
    356. | WeakImportAttrKind
    357. | WeakRefAttrKind
    358. | WebAssemblyExportNameAttrKind
    359. | WebAssemblyImportModuleAttrKind
    360. | WebAssemblyImportNameAttrKind
    361. | WorkGroupSizeHintAttrKind
    362. | X86ForceAlignArgPointerAttrKind
    363. | XRayInstrumentAttrKind
    364. | XRayLogArgsAttrKind
    365. | ZeroCallUsedRegsAttrKind
    366. | AbiTagAttrKind
    367. | AliasAttrKind
    368. | AlignValueAttrKind
    369. | BuiltinAliasAttrKind
    370. | CalledOnceAttrKind
    371. | IFuncAttrKind
    372. | InitSegAttrKind
    373. | LoaderUninitializedAttrKind
    374. | LoopHintAttrKind
    375. | ModeAttrKind
    376. | NoBuiltinAttrKind
    377. | NoEscapeAttrKind
    378. | OMPCaptureKindAttrKind
    379. | OMPDeclareSimdDeclAttrKind
    380. | OMPReferencedVarAttrKind
    381. | ObjCBoxableAttrKind
    382. | ObjCClassStubAttrKind
    383. | ObjCDesignatedInitializerAttrKind
    384. | ObjCDirectAttrKind
    385. | ObjCDirectMembersAttrKind
    386. | ObjCNonLazyClassAttrKind
    387. | ObjCNonRuntimeProtocolAttrKind
    388. | ObjCRuntimeNameAttrKind
    389. | ObjCRuntimeVisibleAttrKind
    390. | OpenCLAccessAttrKind
    391. | OverloadableAttrKind
    392. | RenderScriptKernelAttrKind
    393. | SwiftObjCMembersAttrKind
    394. | SwiftVersionedAdditionAttrKind
    395. | SwiftVersionedRemovalAttrKind
    396. | ThreadAttrKind
    type binary_operator_kind = Clang_ast_t.binary_operator_kind
    type binary_operator_info = Clang_ast_t.binary_operator_info = {
    1. boi_kind : binary_operator_kind;
    }
    type builtin_type_kind = Clang_ast_t.builtin_type_kind
    type cast_kind = Clang_ast_t.cast_kind
    type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
    1. xbs_name : string;
    2. xbs_virtual : bool;
    }
    type cast_expr_info = Clang_ast_t.cast_expr_info = {
    1. cei_cast_kind : cast_kind;
    2. cei_base_path : cxx_base_specifier list;
    }
    type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
    1. xnee_value : bool;
    }
    type decl_context_info = Clang_ast_t.decl_context_info = {
    1. dci_has_external_lexical_storage : bool;
    2. dci_has_external_visible_storage : bool;
    }
    type decl_kind = Clang_ast_t.decl_kind
    type declaration_name_kind = Clang_ast_t.declaration_name_kind
    type declaration_name = Clang_ast_t.declaration_name = {
    1. dn_kind : declaration_name_kind;
    2. dn_name : string;
    }
    type enum_decl_scope = Clang_ast_t.enum_decl_scope
    type enum_decl_info = Clang_ast_t.enum_decl_info = {
    1. edi_scope : enum_decl_scope option;
    2. edi_is_module_private : bool;
    }
    type input_kind = Clang_ast_t.input_kind
    type integer_literal_info = Clang_ast_t.integer_literal_info = {
    1. ili_is_signed : bool;
    2. ili_bitwidth : int;
    3. ili_value : string;
    }
    type integer_type_widths = Clang_ast_t.integer_type_widths = {
    1. itw_char_type : int;
    2. itw_short_type : int;
    3. itw_int_type : int;
    4. itw_long_type : int;
    5. itw_longlong_type : int;
    }
    type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
    type named_decl_info = Clang_ast_t.named_decl_info = {
    1. ni_name : string;
    2. ni_qual_name : string list;
    }
    type obj_c_access_control = Clang_ast_t.obj_c_access_control
    type obj_c_availability_check_expr_info = +Clang_ast_j (infer.ATDGenerated.Clang_ast_j)

    Module ATDGenerated.Clang_ast_j

    type access_specifier = Clang_ast_t.access_specifier
    type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
    type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
    1. aei_kind : atomic_expr_kind;
    }
    type attribute_kind = Clang_ast_t.attribute_kind =
    1. | AddressSpaceAttrKind
    2. | AnnotateTypeAttrKind
    3. | ArmInAttrKind
    4. | ArmInOutAttrKind
    5. | ArmMveStrictPolymorphismAttrKind
    6. | ArmOutAttrKind
    7. | ArmPreservesAttrKind
    8. | ArmStreamingAttrKind
    9. | ArmStreamingCompatibleAttrKind
    10. | BTFTypeTagAttrKind
    11. | CmseNSCallAttrKind
    12. | HLSLGroupSharedAddressSpaceAttrKind
    13. | HLSLParamModifierAttrKind
    14. | NoDerefAttrKind
    15. | ObjCGCAttrKind
    16. | ObjCInertUnsafeUnretainedAttrKind
    17. | ObjCKindOfAttrKind
    18. | OpenCLConstantAddressSpaceAttrKind
    19. | OpenCLGenericAddressSpaceAttrKind
    20. | OpenCLGlobalAddressSpaceAttrKind
    21. | OpenCLGlobalDeviceAddressSpaceAttrKind
    22. | OpenCLGlobalHostAddressSpaceAttrKind
    23. | OpenCLLocalAddressSpaceAttrKind
    24. | OpenCLPrivateAddressSpaceAttrKind
    25. | Ptr32AttrKind
    26. | Ptr64AttrKind
    27. | SPtrAttrKind
    28. | TypeNonNullAttrKind
    29. | TypeNullUnspecifiedAttrKind
    30. | TypeNullableAttrKind
    31. | TypeNullableResultAttrKind
    32. | UPtrAttrKind
    33. | WebAssemblyFuncrefAttrKind
    34. | CodeAlignAttrKind
    35. | FallThroughAttrKind
    36. | LikelyAttrKind
    37. | MustTailAttrKind
    38. | OpenCLUnrollHintAttrKind
    39. | UnlikelyAttrKind
    40. | AlwaysInlineAttrKind
    41. | NoInlineAttrKind
    42. | NoMergeAttrKind
    43. | SuppressAttrKind
    44. | AArch64SVEPcsAttrKind
    45. | AArch64VectorPcsAttrKind
    46. | AMDGPUKernelCallAttrKind
    47. | AcquireHandleAttrKind
    48. | AnyX86NoCfCheckAttrKind
    49. | CDeclAttrKind
    50. | FastCallAttrKind
    51. | IntelOclBiccAttrKind
    52. | LifetimeBoundAttrKind
    53. | M68kRTDAttrKind
    54. | MSABIAttrKind
    55. | NSReturnsRetainedAttrKind
    56. | ObjCOwnershipAttrKind
    57. | PascalAttrKind
    58. | PcsAttrKind
    59. | PreserveAllAttrKind
    60. | PreserveMostAttrKind
    61. | RegCallAttrKind
    62. | StdCallAttrKind
    63. | SwiftAsyncCallAttrKind
    64. | SwiftCallAttrKind
    65. | SysVABIAttrKind
    66. | ThisCallAttrKind
    67. | VectorCallAttrKind
    68. | SwiftAsyncContextAttrKind
    69. | SwiftContextAttrKind
    70. | SwiftErrorResultAttrKind
    71. | SwiftIndirectResultAttrKind
    72. | AnnotateAttrKind
    73. | CFConsumedAttrKind
    74. | CarriesDependencyAttrKind
    75. | NSConsumedAttrKind
    76. | NonNullAttrKind
    77. | OSConsumedAttrKind
    78. | PassObjectSizeAttrKind
    79. | ReleaseHandleAttrKind
    80. | UseHandleAttrKind
    81. | HLSLSV_DispatchThreadIDAttrKind
    82. | HLSLSV_GroupIndexAttrKind
    83. | AMDGPUFlatWorkGroupSizeAttrKind
    84. | AMDGPUNumSGPRAttrKind
    85. | AMDGPUNumVGPRAttrKind
    86. | AMDGPUWavesPerEUAttrKind
    87. | ARMInterruptAttrKind
    88. | AVRInterruptAttrKind
    89. | AVRSignalAttrKind
    90. | AcquireCapabilityAttrKind
    91. | AcquiredAfterAttrKind
    92. | AcquiredBeforeAttrKind
    93. | AlignMac68kAttrKind
    94. | AlignNaturalAttrKind
    95. | AlignedAttrKind
    96. | AllocAlignAttrKind
    97. | AllocSizeAttrKind
    98. | AlwaysDestroyAttrKind
    99. | AnalyzerNoReturnAttrKind
    100. | AnyX86InterruptAttrKind
    101. | AnyX86NoCallerSavedRegistersAttrKind
    102. | ArcWeakrefUnavailableAttrKind
    103. | ArgumentWithTypeTagAttrKind
    104. | ArmBuiltinAliasAttrKind
    105. | ArmLocallyStreamingAttrKind
    106. | ArmNewAttrKind
    107. | ArtificialAttrKind
    108. | AsmLabelAttrKind
    109. | AssertCapabilityAttrKind
    110. | AssertExclusiveLockAttrKind
    111. | AssertSharedLockAttrKind
    112. | AssumeAlignedAttrKind
    113. | AssumptionAttrKind
    114. | AvailabilityAttrKind
    115. | AvailableOnlyInDefaultEvalMethodAttrKind
    116. | BPFPreserveAccessIndexAttrKind
    117. | BPFPreserveStaticOffsetAttrKind
    118. | BTFDeclTagAttrKind
    119. | BlocksAttrKind
    120. | BuiltinAttrKind
    121. | C11NoReturnAttrKind
    122. | CFAuditedTransferAttrKind
    123. | CFGuardAttrKind
    124. | CFICanonicalJumpTableAttrKind
    125. | CFReturnsNotRetainedAttrKind
    126. | CFReturnsRetainedAttrKind
    127. | CFUnknownTransferAttrKind
    128. | CPUDispatchAttrKind
    129. | CPUSpecificAttrKind
    130. | CUDAConstantAttrKind
    131. | CUDADeviceAttrKind
    132. | CUDADeviceBuiltinSurfaceTypeAttrKind
    133. | CUDADeviceBuiltinTextureTypeAttrKind
    134. | CUDAGlobalAttrKind
    135. | CUDAHostAttrKind
    136. | CUDAInvalidTargetAttrKind
    137. | CUDALaunchBoundsAttrKind
    138. | CUDASharedAttrKind
    139. | CXX11NoReturnAttrKind
    140. | CallableWhenAttrKind
    141. | CallbackAttrKind
    142. | CapabilityAttrKind
    143. | CapturedRecordAttrKind
    144. | CleanupAttrKind
    145. | CmseNSEntryAttrKind
    146. | CodeModelAttrKind
    147. | CodeSegAttrKind
    148. | ColdAttrKind
    149. | CommonAttrKind
    150. | ConstAttrKind
    151. | ConstInitAttrKind
    152. | ConstructorAttrKind
    153. | ConsumableAttrKind
    154. | ConsumableAutoCastAttrKind
    155. | ConsumableSetOnReadAttrKind
    156. | ConvergentAttrKind
    157. | CoroDisableLifetimeBoundAttrKind
    158. | CoroLifetimeBoundAttrKind
    159. | CoroOnlyDestroyWhenCompleteAttrKind
    160. | CoroReturnTypeAttrKind
    161. | CoroWrapperAttrKind
    162. | CountedByAttrKind
    163. | DLLExportAttrKind
    164. | DLLExportStaticLocalAttrKind
    165. | DLLImportAttrKind
    166. | DLLImportStaticLocalAttrKind
    167. | DeprecatedAttrKind
    168. | DestructorAttrKind
    169. | DiagnoseAsBuiltinAttrKind
    170. | DiagnoseIfAttrKind
    171. | DisableSanitizerInstrumentationAttrKind
    172. | DisableTailCallsAttrKind
    173. | EmptyBasesAttrKind
    174. | EnableIfAttrKind
    175. | EnforceTCBAttrKind
    176. | EnforceTCBLeafAttrKind
    177. | EnumExtensibilityAttrKind
    178. | ErrorAttrKind
    179. | ExcludeFromExplicitInstantiationAttrKind
    180. | ExclusiveTrylockFunctionAttrKind
    181. | ExternalSourceSymbolAttrKind
    182. | FinalAttrKind
    183. | FlagEnumAttrKind
    184. | FlattenAttrKind
    185. | FormatAttrKind
    186. | FormatArgAttrKind
    187. | FunctionReturnThunksAttrKind
    188. | GNUInlineAttrKind
    189. | GuardedByAttrKind
    190. | GuardedVarAttrKind
    191. | HIPManagedAttrKind
    192. | HLSLNumThreadsAttrKind
    193. | HLSLResourceAttrKind
    194. | HLSLResourceBindingAttrKind
    195. | HLSLShaderAttrKind
    196. | HotAttrKind
    197. | IBActionAttrKind
    198. | IBOutletAttrKind
    199. | IBOutletCollectionAttrKind
    200. | InitPriorityAttrKind
    201. | InternalLinkageAttrKind
    202. | LTOVisibilityPublicAttrKind
    203. | LayoutVersionAttrKind
    204. | LeafAttrKind
    205. | LockReturnedAttrKind
    206. | LocksExcludedAttrKind
    207. | M68kInterruptAttrKind
    208. | MIGServerRoutineAttrKind
    209. | MSAllocatorAttrKind
    210. | MSConstexprAttrKind
    211. | MSInheritanceAttrKind
    212. | MSNoVTableAttrKind
    213. | MSP430InterruptAttrKind
    214. | MSStructAttrKind
    215. | MSVtorDispAttrKind
    216. | MaxFieldAlignmentAttrKind
    217. | MayAliasAttrKind
    218. | MaybeUndefAttrKind
    219. | MicroMipsAttrKind
    220. | MinSizeAttrKind
    221. | MinVectorWidthAttrKind
    222. | Mips16AttrKind
    223. | MipsInterruptAttrKind
    224. | MipsLongCallAttrKind
    225. | MipsShortCallAttrKind
    226. | NSConsumesSelfAttrKind
    227. | NSErrorDomainAttrKind
    228. | NSReturnsAutoreleasedAttrKind
    229. | NSReturnsNotRetainedAttrKind
    230. | NVPTXKernelAttrKind
    231. | NakedAttrKind
    232. | NoAliasAttrKind
    233. | NoCommonAttrKind
    234. | NoDebugAttrKind
    235. | NoDestroyAttrKind
    236. | NoDuplicateAttrKind
    237. | NoInstrumentFunctionAttrKind
    238. | NoMicroMipsAttrKind
    239. | NoMips16AttrKind
    240. | NoProfileFunctionAttrKind
    241. | NoRandomizeLayoutAttrKind
    242. | NoReturnAttrKind
    243. | NoSanitizeAttrKind
    244. | NoSpeculativeLoadHardeningAttrKind
    245. | NoSplitStackAttrKind
    246. | NoStackProtectorAttrKind
    247. | NoThreadSafetyAnalysisAttrKind
    248. | NoThrowAttrKind
    249. | NoUniqueAddressAttrKind
    250. | NoUwtableAttrKind
    251. | NotTailCalledAttrKind
    252. | OMPAllocateDeclAttrKind
    253. | OMPCaptureNoInitAttrKind
    254. | OMPDeclareTargetDeclAttrKind
    255. | OMPDeclareVariantAttrKind
    256. | OMPThreadPrivateDeclAttrKind
    257. | OSConsumesThisAttrKind
    258. | OSReturnsNotRetainedAttrKind
    259. | OSReturnsRetainedAttrKind
    260. | OSReturnsRetainedOnNonZeroAttrKind
    261. | OSReturnsRetainedOnZeroAttrKind
    262. | ObjCBridgeAttrKind
    263. | ObjCBridgeMutableAttrKind
    264. | ObjCBridgeRelatedAttrKind
    265. | ObjCExceptionAttrKind
    266. | ObjCExplicitProtocolImplAttrKind
    267. | ObjCExternallyRetainedAttrKind
    268. | ObjCIndependentClassAttrKind
    269. | ObjCMethodFamilyAttrKind
    270. | ObjCNSObjectAttrKind
    271. | ObjCPreciseLifetimeAttrKind
    272. | ObjCRequiresPropertyDefsAttrKind
    273. | ObjCRequiresSuperAttrKind
    274. | ObjCReturnsInnerPointerAttrKind
    275. | ObjCRootClassAttrKind
    276. | ObjCSubclassingRestrictedAttrKind
    277. | OpenCLIntelReqdSubGroupSizeAttrKind
    278. | OpenCLKernelAttrKind
    279. | OptimizeNoneAttrKind
    280. | OverrideAttrKind
    281. | OwnerAttrKind
    282. | OwnershipAttrKind
    283. | PackedAttrKind
    284. | ParamTypestateAttrKind
    285. | PatchableFunctionEntryAttrKind
    286. | PointerAttrKind
    287. | PragmaClangBSSSectionAttrKind
    288. | PragmaClangDataSectionAttrKind
    289. | PragmaClangRelroSectionAttrKind
    290. | PragmaClangRodataSectionAttrKind
    291. | PragmaClangTextSectionAttrKind
    292. | PreferredNameAttrKind
    293. | PreferredTypeAttrKind
    294. | PtGuardedByAttrKind
    295. | PtGuardedVarAttrKind
    296. | PureAttrKind
    297. | RISCVInterruptAttrKind
    298. | RandomizeLayoutAttrKind
    299. | ReadOnlyPlacementAttrKind
    300. | ReinitializesAttrKind
    301. | ReleaseCapabilityAttrKind
    302. | ReqdWorkGroupSizeAttrKind
    303. | RequiresCapabilityAttrKind
    304. | RestrictAttrKind
    305. | RetainAttrKind
    306. | ReturnTypestateAttrKind
    307. | ReturnsNonNullAttrKind
    308. | ReturnsTwiceAttrKind
    309. | SYCLKernelAttrKind
    310. | SYCLSpecialClassAttrKind
    311. | ScopedLockableAttrKind
    312. | SectionAttrKind
    313. | SelectAnyAttrKind
    314. | SentinelAttrKind
    315. | SetTypestateAttrKind
    316. | SharedTrylockFunctionAttrKind
    317. | SpeculativeLoadHardeningAttrKind
    318. | StandaloneDebugAttrKind
    319. | StrictFPAttrKind
    320. | StrictGuardStackCheckAttrKind
    321. | SwiftAsyncAttrKind
    322. | SwiftAsyncErrorAttrKind
    323. | SwiftAsyncNameAttrKind
    324. | SwiftAttrAttrKind
    325. | SwiftBridgeAttrKind
    326. | SwiftBridgedTypedefAttrKind
    327. | SwiftErrorAttrKind
    328. | SwiftImportAsNonGenericAttrKind
    329. | SwiftImportPropertyAsAccessorsAttrKind
    330. | SwiftNameAttrKind
    331. | SwiftNewTypeAttrKind
    332. | SwiftPrivateAttrKind
    333. | TLSModelAttrKind
    334. | TargetAttrKind
    335. | TargetClonesAttrKind
    336. | TargetVersionAttrKind
    337. | TestTypestateAttrKind
    338. | TransparentUnionAttrKind
    339. | TrivialABIAttrKind
    340. | TryAcquireCapabilityAttrKind
    341. | TypeTagForDatatypeAttrKind
    342. | TypeVisibilityAttrKind
    343. | UnavailableAttrKind
    344. | UninitializedAttrKind
    345. | UnsafeBufferUsageAttrKind
    346. | UnusedAttrKind
    347. | UsedAttrKind
    348. | UsingIfExistsAttrKind
    349. | UuidAttrKind
    350. | VecReturnAttrKind
    351. | VecTypeHintAttrKind
    352. | VisibilityAttrKind
    353. | WarnUnusedAttrKind
    354. | WarnUnusedResultAttrKind
    355. | WeakAttrKind
    356. | WeakImportAttrKind
    357. | WeakRefAttrKind
    358. | WebAssemblyExportNameAttrKind
    359. | WebAssemblyImportModuleAttrKind
    360. | WebAssemblyImportNameAttrKind
    361. | WorkGroupSizeHintAttrKind
    362. | X86ForceAlignArgPointerAttrKind
    363. | XRayInstrumentAttrKind
    364. | XRayLogArgsAttrKind
    365. | ZeroCallUsedRegsAttrKind
    366. | AbiTagAttrKind
    367. | AliasAttrKind
    368. | AlignValueAttrKind
    369. | BuiltinAliasAttrKind
    370. | CalledOnceAttrKind
    371. | IFuncAttrKind
    372. | InitSegAttrKind
    373. | LoaderUninitializedAttrKind
    374. | LoopHintAttrKind
    375. | ModeAttrKind
    376. | NoBuiltinAttrKind
    377. | NoEscapeAttrKind
    378. | OMPCaptureKindAttrKind
    379. | OMPDeclareSimdDeclAttrKind
    380. | OMPReferencedVarAttrKind
    381. | ObjCBoxableAttrKind
    382. | ObjCClassStubAttrKind
    383. | ObjCDesignatedInitializerAttrKind
    384. | ObjCDirectAttrKind
    385. | ObjCDirectMembersAttrKind
    386. | ObjCNonLazyClassAttrKind
    387. | ObjCNonRuntimeProtocolAttrKind
    388. | ObjCRuntimeNameAttrKind
    389. | ObjCRuntimeVisibleAttrKind
    390. | OpenCLAccessAttrKind
    391. | OverloadableAttrKind
    392. | RenderScriptKernelAttrKind
    393. | SwiftObjCMembersAttrKind
    394. | SwiftVersionedAdditionAttrKind
    395. | SwiftVersionedRemovalAttrKind
    396. | ThreadAttrKind
    type binary_operator_kind = Clang_ast_t.binary_operator_kind
    type binary_operator_info = Clang_ast_t.binary_operator_info = {
    1. boi_kind : binary_operator_kind;
    }
    type builtin_type_kind = Clang_ast_t.builtin_type_kind
    type cast_kind = Clang_ast_t.cast_kind
    type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
    1. xbs_name : string;
    2. xbs_virtual : bool;
    }
    type cast_expr_info = Clang_ast_t.cast_expr_info = {
    1. cei_cast_kind : cast_kind;
    2. cei_base_path : cxx_base_specifier list;
    }
    type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
    1. xnee_value : bool;
    }
    type decl_context_info = Clang_ast_t.decl_context_info = {
    1. dci_has_external_lexical_storage : bool;
    2. dci_has_external_visible_storage : bool;
    }
    type decl_kind = Clang_ast_t.decl_kind
    type declaration_name_kind = Clang_ast_t.declaration_name_kind
    type declaration_name = Clang_ast_t.declaration_name = {
    1. dn_kind : declaration_name_kind;
    2. dn_name : string;
    }
    type enum_decl_scope = Clang_ast_t.enum_decl_scope
    type enum_decl_info = Clang_ast_t.enum_decl_info = {
    1. edi_scope : enum_decl_scope option;
    2. edi_is_module_private : bool;
    }
    type input_kind = Clang_ast_t.input_kind
    type integer_literal_info = Clang_ast_t.integer_literal_info = {
    1. ili_is_signed : bool;
    2. ili_bitwidth : int;
    3. ili_value : string;
    }
    type integer_type_widths = Clang_ast_t.integer_type_widths = {
    1. itw_char_type : int;
    2. itw_short_type : int;
    3. itw_int_type : int;
    4. itw_long_type : int;
    5. itw_longlong_type : int;
    }
    type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
    type named_decl_info = Clang_ast_t.named_decl_info = {
    1. ni_name : string;
    2. ni_qual_name : string list;
    }
    type obj_c_access_control = Clang_ast_t.obj_c_access_control
    type obj_c_availability_check_expr_info = Clang_ast_t.obj_c_availability_check_expr_info = {
    1. oacei_version : string option;
    }
    type obj_c_bridge_cast_kind = Clang_ast_t.obj_c_bridge_cast_kind
    type obj_c_bridged_cast_expr_info = Clang_ast_t.obj_c_bridged_cast_expr_info = {
    1. obcei_cast_kind : obj_c_bridge_cast_kind;
    }
    type obj_c_ivar_decl_info = Clang_ast_t.obj_c_ivar_decl_info = {
    1. ovdi_is_synthesize : bool;
    2. ovdi_access_control : obj_c_access_control;
    }
    type obj_c_property_control = Clang_ast_t.obj_c_property_control
    type obj_c_subscript_kind = Clang_ast_t.obj_c_subscript_kind
    type objc_lifetime_attr = Clang_ast_t.objc_lifetime_attr
    type attr_type_info = Clang_ast_t.attr_type_info = {
    1. ati_attr_kind : attribute_kind;
    2. ati_lifetime : objc_lifetime_attr;
    }
    type object_kind = Clang_ast_t.object_kind
    type offset_of_expr_info = Clang_ast_t.offset_of_expr_info = {
    1. ooe_literal : integer_literal_info option;
    }
    type pointer = Clang_ast_t.pointer
    type addr_label_expr_info = Clang_ast_t.addr_label_expr_info = {
    1. alei_label : string;
    2. alei_pointer : pointer;
    }
    type cxx_new_expr_info = Clang_ast_t.cxx_new_expr_info = {
    1. xnei_is_array : bool;
    2. xnei_array_size_expr : pointer option;
    3. xnei_initializer_expr : pointer option;
    4. xnei_placement_args : pointer list;
    }
    type cxx_temporary = Clang_ast_t.cxx_temporary
    type cxx_bind_temporary_expr_info = Clang_ast_t.cxx_bind_temporary_expr_info = {
    1. xbtei_cxx_temporary : cxx_temporary;
    }
    type goto_stmt_info = Clang_ast_t.goto_stmt_info = {
    1. gsi_label : string;
    2. gsi_pointer : pointer;
    }
    type obj_c_array_literal_expr_info = Clang_ast_t.obj_c_array_literal_expr_info = {
    1. oalei_array_method : pointer option;
    }
    type obj_c_dictionary_literal_expr_info = @@ -208,104 +208,104 @@ * stmt list * expr_info * binary_operator_info - * compound_assign_operator_info
  • | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
  • | AsTypeExpr of stmt_info * stmt list * expr_info
  • | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
  • | ArraySubscriptExpr of stmt_info * stmt list * expr_info
  • | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
  • | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
  • | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
  • | ConditionalOperator of stmt_info * stmt list * expr_info
  • | BinaryConditionalOperator of stmt_info * stmt list * expr_info
  • | AttributedStmt of stmt_info * stmt list * attribute list
  • | SwitchStmt of stmt_info * stmt list * switch_stmt_info
  • | DefaultStmt of stmt_info * stmt list
  • | CaseStmt of stmt_info * stmt list
  • | SEHTryStmt of stmt_info * stmt list
  • | SEHLeaveStmt of stmt_info * stmt list
  • | SEHFinallyStmt of stmt_info * stmt list
  • | SEHExceptStmt of stmt_info * stmt list
  • | ReturnStmt of stmt_info * stmt list
  • | ObjCForCollectionStmt of stmt_info * stmt list
  • | ObjCAutoreleasePoolStmt of stmt_info * stmt list
  • | ObjCAtTryStmt of stmt_info * stmt list
  • | ObjCAtThrowStmt of stmt_info * stmt list
  • | ObjCAtSynchronizedStmt of stmt_info * stmt list
  • | ObjCAtFinallyStmt of stmt_info * stmt list
  • | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
  • | OMPTeamsDirective of stmt_info * stmt list
  • | OMPTaskyieldDirective of stmt_info * stmt list
  • | OMPTaskwaitDirective of stmt_info * stmt list
  • | OMPTaskgroupDirective of stmt_info * stmt list
  • | OMPTaskDirective of stmt_info * stmt list
  • | OMPTargetUpdateDirective of stmt_info * stmt list
  • | OMPTargetTeamsDirective of stmt_info * stmt list
  • | OMPTargetParallelForDirective of stmt_info * stmt list
  • | OMPTargetParallelDirective of stmt_info * stmt list
  • | OMPTargetExitDataDirective of stmt_info * stmt list
  • | OMPTargetEnterDataDirective of stmt_info * stmt list
  • | OMPTargetDirective of stmt_info * stmt list
  • | OMPTargetDataDirective of stmt_info * stmt list
  • | OMPSingleDirective of stmt_info * stmt list
  • | OMPSectionsDirective of stmt_info * stmt list
  • | OMPSectionDirective of stmt_info * stmt list
  • | OMPScopeDirective of stmt_info * stmt list
  • | OMPScanDirective of stmt_info * stmt list
  • | OMPParallelSectionsDirective of stmt_info * stmt list
  • | OMPParallelMasterDirective of stmt_info * stmt list
  • | OMPParallelMaskedDirective of stmt_info * stmt list
  • | OMPParallelDirective of stmt_info * stmt list
  • | OMPOrderedDirective of stmt_info * stmt list
  • | OMPMetaDirective of stmt_info * stmt list
  • | OMPMasterDirective of stmt_info * stmt list
  • | OMPMaskedDirective of stmt_info * stmt list
  • | OMPUnrollDirective of stmt_info * stmt list
  • | OMPTileDirective of stmt_info * stmt list
  • | OMPTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPTaskLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTargetSimdDirective of stmt_info * stmt list
  • | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetParallelForSimdDirective of stmt_info * stmt list
  • | OMPSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPParallelForSimdDirective of stmt_info * stmt list
  • | OMPParallelForDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPGenericLoopDirective of stmt_info * stmt list
  • | OMPForSimdDirective of stmt_info * stmt list
  • | OMPForDirective of stmt_info * stmt list
  • | OMPDistributeSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForDirective of stmt_info * stmt list
  • | OMPDistributeDirective of stmt_info * stmt list
  • | OMPInteropDirective of stmt_info * stmt list
  • | OMPFlushDirective of stmt_info * stmt list
  • | OMPErrorDirective of stmt_info * stmt list
  • | OMPDispatchDirective of stmt_info * stmt list
  • | OMPDepobjDirective of stmt_info * stmt list
  • | OMPCriticalDirective of stmt_info * stmt list
  • | OMPCancellationPointDirective of stmt_info * stmt list
  • | OMPCancelDirective of stmt_info * stmt list
  • | OMPBarrierDirective of stmt_info * stmt list
  • | OMPAtomicDirective of stmt_info * stmt list
  • | OMPCanonicalLoop of stmt_info * stmt list
  • | NullStmt of stmt_info * stmt list
  • | MSDependentExistsStmt of stmt_info * stmt list
  • | IndirectGotoStmt of stmt_info * stmt list
  • | IfStmt of stmt_info * stmt list * if_stmt_info
  • | GotoStmt of stmt_info * stmt list * goto_stmt_info
  • | ForStmt of stmt_info * stmt list
  • | DoStmt of stmt_info * stmt list
  • | DeclStmt of stmt_info * stmt list * decl list
  • | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
  • | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
  • | ContinueStmt of stmt_info * stmt list
  • | CompoundStmt of stmt_info * stmt list
  • | CapturedStmt of stmt_info * stmt list
  • | CXXTryStmt of stmt_info * stmt list
  • | CXXForRangeStmt of stmt_info * stmt list
  • | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
  • | BreakStmt of stmt_info * stmt list
  • | MSAsmStmt of stmt_info * stmt list
  • | GCCAsmStmt of stmt_info * stmt list
  • and switch_stmt_info = Clang_ast_t.switch_stmt_info = {
    1. ssi_init : pointer option;
    2. ssi_cond_var : stmt option;
    3. ssi_cond : pointer;
    4. ssi_body : pointer;
    5. ssi_is_all_enum_cases_covered : bool;
    }
    and template_decl_info = Clang_ast_t.template_decl_info = {
    1. tdi_specializations : decl list;
    }
    and var_decl_info = Clang_ast_t.var_decl_info = {
    1. vdi_is_global : bool;
    2. vdi_is_extern : bool;
    3. vdi_is_static : bool;
    4. vdi_is_static_local : bool;
    5. vdi_is_static_data_member : bool;
    6. vdi_is_constexpr : bool;
    7. vdi_is_init_ice : bool;
    8. vdi_init_expr : stmt option;
    9. vdi_is_init_expr_cxx11_constant : bool;
    10. vdi_parm_index_in_function : int option;
    }
    type lookup = Clang_ast_t.lookup = {
    1. lup_decl_name : string;
    2. lup_decl_refs : decl_ref list;
    }
    type lookups = Clang_ast_t.lookups = {
    1. lups_decl_ref : decl_ref;
    2. lups_primary_context_pointer : pointer option;
    3. lups_lookups : lookup list;
    4. lups_has_undeserialized_decls : bool;
    }
    val write_access_specifier : Stdlib.Buffer.t -> access_specifier -> unit

    Output a JSON value of type access_specifier.

    val string_of_access_specifier : ?len:int -> access_specifier -> string

    Serialize a value of type access_specifier into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_access_specifier : + * compound_assign_operator_info
  • | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
  • | AsTypeExpr of stmt_info * stmt list * expr_info
  • | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
  • | ArraySubscriptExpr of stmt_info * stmt list * expr_info
  • | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
  • | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
  • | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
  • | ConditionalOperator of stmt_info * stmt list * expr_info
  • | BinaryConditionalOperator of stmt_info * stmt list * expr_info
  • | AttributedStmt of stmt_info * stmt list * attribute list
  • | SwitchStmt of stmt_info * stmt list * switch_stmt_info
  • | DefaultStmt of stmt_info * stmt list
  • | CaseStmt of stmt_info * stmt list
  • | SEHTryStmt of stmt_info * stmt list
  • | SEHLeaveStmt of stmt_info * stmt list
  • | SEHFinallyStmt of stmt_info * stmt list
  • | SEHExceptStmt of stmt_info * stmt list
  • | ReturnStmt of stmt_info * stmt list
  • | ObjCForCollectionStmt of stmt_info * stmt list
  • | ObjCAutoreleasePoolStmt of stmt_info * stmt list
  • | ObjCAtTryStmt of stmt_info * stmt list
  • | ObjCAtThrowStmt of stmt_info * stmt list
  • | ObjCAtSynchronizedStmt of stmt_info * stmt list
  • | ObjCAtFinallyStmt of stmt_info * stmt list
  • | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
  • | OMPTeamsDirective of stmt_info * stmt list
  • | OMPTaskyieldDirective of stmt_info * stmt list
  • | OMPTaskwaitDirective of stmt_info * stmt list
  • | OMPTaskgroupDirective of stmt_info * stmt list
  • | OMPTaskDirective of stmt_info * stmt list
  • | OMPTargetUpdateDirective of stmt_info * stmt list
  • | OMPTargetTeamsDirective of stmt_info * stmt list
  • | OMPTargetParallelForDirective of stmt_info * stmt list
  • | OMPTargetParallelDirective of stmt_info * stmt list
  • | OMPTargetExitDataDirective of stmt_info * stmt list
  • | OMPTargetEnterDataDirective of stmt_info * stmt list
  • | OMPTargetDirective of stmt_info * stmt list
  • | OMPTargetDataDirective of stmt_info * stmt list
  • | OMPSingleDirective of stmt_info * stmt list
  • | OMPSectionsDirective of stmt_info * stmt list
  • | OMPSectionDirective of stmt_info * stmt list
  • | OMPScopeDirective of stmt_info * stmt list
  • | OMPScanDirective of stmt_info * stmt list
  • | OMPParallelSectionsDirective of stmt_info * stmt list
  • | OMPParallelMasterDirective of stmt_info * stmt list
  • | OMPParallelMaskedDirective of stmt_info * stmt list
  • | OMPParallelDirective of stmt_info * stmt list
  • | OMPOrderedDirective of stmt_info * stmt list
  • | OMPMetaDirective of stmt_info * stmt list
  • | OMPMasterDirective of stmt_info * stmt list
  • | OMPMaskedDirective of stmt_info * stmt list
  • | OMPUnrollDirective of stmt_info * stmt list
  • | OMPTileDirective of stmt_info * stmt list
  • | OMPTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPTaskLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
  • | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
  • | OMPTargetSimdDirective of stmt_info * stmt list
  • | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPTargetParallelForSimdDirective of stmt_info * stmt list
  • | OMPSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPParallelGenericLoopDirective of stmt_info * stmt list
  • | OMPParallelForSimdDirective of stmt_info * stmt list
  • | OMPParallelForDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMasterTaskLoopDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
  • | OMPMaskedTaskLoopDirective of stmt_info * stmt list
  • | OMPGenericLoopDirective of stmt_info * stmt list
  • | OMPForSimdDirective of stmt_info * stmt list
  • | OMPForDirective of stmt_info * stmt list
  • | OMPDistributeSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
  • | OMPDistributeParallelForDirective of stmt_info * stmt list
  • | OMPDistributeDirective of stmt_info * stmt list
  • | OMPInteropDirective of stmt_info * stmt list
  • | OMPFlushDirective of stmt_info * stmt list
  • | OMPErrorDirective of stmt_info * stmt list
  • | OMPDispatchDirective of stmt_info * stmt list
  • | OMPDepobjDirective of stmt_info * stmt list
  • | OMPCriticalDirective of stmt_info * stmt list
  • | OMPCancellationPointDirective of stmt_info * stmt list
  • | OMPCancelDirective of stmt_info * stmt list
  • | OMPBarrierDirective of stmt_info * stmt list
  • | OMPAtomicDirective of stmt_info * stmt list
  • | OMPCanonicalLoop of stmt_info * stmt list
  • | NullStmt of stmt_info * stmt list
  • | MSDependentExistsStmt of stmt_info * stmt list
  • | IndirectGotoStmt of stmt_info * stmt list
  • | IfStmt of stmt_info * stmt list * if_stmt_info
  • | GotoStmt of stmt_info * stmt list * goto_stmt_info
  • | ForStmt of stmt_info * stmt list
  • | DoStmt of stmt_info * stmt list
  • | DeclStmt of stmt_info * stmt list * decl list
  • | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
  • | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
  • | ContinueStmt of stmt_info * stmt list
  • | CompoundStmt of stmt_info * stmt list
  • | CapturedStmt of stmt_info * stmt list
  • | CXXTryStmt of stmt_info * stmt list
  • | CXXForRangeStmt of stmt_info * stmt list
  • | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
  • | BreakStmt of stmt_info * stmt list
  • | MSAsmStmt of stmt_info * stmt list
  • | GCCAsmStmt of stmt_info * stmt list
  • and switch_stmt_info = Clang_ast_t.switch_stmt_info = {
    1. ssi_init : pointer option;
    2. ssi_cond_var : stmt option;
    3. ssi_cond : pointer;
    4. ssi_body : pointer;
    5. ssi_is_all_enum_cases_covered : bool;
    }
    and template_decl_info = Clang_ast_t.template_decl_info = {
    1. tdi_specializations : decl list;
    }
    and var_decl_info = Clang_ast_t.var_decl_info = {
    1. vdi_is_global : bool;
    2. vdi_is_extern : bool;
    3. vdi_is_static : bool;
    4. vdi_is_static_local : bool;
    5. vdi_is_static_data_member : bool;
    6. vdi_is_constexpr : bool;
    7. vdi_is_init_ice : bool;
    8. vdi_init_expr : stmt option;
    9. vdi_is_init_expr_cxx11_constant : bool;
    10. vdi_parm_index_in_function : int option;
    }
    type lookup = Clang_ast_t.lookup = {
    1. lup_decl_name : string;
    2. lup_decl_refs : decl_ref list;
    }
    type lookups = Clang_ast_t.lookups = {
    1. lups_decl_ref : decl_ref;
    2. lups_primary_context_pointer : pointer option;
    3. lups_lookups : lookup list;
    4. lups_has_undeserialized_decls : bool;
    }
    val write_access_specifier : Stdlib.Buffer.t -> access_specifier -> unit

    Output a JSON value of type access_specifier.

    val string_of_access_specifier : ?len:int -> access_specifier -> string

    Serialize a value of type access_specifier into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_access_specifier : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - access_specifier

    Input JSON data of type access_specifier.

    val access_specifier_of_string : string -> access_specifier

    Deserialize JSON data of type access_specifier.

    val write_atomic_expr_kind : Stdlib.Buffer.t -> atomic_expr_kind -> unit

    Output a JSON value of type atomic_expr_kind.

    val string_of_atomic_expr_kind : ?len:int -> atomic_expr_kind -> string

    Serialize a value of type atomic_expr_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_atomic_expr_kind : + access_specifier

    Input JSON data of type access_specifier.

    val access_specifier_of_string : string -> access_specifier

    Deserialize JSON data of type access_specifier.

    val write_atomic_expr_kind : Stdlib.Buffer.t -> atomic_expr_kind -> unit

    Output a JSON value of type atomic_expr_kind.

    val string_of_atomic_expr_kind : ?len:int -> atomic_expr_kind -> string

    Serialize a value of type atomic_expr_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_atomic_expr_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - atomic_expr_kind

    Input JSON data of type atomic_expr_kind.

    val atomic_expr_kind_of_string : string -> atomic_expr_kind

    Deserialize JSON data of type atomic_expr_kind.

    val write_atomic_expr_info : Stdlib.Buffer.t -> atomic_expr_info -> unit

    Output a JSON value of type atomic_expr_info.

    val string_of_atomic_expr_info : ?len:int -> atomic_expr_info -> string

    Serialize a value of type atomic_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_atomic_expr_info : + atomic_expr_kind

    Input JSON data of type atomic_expr_kind.

    val atomic_expr_kind_of_string : string -> atomic_expr_kind

    Deserialize JSON data of type atomic_expr_kind.

    val write_atomic_expr_info : Stdlib.Buffer.t -> atomic_expr_info -> unit

    Output a JSON value of type atomic_expr_info.

    val string_of_atomic_expr_info : ?len:int -> atomic_expr_info -> string

    Serialize a value of type atomic_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_atomic_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - atomic_expr_info

    Input JSON data of type atomic_expr_info.

    val atomic_expr_info_of_string : string -> atomic_expr_info

    Deserialize JSON data of type atomic_expr_info.

    val write_attribute_kind : Stdlib.Buffer.t -> attribute_kind -> unit

    Output a JSON value of type attribute_kind.

    val string_of_attribute_kind : ?len:int -> attribute_kind -> string

    Serialize a value of type attribute_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute_kind : + atomic_expr_info

    Input JSON data of type atomic_expr_info.

    val atomic_expr_info_of_string : string -> atomic_expr_info

    Deserialize JSON data of type atomic_expr_info.

    val write_attribute_kind : Stdlib.Buffer.t -> attribute_kind -> unit

    Output a JSON value of type attribute_kind.

    val string_of_attribute_kind : ?len:int -> attribute_kind -> string

    Serialize a value of type attribute_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> attribute_kind

    Input JSON data of type attribute_kind.

    val attribute_kind_of_string : string -> attribute_kind

    Deserialize JSON data of type attribute_kind.

    val write_binary_operator_kind : Stdlib.Buffer.t -> binary_operator_kind -> - unit

    Output a JSON value of type binary_operator_kind.

    val string_of_binary_operator_kind : ?len:int -> binary_operator_kind -> string

    Serialize a value of type binary_operator_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_binary_operator_kind : + unit

    Output a JSON value of type binary_operator_kind.

    val string_of_binary_operator_kind : ?len:int -> binary_operator_kind -> string

    Serialize a value of type binary_operator_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_binary_operator_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> binary_operator_kind

    Input JSON data of type binary_operator_kind.

    val binary_operator_kind_of_string : string -> binary_operator_kind

    Deserialize JSON data of type binary_operator_kind.

    val write_binary_operator_info : Stdlib.Buffer.t -> binary_operator_info -> - unit

    Output a JSON value of type binary_operator_info.

    val string_of_binary_operator_info : ?len:int -> binary_operator_info -> string

    Serialize a value of type binary_operator_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_binary_operator_info : + unit

    Output a JSON value of type binary_operator_info.

    val string_of_binary_operator_info : ?len:int -> binary_operator_info -> string

    Serialize a value of type binary_operator_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_binary_operator_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - binary_operator_info

    Input JSON data of type binary_operator_info.

    val binary_operator_info_of_string : string -> binary_operator_info

    Deserialize JSON data of type binary_operator_info.

    val write_builtin_type_kind : Stdlib.Buffer.t -> builtin_type_kind -> unit

    Output a JSON value of type builtin_type_kind.

    val string_of_builtin_type_kind : ?len:int -> builtin_type_kind -> string

    Serialize a value of type builtin_type_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_builtin_type_kind : + binary_operator_info

    Input JSON data of type binary_operator_info.

    val binary_operator_info_of_string : string -> binary_operator_info

    Deserialize JSON data of type binary_operator_info.

    val write_builtin_type_kind : Stdlib.Buffer.t -> builtin_type_kind -> unit

    Output a JSON value of type builtin_type_kind.

    val string_of_builtin_type_kind : ?len:int -> builtin_type_kind -> string

    Serialize a value of type builtin_type_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_builtin_type_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - builtin_type_kind

    Input JSON data of type builtin_type_kind.

    val builtin_type_kind_of_string : string -> builtin_type_kind

    Deserialize JSON data of type builtin_type_kind.

    val write_cast_kind : Stdlib.Buffer.t -> cast_kind -> unit

    Output a JSON value of type cast_kind.

    val string_of_cast_kind : ?len:int -> cast_kind -> string

    Serialize a value of type cast_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cast_kind : + builtin_type_kind

    Input JSON data of type builtin_type_kind.

    val builtin_type_kind_of_string : string -> builtin_type_kind

    Deserialize JSON data of type builtin_type_kind.

    val write_cast_kind : Stdlib.Buffer.t -> cast_kind -> unit

    Output a JSON value of type cast_kind.

    val string_of_cast_kind : ?len:int -> cast_kind -> string

    Serialize a value of type cast_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cast_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cast_kind

    Input JSON data of type cast_kind.

    val cast_kind_of_string : string -> cast_kind

    Deserialize JSON data of type cast_kind.

    val write_cxx_base_specifier : Stdlib.Buffer.t -> cxx_base_specifier -> unit

    Output a JSON value of type cxx_base_specifier.

    val string_of_cxx_base_specifier : ?len:int -> cxx_base_specifier -> string

    Serialize a value of type cxx_base_specifier into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_base_specifier : + cast_kind

    Input JSON data of type cast_kind.

    val cast_kind_of_string : string -> cast_kind

    Deserialize JSON data of type cast_kind.

    val write_cxx_base_specifier : Stdlib.Buffer.t -> cxx_base_specifier -> unit

    Output a JSON value of type cxx_base_specifier.

    val string_of_cxx_base_specifier : ?len:int -> cxx_base_specifier -> string

    Serialize a value of type cxx_base_specifier into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_base_specifier : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cxx_base_specifier

    Input JSON data of type cxx_base_specifier.

    val cxx_base_specifier_of_string : string -> cxx_base_specifier

    Deserialize JSON data of type cxx_base_specifier.

    val write_cast_expr_info : Stdlib.Buffer.t -> cast_expr_info -> unit

    Output a JSON value of type cast_expr_info.

    val string_of_cast_expr_info : ?len:int -> cast_expr_info -> string

    Serialize a value of type cast_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cast_expr_info : + cxx_base_specifier

    Input JSON data of type cxx_base_specifier.

    val cxx_base_specifier_of_string : string -> cxx_base_specifier

    Deserialize JSON data of type cxx_base_specifier.

    val write_cast_expr_info : Stdlib.Buffer.t -> cast_expr_info -> unit

    Output a JSON value of type cast_expr_info.

    val string_of_cast_expr_info : ?len:int -> cast_expr_info -> string

    Serialize a value of type cast_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cast_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cast_expr_info

    Input JSON data of type cast_expr_info.

    val cast_expr_info_of_string : string -> cast_expr_info

    Deserialize JSON data of type cast_expr_info.

    val write_cxx_noexcept_expr_info : Stdlib.Buffer.t -> cxx_noexcept_expr_info -> unit

    Output a JSON value of type cxx_noexcept_expr_info.

    val string_of_cxx_noexcept_expr_info : - ?len:int -> + ?len:int -> cxx_noexcept_expr_info -> string

    Serialize a value of type cxx_noexcept_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_noexcept_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cxx_noexcept_expr_info

    Input JSON data of type cxx_noexcept_expr_info.

    val cxx_noexcept_expr_info_of_string : string -> cxx_noexcept_expr_info

    Deserialize JSON data of type cxx_noexcept_expr_info.

    val write_decl_context_info : Stdlib.Buffer.t -> decl_context_info -> unit

    Output a JSON value of type decl_context_info.

    val string_of_decl_context_info : ?len:int -> decl_context_info -> string

    Serialize a value of type decl_context_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_context_info : + cxx_noexcept_expr_info

    Input JSON data of type cxx_noexcept_expr_info.

    val cxx_noexcept_expr_info_of_string : string -> cxx_noexcept_expr_info

    Deserialize JSON data of type cxx_noexcept_expr_info.

    val write_decl_context_info : Stdlib.Buffer.t -> decl_context_info -> unit

    Output a JSON value of type decl_context_info.

    val string_of_decl_context_info : ?len:int -> decl_context_info -> string

    Serialize a value of type decl_context_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_context_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - decl_context_info

    Input JSON data of type decl_context_info.

    val decl_context_info_of_string : string -> decl_context_info

    Deserialize JSON data of type decl_context_info.

    val write_decl_kind : Stdlib.Buffer.t -> decl_kind -> unit

    Output a JSON value of type decl_kind.

    val string_of_decl_kind : ?len:int -> decl_kind -> string

    Serialize a value of type decl_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_kind : + decl_context_info

    Input JSON data of type decl_context_info.

    val decl_context_info_of_string : string -> decl_context_info

    Deserialize JSON data of type decl_context_info.

    val write_decl_kind : Stdlib.Buffer.t -> decl_kind -> unit

    Output a JSON value of type decl_kind.

    val string_of_decl_kind : ?len:int -> decl_kind -> string

    Serialize a value of type decl_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl_kind

    Input JSON data of type decl_kind.

    val decl_kind_of_string : string -> decl_kind

    Deserialize JSON data of type decl_kind.

    val write_declaration_name_kind : Stdlib.Buffer.t -> declaration_name_kind -> unit

    Output a JSON value of type declaration_name_kind.

    val string_of_declaration_name_kind : - ?len:int -> + ?len:int -> declaration_name_kind -> string

    Serialize a value of type declaration_name_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_declaration_name_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - declaration_name_kind

    Input JSON data of type declaration_name_kind.

    val declaration_name_kind_of_string : string -> declaration_name_kind

    Deserialize JSON data of type declaration_name_kind.

    val write_declaration_name : Stdlib.Buffer.t -> declaration_name -> unit

    Output a JSON value of type declaration_name.

    val string_of_declaration_name : ?len:int -> declaration_name -> string

    Serialize a value of type declaration_name into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_declaration_name : + declaration_name_kind

    Input JSON data of type declaration_name_kind.

    val declaration_name_kind_of_string : string -> declaration_name_kind

    Deserialize JSON data of type declaration_name_kind.

    val write_declaration_name : Stdlib.Buffer.t -> declaration_name -> unit

    Output a JSON value of type declaration_name.

    val string_of_declaration_name : ?len:int -> declaration_name -> string

    Serialize a value of type declaration_name into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_declaration_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - declaration_name

    Input JSON data of type declaration_name.

    val declaration_name_of_string : string -> declaration_name

    Deserialize JSON data of type declaration_name.

    val write_enum_decl_scope : Stdlib.Buffer.t -> enum_decl_scope -> unit

    Output a JSON value of type enum_decl_scope.

    val string_of_enum_decl_scope : ?len:int -> enum_decl_scope -> string

    Serialize a value of type enum_decl_scope into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_enum_decl_scope : + declaration_name

    Input JSON data of type declaration_name.

    val declaration_name_of_string : string -> declaration_name

    Deserialize JSON data of type declaration_name.

    val write_enum_decl_scope : Stdlib.Buffer.t -> enum_decl_scope -> unit

    Output a JSON value of type enum_decl_scope.

    val string_of_enum_decl_scope : ?len:int -> enum_decl_scope -> string

    Serialize a value of type enum_decl_scope into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_enum_decl_scope : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - enum_decl_scope

    Input JSON data of type enum_decl_scope.

    val enum_decl_scope_of_string : string -> enum_decl_scope

    Deserialize JSON data of type enum_decl_scope.

    val write_enum_decl_info : Stdlib.Buffer.t -> enum_decl_info -> unit

    Output a JSON value of type enum_decl_info.

    val string_of_enum_decl_info : ?len:int -> enum_decl_info -> string

    Serialize a value of type enum_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_enum_decl_info : + enum_decl_scope

    Input JSON data of type enum_decl_scope.

    val enum_decl_scope_of_string : string -> enum_decl_scope

    Deserialize JSON data of type enum_decl_scope.

    val write_enum_decl_info : Stdlib.Buffer.t -> enum_decl_info -> unit

    Output a JSON value of type enum_decl_info.

    val string_of_enum_decl_info : ?len:int -> enum_decl_info -> string

    Serialize a value of type enum_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_enum_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - enum_decl_info

    Input JSON data of type enum_decl_info.

    val enum_decl_info_of_string : string -> enum_decl_info

    Deserialize JSON data of type enum_decl_info.

    val write_input_kind : Stdlib.Buffer.t -> input_kind -> unit

    Output a JSON value of type input_kind.

    val string_of_input_kind : ?len:int -> input_kind -> string

    Serialize a value of type input_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_input_kind : + enum_decl_info

    Input JSON data of type enum_decl_info.

    val enum_decl_info_of_string : string -> enum_decl_info

    Deserialize JSON data of type enum_decl_info.

    val write_input_kind : Stdlib.Buffer.t -> input_kind -> unit

    Output a JSON value of type input_kind.

    val string_of_input_kind : ?len:int -> input_kind -> string

    Serialize a value of type input_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_input_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> input_kind

    Input JSON data of type input_kind.

    val input_kind_of_string : string -> input_kind

    Deserialize JSON data of type input_kind.

    val write_integer_literal_info : Stdlib.Buffer.t -> integer_literal_info -> - unit

    Output a JSON value of type integer_literal_info.

    val string_of_integer_literal_info : ?len:int -> integer_literal_info -> string

    Serialize a value of type integer_literal_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_integer_literal_info : + unit

    Output a JSON value of type integer_literal_info.

    val string_of_integer_literal_info : ?len:int -> integer_literal_info -> string

    Serialize a value of type integer_literal_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_integer_literal_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - integer_literal_info

    Input JSON data of type integer_literal_info.

    val integer_literal_info_of_string : string -> integer_literal_info

    Deserialize JSON data of type integer_literal_info.

    val write_integer_type_widths : Stdlib.Buffer.t -> integer_type_widths -> unit

    Output a JSON value of type integer_type_widths.

    val string_of_integer_type_widths : ?len:int -> integer_type_widths -> string

    Serialize a value of type integer_type_widths into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_integer_type_widths : + integer_literal_info

    Input JSON data of type integer_literal_info.

    val integer_literal_info_of_string : string -> integer_literal_info

    Deserialize JSON data of type integer_literal_info.

    val write_integer_type_widths : Stdlib.Buffer.t -> integer_type_widths -> unit

    Output a JSON value of type integer_type_widths.

    val string_of_integer_type_widths : ?len:int -> integer_type_widths -> string

    Serialize a value of type integer_type_widths into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_integer_type_widths : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - integer_type_widths

    Input JSON data of type integer_type_widths.

    val integer_type_widths_of_string : string -> integer_type_widths

    Deserialize JSON data of type integer_type_widths.

    val write_lambda_capture_kind : Stdlib.Buffer.t -> lambda_capture_kind -> unit

    Output a JSON value of type lambda_capture_kind.

    val string_of_lambda_capture_kind : ?len:int -> lambda_capture_kind -> string

    Serialize a value of type lambda_capture_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_capture_kind : + integer_type_widths

    Input JSON data of type integer_type_widths.

    val integer_type_widths_of_string : string -> integer_type_widths

    Deserialize JSON data of type integer_type_widths.

    val write_lambda_capture_kind : Stdlib.Buffer.t -> lambda_capture_kind -> unit

    Output a JSON value of type lambda_capture_kind.

    val string_of_lambda_capture_kind : ?len:int -> lambda_capture_kind -> string

    Serialize a value of type lambda_capture_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_capture_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - lambda_capture_kind

    Input JSON data of type lambda_capture_kind.

    val lambda_capture_kind_of_string : string -> lambda_capture_kind

    Deserialize JSON data of type lambda_capture_kind.

    val write_named_decl_info : Stdlib.Buffer.t -> named_decl_info -> unit

    Output a JSON value of type named_decl_info.

    val string_of_named_decl_info : ?len:int -> named_decl_info -> string

    Serialize a value of type named_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_named_decl_info : + lambda_capture_kind

    Input JSON data of type lambda_capture_kind.

    val lambda_capture_kind_of_string : string -> lambda_capture_kind

    Deserialize JSON data of type lambda_capture_kind.

    val write_named_decl_info : Stdlib.Buffer.t -> named_decl_info -> unit

    Output a JSON value of type named_decl_info.

    val string_of_named_decl_info : ?len:int -> named_decl_info -> string

    Serialize a value of type named_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_named_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> named_decl_info

    Input JSON data of type named_decl_info.

    val named_decl_info_of_string : string -> named_decl_info

    Deserialize JSON data of type named_decl_info.

    val write_obj_c_access_control : Stdlib.Buffer.t -> obj_c_access_control -> - unit

    Output a JSON value of type obj_c_access_control.

    val string_of_obj_c_access_control : ?len:int -> obj_c_access_control -> string

    Serialize a value of type obj_c_access_control into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_access_control : + unit

    Output a JSON value of type obj_c_access_control.

    val string_of_obj_c_access_control : ?len:int -> obj_c_access_control -> string

    Serialize a value of type obj_c_access_control into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_access_control : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> obj_c_access_control

    Input JSON data of type obj_c_access_control.

    val obj_c_access_control_of_string : string -> obj_c_access_control

    Deserialize JSON data of type obj_c_access_control.

    val write_obj_c_availability_check_expr_info : Stdlib.Buffer.t -> obj_c_availability_check_expr_info -> unit

    Output a JSON value of type obj_c_availability_check_expr_info.

    val string_of_obj_c_availability_check_expr_info : - ?len:int -> + ?len:int -> obj_c_availability_check_expr_info -> string

    Serialize a value of type obj_c_availability_check_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_availability_check_expr_info : Yojson.Safe.lexer_state -> @@ -316,7 +316,7 @@ Stdlib.Buffer.t -> obj_c_bridge_cast_kind -> unit

    Output a JSON value of type obj_c_bridge_cast_kind.

    val string_of_obj_c_bridge_cast_kind : - ?len:int -> + ?len:int -> obj_c_bridge_cast_kind -> string

    Serialize a value of type obj_c_bridge_cast_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_bridge_cast_kind : Yojson.Safe.lexer_state -> @@ -325,7 +325,7 @@ Stdlib.Buffer.t -> obj_c_bridged_cast_expr_info -> unit

    Output a JSON value of type obj_c_bridged_cast_expr_info.

    val string_of_obj_c_bridged_cast_expr_info : - ?len:int -> + ?len:int -> obj_c_bridged_cast_expr_info -> string

    Serialize a value of type obj_c_bridged_cast_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_bridged_cast_expr_info : Yojson.Safe.lexer_state -> @@ -335,14 +335,14 @@ obj_c_bridged_cast_expr_info

    Deserialize JSON data of type obj_c_bridged_cast_expr_info.

    val write_obj_c_ivar_decl_info : Stdlib.Buffer.t -> obj_c_ivar_decl_info -> - unit

    Output a JSON value of type obj_c_ivar_decl_info.

    val string_of_obj_c_ivar_decl_info : ?len:int -> obj_c_ivar_decl_info -> string

    Serialize a value of type obj_c_ivar_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_ivar_decl_info : + unit

    Output a JSON value of type obj_c_ivar_decl_info.

    val string_of_obj_c_ivar_decl_info : ?len:int -> obj_c_ivar_decl_info -> string

    Serialize a value of type obj_c_ivar_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_ivar_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> obj_c_ivar_decl_info

    Input JSON data of type obj_c_ivar_decl_info.

    val obj_c_ivar_decl_info_of_string : string -> obj_c_ivar_decl_info

    Deserialize JSON data of type obj_c_ivar_decl_info.

    val write_obj_c_property_control : Stdlib.Buffer.t -> obj_c_property_control -> unit

    Output a JSON value of type obj_c_property_control.

    val string_of_obj_c_property_control : - ?len:int -> + ?len:int -> obj_c_property_control -> string

    Serialize a value of type obj_c_property_control into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_property_control : Yojson.Safe.lexer_state -> @@ -350,52 +350,52 @@ obj_c_property_control

    Input JSON data of type obj_c_property_control.

    val obj_c_property_control_of_string : string -> obj_c_property_control

    Deserialize JSON data of type obj_c_property_control.

    val write_obj_c_subscript_kind : Stdlib.Buffer.t -> obj_c_subscript_kind -> - unit

    Output a JSON value of type obj_c_subscript_kind.

    val string_of_obj_c_subscript_kind : ?len:int -> obj_c_subscript_kind -> string

    Serialize a value of type obj_c_subscript_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_subscript_kind : + unit

    Output a JSON value of type obj_c_subscript_kind.

    val string_of_obj_c_subscript_kind : ?len:int -> obj_c_subscript_kind -> string

    Serialize a value of type obj_c_subscript_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_subscript_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - obj_c_subscript_kind

    Input JSON data of type obj_c_subscript_kind.

    val obj_c_subscript_kind_of_string : string -> obj_c_subscript_kind

    Deserialize JSON data of type obj_c_subscript_kind.

    val write_objc_lifetime_attr : Stdlib.Buffer.t -> objc_lifetime_attr -> unit

    Output a JSON value of type objc_lifetime_attr.

    val string_of_objc_lifetime_attr : ?len:int -> objc_lifetime_attr -> string

    Serialize a value of type objc_lifetime_attr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_lifetime_attr : + obj_c_subscript_kind

    Input JSON data of type obj_c_subscript_kind.

    val obj_c_subscript_kind_of_string : string -> obj_c_subscript_kind

    Deserialize JSON data of type obj_c_subscript_kind.

    val write_objc_lifetime_attr : Stdlib.Buffer.t -> objc_lifetime_attr -> unit

    Output a JSON value of type objc_lifetime_attr.

    val string_of_objc_lifetime_attr : ?len:int -> objc_lifetime_attr -> string

    Serialize a value of type objc_lifetime_attr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_lifetime_attr : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - objc_lifetime_attr

    Input JSON data of type objc_lifetime_attr.

    val objc_lifetime_attr_of_string : string -> objc_lifetime_attr

    Deserialize JSON data of type objc_lifetime_attr.

    val write_attr_type_info : Stdlib.Buffer.t -> attr_type_info -> unit

    Output a JSON value of type attr_type_info.

    val string_of_attr_type_info : ?len:int -> attr_type_info -> string

    Serialize a value of type attr_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attr_type_info : + objc_lifetime_attr

    Input JSON data of type objc_lifetime_attr.

    val objc_lifetime_attr_of_string : string -> objc_lifetime_attr

    Deserialize JSON data of type objc_lifetime_attr.

    val write_attr_type_info : Stdlib.Buffer.t -> attr_type_info -> unit

    Output a JSON value of type attr_type_info.

    val string_of_attr_type_info : ?len:int -> attr_type_info -> string

    Serialize a value of type attr_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attr_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - attr_type_info

    Input JSON data of type attr_type_info.

    val attr_type_info_of_string : string -> attr_type_info

    Deserialize JSON data of type attr_type_info.

    val write_object_kind : Stdlib.Buffer.t -> object_kind -> unit

    Output a JSON value of type object_kind.

    val string_of_object_kind : ?len:int -> object_kind -> string

    Serialize a value of type object_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_object_kind : + attr_type_info

    Input JSON data of type attr_type_info.

    val attr_type_info_of_string : string -> attr_type_info

    Deserialize JSON data of type attr_type_info.

    val write_object_kind : Stdlib.Buffer.t -> object_kind -> unit

    Output a JSON value of type object_kind.

    val string_of_object_kind : ?len:int -> object_kind -> string

    Serialize a value of type object_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_object_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - object_kind

    Input JSON data of type object_kind.

    val object_kind_of_string : string -> object_kind

    Deserialize JSON data of type object_kind.

    val write_offset_of_expr_info : Stdlib.Buffer.t -> offset_of_expr_info -> unit

    Output a JSON value of type offset_of_expr_info.

    val string_of_offset_of_expr_info : ?len:int -> offset_of_expr_info -> string

    Serialize a value of type offset_of_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_offset_of_expr_info : + object_kind

    Input JSON data of type object_kind.

    val object_kind_of_string : string -> object_kind

    Deserialize JSON data of type object_kind.

    val write_offset_of_expr_info : Stdlib.Buffer.t -> offset_of_expr_info -> unit

    Output a JSON value of type offset_of_expr_info.

    val string_of_offset_of_expr_info : ?len:int -> offset_of_expr_info -> string

    Serialize a value of type offset_of_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_offset_of_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - offset_of_expr_info

    Input JSON data of type offset_of_expr_info.

    val offset_of_expr_info_of_string : string -> offset_of_expr_info

    Deserialize JSON data of type offset_of_expr_info.

    val write_pointer : Stdlib.Buffer.t -> pointer -> unit

    Output a JSON value of type pointer.

    val string_of_pointer : ?len:int -> pointer -> string

    Serialize a value of type pointer into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_pointer : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> pointer

    Input JSON data of type pointer.

    val pointer_of_string : string -> pointer

    Deserialize JSON data of type pointer.

    val write_addr_label_expr_info : + offset_of_expr_info

    Input JSON data of type offset_of_expr_info.

    val offset_of_expr_info_of_string : string -> offset_of_expr_info

    Deserialize JSON data of type offset_of_expr_info.

    val write_pointer : Stdlib.Buffer.t -> pointer -> unit

    Output a JSON value of type pointer.

    val string_of_pointer : ?len:int -> pointer -> string

    Serialize a value of type pointer into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_pointer : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> pointer

    Input JSON data of type pointer.

    val pointer_of_string : string -> pointer

    Deserialize JSON data of type pointer.

    val write_addr_label_expr_info : Stdlib.Buffer.t -> addr_label_expr_info -> - unit

    Output a JSON value of type addr_label_expr_info.

    val string_of_addr_label_expr_info : ?len:int -> addr_label_expr_info -> string

    Serialize a value of type addr_label_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_addr_label_expr_info : + unit

    Output a JSON value of type addr_label_expr_info.

    val string_of_addr_label_expr_info : ?len:int -> addr_label_expr_info -> string

    Serialize a value of type addr_label_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_addr_label_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - addr_label_expr_info

    Input JSON data of type addr_label_expr_info.

    val addr_label_expr_info_of_string : string -> addr_label_expr_info

    Deserialize JSON data of type addr_label_expr_info.

    val write_cxx_new_expr_info : Stdlib.Buffer.t -> cxx_new_expr_info -> unit

    Output a JSON value of type cxx_new_expr_info.

    val string_of_cxx_new_expr_info : ?len:int -> cxx_new_expr_info -> string

    Serialize a value of type cxx_new_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_new_expr_info : + addr_label_expr_info

    Input JSON data of type addr_label_expr_info.

    val addr_label_expr_info_of_string : string -> addr_label_expr_info

    Deserialize JSON data of type addr_label_expr_info.

    val write_cxx_new_expr_info : Stdlib.Buffer.t -> cxx_new_expr_info -> unit

    Output a JSON value of type cxx_new_expr_info.

    val string_of_cxx_new_expr_info : ?len:int -> cxx_new_expr_info -> string

    Serialize a value of type cxx_new_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_new_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cxx_new_expr_info

    Input JSON data of type cxx_new_expr_info.

    val cxx_new_expr_info_of_string : string -> cxx_new_expr_info

    Deserialize JSON data of type cxx_new_expr_info.

    val write_cxx_temporary : Stdlib.Buffer.t -> cxx_temporary -> unit

    Output a JSON value of type cxx_temporary.

    val string_of_cxx_temporary : ?len:int -> cxx_temporary -> string

    Serialize a value of type cxx_temporary into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_temporary : + cxx_new_expr_info

    Input JSON data of type cxx_new_expr_info.

    val cxx_new_expr_info_of_string : string -> cxx_new_expr_info

    Deserialize JSON data of type cxx_new_expr_info.

    val write_cxx_temporary : Stdlib.Buffer.t -> cxx_temporary -> unit

    Output a JSON value of type cxx_temporary.

    val string_of_cxx_temporary : ?len:int -> cxx_temporary -> string

    Serialize a value of type cxx_temporary into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_temporary : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_temporary

    Input JSON data of type cxx_temporary.

    val cxx_temporary_of_string : string -> cxx_temporary

    Deserialize JSON data of type cxx_temporary.

    val write_cxx_bind_temporary_expr_info : Stdlib.Buffer.t -> cxx_bind_temporary_expr_info -> unit

    Output a JSON value of type cxx_bind_temporary_expr_info.

    val string_of_cxx_bind_temporary_expr_info : - ?len:int -> + ?len:int -> cxx_bind_temporary_expr_info -> string

    Serialize a value of type cxx_bind_temporary_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_bind_temporary_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_bind_temporary_expr_info

    Input JSON data of type cxx_bind_temporary_expr_info.

    val cxx_bind_temporary_expr_info_of_string : string -> - cxx_bind_temporary_expr_info

    Deserialize JSON data of type cxx_bind_temporary_expr_info.

    val write_goto_stmt_info : Stdlib.Buffer.t -> goto_stmt_info -> unit

    Output a JSON value of type goto_stmt_info.

    val string_of_goto_stmt_info : ?len:int -> goto_stmt_info -> string

    Serialize a value of type goto_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_goto_stmt_info : + cxx_bind_temporary_expr_info

    Deserialize JSON data of type cxx_bind_temporary_expr_info.

    val write_goto_stmt_info : Stdlib.Buffer.t -> goto_stmt_info -> unit

    Output a JSON value of type goto_stmt_info.

    val string_of_goto_stmt_info : ?len:int -> goto_stmt_info -> string

    Serialize a value of type goto_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_goto_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> goto_stmt_info

    Input JSON data of type goto_stmt_info.

    val goto_stmt_info_of_string : string -> goto_stmt_info

    Deserialize JSON data of type goto_stmt_info.

    val write_obj_c_array_literal_expr_info : Stdlib.Buffer.t -> obj_c_array_literal_expr_info -> unit

    Output a JSON value of type obj_c_array_literal_expr_info.

    val string_of_obj_c_array_literal_expr_info : - ?len:int -> + ?len:int -> obj_c_array_literal_expr_info -> string

    Serialize a value of type obj_c_array_literal_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_array_literal_expr_info : Yojson.Safe.lexer_state -> @@ -406,7 +406,7 @@ Stdlib.Buffer.t -> obj_c_dictionary_literal_expr_info -> unit

    Output a JSON value of type obj_c_dictionary_literal_expr_info.

    val string_of_obj_c_dictionary_literal_expr_info : - ?len:int -> + ?len:int -> obj_c_dictionary_literal_expr_info -> string

    Serialize a value of type obj_c_dictionary_literal_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_dictionary_literal_expr_info : Yojson.Safe.lexer_state -> @@ -416,29 +416,29 @@ obj_c_dictionary_literal_expr_info

    Deserialize JSON data of type obj_c_dictionary_literal_expr_info.

    val write_predefined_expr_type : Stdlib.Buffer.t -> predefined_expr_type -> - unit

    Output a JSON value of type predefined_expr_type.

    val string_of_predefined_expr_type : ?len:int -> predefined_expr_type -> string

    Serialize a value of type predefined_expr_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_predefined_expr_type : + unit

    Output a JSON value of type predefined_expr_type.

    val string_of_predefined_expr_type : ?len:int -> predefined_expr_type -> string

    Serialize a value of type predefined_expr_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_predefined_expr_type : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - predefined_expr_type

    Input JSON data of type predefined_expr_type.

    val predefined_expr_type_of_string : string -> predefined_expr_type

    Deserialize JSON data of type predefined_expr_type.

    val write_property_attribute : Stdlib.Buffer.t -> property_attribute -> unit

    Output a JSON value of type property_attribute.

    val string_of_property_attribute : ?len:int -> property_attribute -> string

    Serialize a value of type property_attribute into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_property_attribute : + predefined_expr_type

    Input JSON data of type predefined_expr_type.

    val predefined_expr_type_of_string : string -> predefined_expr_type

    Deserialize JSON data of type predefined_expr_type.

    val write_property_attribute : Stdlib.Buffer.t -> property_attribute -> unit

    Output a JSON value of type property_attribute.

    val string_of_property_attribute : ?len:int -> property_attribute -> string

    Serialize a value of type property_attribute into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_property_attribute : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> property_attribute

    Input JSON data of type property_attribute.

    val property_attribute_of_string : string -> property_attribute

    Deserialize JSON data of type property_attribute.

    val write_property_implementation : Stdlib.Buffer.t -> property_implementation -> unit

    Output a JSON value of type property_implementation.

    val string_of_property_implementation : - ?len:int -> + ?len:int -> property_implementation -> string

    Serialize a value of type property_implementation into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_property_implementation : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - property_implementation

    Input JSON data of type property_implementation.

    val property_implementation_of_string : string -> property_implementation

    Deserialize JSON data of type property_implementation.

    val write_record_decl_info : Stdlib.Buffer.t -> record_decl_info -> unit

    Output a JSON value of type record_decl_info.

    val string_of_record_decl_info : ?len:int -> record_decl_info -> string

    Serialize a value of type record_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_record_decl_info : + property_implementation

    Input JSON data of type property_implementation.

    val property_implementation_of_string : string -> property_implementation

    Deserialize JSON data of type property_implementation.

    val write_record_decl_info : Stdlib.Buffer.t -> record_decl_info -> unit

    Output a JSON value of type record_decl_info.

    val string_of_record_decl_info : ?len:int -> record_decl_info -> string

    Serialize a value of type record_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_record_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - record_decl_info

    Input JSON data of type record_decl_info.

    val record_decl_info_of_string : string -> record_decl_info

    Deserialize JSON data of type record_decl_info.

    val write_selector : Stdlib.Buffer.t -> selector -> unit

    Output a JSON value of type selector.

    val string_of_selector : ?len:int -> selector -> string

    Serialize a value of type selector into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_selector : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> selector

    Input JSON data of type selector.

    val selector_of_string : string -> selector

    Deserialize JSON data of type selector.

    val write_obj_c_method_ref_info : + record_decl_info

    Input JSON data of type record_decl_info.

    val record_decl_info_of_string : string -> record_decl_info

    Deserialize JSON data of type record_decl_info.

    val write_selector : Stdlib.Buffer.t -> selector -> unit

    Output a JSON value of type selector.

    val string_of_selector : ?len:int -> selector -> string

    Serialize a value of type selector into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_selector : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> selector

    Input JSON data of type selector.

    val selector_of_string : string -> selector

    Deserialize JSON data of type selector.

    val write_obj_c_method_ref_info : Stdlib.Buffer.t -> obj_c_method_ref_info -> unit

    Output a JSON value of type obj_c_method_ref_info.

    val string_of_obj_c_method_ref_info : - ?len:int -> + ?len:int -> obj_c_method_ref_info -> string

    Serialize a value of type obj_c_method_ref_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_method_ref_info : Yojson.Safe.lexer_state -> @@ -447,7 +447,7 @@ Stdlib.Buffer.t -> obj_c_subscript_ref_expr_info -> unit

    Output a JSON value of type obj_c_subscript_ref_expr_info.

    val string_of_obj_c_subscript_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_subscript_ref_expr_info -> string

    Serialize a value of type obj_c_subscript_ref_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_subscript_ref_expr_info : Yojson.Safe.lexer_state -> @@ -457,47 +457,47 @@ obj_c_subscript_ref_expr_info

    Deserialize JSON data of type obj_c_subscript_ref_expr_info.

    val write_objc_boxed_expr_info : Stdlib.Buffer.t -> objc_boxed_expr_info -> - unit

    Output a JSON value of type objc_boxed_expr_info.

    val string_of_objc_boxed_expr_info : ?len:int -> objc_boxed_expr_info -> string

    Serialize a value of type objc_boxed_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_boxed_expr_info : + unit

    Output a JSON value of type objc_boxed_expr_info.

    val string_of_objc_boxed_expr_info : ?len:int -> objc_boxed_expr_info -> string

    Serialize a value of type objc_boxed_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_boxed_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - objc_boxed_expr_info

    Input JSON data of type objc_boxed_expr_info.

    val objc_boxed_expr_info_of_string : string -> objc_boxed_expr_info

    Deserialize JSON data of type objc_boxed_expr_info.

    val write_sentinel_attr_info : Stdlib.Buffer.t -> sentinel_attr_info -> unit

    Output a JSON value of type sentinel_attr_info.

    val string_of_sentinel_attr_info : ?len:int -> sentinel_attr_info -> string

    Serialize a value of type sentinel_attr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sentinel_attr_info : + objc_boxed_expr_info

    Input JSON data of type objc_boxed_expr_info.

    val objc_boxed_expr_info_of_string : string -> objc_boxed_expr_info

    Deserialize JSON data of type objc_boxed_expr_info.

    val write_sentinel_attr_info : Stdlib.Buffer.t -> sentinel_attr_info -> unit

    Output a JSON value of type sentinel_attr_info.

    val string_of_sentinel_attr_info : ?len:int -> sentinel_attr_info -> string

    Serialize a value of type sentinel_attr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sentinel_attr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - sentinel_attr_info

    Input JSON data of type sentinel_attr_info.

    val sentinel_attr_info_of_string : string -> sentinel_attr_info

    Deserialize JSON data of type sentinel_attr_info.

    val write_source_file : Stdlib.Buffer.t -> source_file -> unit

    Output a JSON value of type source_file.

    val string_of_source_file : ?len:int -> source_file -> string

    Serialize a value of type source_file into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_file : + sentinel_attr_info

    Input JSON data of type sentinel_attr_info.

    val sentinel_attr_info_of_string : string -> sentinel_attr_info

    Deserialize JSON data of type sentinel_attr_info.

    val write_source_file : Stdlib.Buffer.t -> source_file -> unit

    Output a JSON value of type source_file.

    val string_of_source_file : ?len:int -> source_file -> string

    Serialize a value of type source_file into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_file : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - source_file

    Input JSON data of type source_file.

    val source_file_of_string : string -> source_file

    Deserialize JSON data of type source_file.

    val write_source_location : Stdlib.Buffer.t -> source_location -> unit

    Output a JSON value of type source_location.

    val string_of_source_location : ?len:int -> source_location -> string

    Serialize a value of type source_location into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_location : + source_file

    Input JSON data of type source_file.

    val source_file_of_string : string -> source_file

    Deserialize JSON data of type source_file.

    val write_source_location : Stdlib.Buffer.t -> source_location -> unit

    Output a JSON value of type source_location.

    val string_of_source_location : ?len:int -> source_location -> string

    Serialize a value of type source_location into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_location : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - source_location

    Input JSON data of type source_location.

    val source_location_of_string : string -> source_location

    Deserialize JSON data of type source_location.

    val write_source_range : Stdlib.Buffer.t -> source_range -> unit

    Output a JSON value of type source_range.

    val string_of_source_range : ?len:int -> source_range -> string

    Serialize a value of type source_range into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_range : + source_location

    Input JSON data of type source_location.

    val source_location_of_string : string -> source_location

    Deserialize JSON data of type source_location.

    val write_source_range : Stdlib.Buffer.t -> source_range -> unit

    Output a JSON value of type source_range.

    val string_of_source_range : ?len:int -> source_range -> string

    Serialize a value of type source_range into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_source_range : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - source_range

    Input JSON data of type source_range.

    val source_range_of_string : string -> source_range

    Deserialize JSON data of type source_range.

    val write_attribute_info : Stdlib.Buffer.t -> attribute_info -> unit

    Output a JSON value of type attribute_info.

    val string_of_attribute_info : ?len:int -> attribute_info -> string

    Serialize a value of type attribute_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute_info : + source_range

    Input JSON data of type source_range.

    val source_range_of_string : string -> source_range

    Deserialize JSON data of type source_range.

    val write_attribute_info : Stdlib.Buffer.t -> attribute_info -> unit

    Output a JSON value of type attribute_info.

    val string_of_attribute_info : ?len:int -> attribute_info -> string

    Serialize a value of type attribute_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - attribute_info

    Input JSON data of type attribute_info.

    val attribute_info_of_string : string -> attribute_info

    Deserialize JSON data of type attribute_info.

    val write_attr_tuple : Stdlib.Buffer.t -> attr_tuple -> unit

    Output a JSON value of type attr_tuple.

    val string_of_attr_tuple : ?len:int -> attr_tuple -> string

    Serialize a value of type attr_tuple into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attr_tuple : + attribute_info

    Input JSON data of type attribute_info.

    val attribute_info_of_string : string -> attribute_info

    Deserialize JSON data of type attribute_info.

    val write_attr_tuple : Stdlib.Buffer.t -> attr_tuple -> unit

    Output a JSON value of type attr_tuple.

    val string_of_attr_tuple : ?len:int -> attr_tuple -> string

    Serialize a value of type attr_tuple into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attr_tuple : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - attr_tuple

    Input JSON data of type attr_tuple.

    val attr_tuple_of_string : string -> attr_tuple

    Deserialize JSON data of type attr_tuple.

    val write_comment_info : Stdlib.Buffer.t -> comment_info -> unit

    Output a JSON value of type comment_info.

    val string_of_comment_info : ?len:int -> comment_info -> string

    Serialize a value of type comment_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_comment_info : + attr_tuple

    Input JSON data of type attr_tuple.

    val attr_tuple_of_string : string -> attr_tuple

    Deserialize JSON data of type attr_tuple.

    val write_comment_info : Stdlib.Buffer.t -> comment_info -> unit

    Output a JSON value of type comment_info.

    val string_of_comment_info : ?len:int -> comment_info -> string

    Serialize a value of type comment_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_comment_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - comment_info

    Input JSON data of type comment_info.

    val comment_info_of_string : string -> comment_info

    Deserialize JSON data of type comment_info.

    val write_specifier_kind : Stdlib.Buffer.t -> specifier_kind -> unit

    Output a JSON value of type specifier_kind.

    val string_of_specifier_kind : ?len:int -> specifier_kind -> string

    Serialize a value of type specifier_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_specifier_kind : + comment_info

    Input JSON data of type comment_info.

    val comment_info_of_string : string -> comment_info

    Deserialize JSON data of type comment_info.

    val write_specifier_kind : Stdlib.Buffer.t -> specifier_kind -> unit

    Output a JSON value of type specifier_kind.

    val string_of_specifier_kind : ?len:int -> specifier_kind -> string

    Serialize a value of type specifier_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_specifier_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - specifier_kind

    Input JSON data of type specifier_kind.

    val specifier_kind_of_string : string -> specifier_kind

    Deserialize JSON data of type specifier_kind.

    val write_stmt_info : Stdlib.Buffer.t -> stmt_info -> unit

    Output a JSON value of type stmt_info.

    val string_of_stmt_info : ?len:int -> stmt_info -> string

    Serialize a value of type stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_stmt_info : + specifier_kind

    Input JSON data of type specifier_kind.

    val specifier_kind_of_string : string -> specifier_kind

    Deserialize JSON data of type specifier_kind.

    val write_stmt_info : Stdlib.Buffer.t -> stmt_info -> unit

    Output a JSON value of type stmt_info.

    val string_of_stmt_info : ?len:int -> stmt_info -> string

    Serialize a value of type stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - stmt_info

    Input JSON data of type stmt_info.

    val stmt_info_of_string : string -> stmt_info

    Deserialize JSON data of type stmt_info.

    val write_tag_kind : Stdlib.Buffer.t -> tag_kind -> unit

    Output a JSON value of type tag_kind.

    val string_of_tag_kind : ?len:int -> tag_kind -> string

    Serialize a value of type tag_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_tag_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> tag_kind

    Input JSON data of type tag_kind.

    val tag_kind_of_string : string -> tag_kind

    Deserialize JSON data of type tag_kind.

    val write_type_ptr : Stdlib.Buffer.t -> type_ptr -> unit

    Output a JSON value of type type_ptr.

    val string_of_type_ptr : ?len:int -> type_ptr -> string

    Serialize a value of type type_ptr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_ptr : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> type_ptr

    Input JSON data of type type_ptr.

    val type_ptr_of_string : string -> type_ptr

    Deserialize JSON data of type type_ptr.

    val write_qual_type : Stdlib.Buffer.t -> qual_type -> unit

    Output a JSON value of type qual_type.

    val string_of_qual_type : ?len:int -> qual_type -> string

    Serialize a value of type qual_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_qual_type : + stmt_info

    Input JSON data of type stmt_info.

    val stmt_info_of_string : string -> stmt_info

    Deserialize JSON data of type stmt_info.

    val write_tag_kind : Stdlib.Buffer.t -> tag_kind -> unit

    Output a JSON value of type tag_kind.

    val string_of_tag_kind : ?len:int -> tag_kind -> string

    Serialize a value of type tag_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_tag_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> tag_kind

    Input JSON data of type tag_kind.

    val tag_kind_of_string : string -> tag_kind

    Deserialize JSON data of type tag_kind.

    val write_type_ptr : Stdlib.Buffer.t -> type_ptr -> unit

    Output a JSON value of type type_ptr.

    val string_of_type_ptr : ?len:int -> type_ptr -> string

    Serialize a value of type type_ptr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_ptr : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> type_ptr

    Input JSON data of type type_ptr.

    val type_ptr_of_string : string -> type_ptr

    Deserialize JSON data of type type_ptr.

    val write_qual_type : Stdlib.Buffer.t -> qual_type -> unit

    Output a JSON value of type qual_type.

    val string_of_qual_type : ?len:int -> qual_type -> string

    Serialize a value of type qual_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_qual_type : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - qual_type

    Input JSON data of type qual_type.

    val qual_type_of_string : string -> qual_type

    Deserialize JSON data of type qual_type.

    val write_array_type_info : Stdlib.Buffer.t -> array_type_info -> unit

    Output a JSON value of type array_type_info.

    val string_of_array_type_info : ?len:int -> array_type_info -> string

    Serialize a value of type array_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_array_type_info : + qual_type

    Input JSON data of type qual_type.

    val qual_type_of_string : string -> qual_type

    Deserialize JSON data of type qual_type.

    val write_array_type_info : Stdlib.Buffer.t -> array_type_info -> unit

    Output a JSON value of type array_type_info.

    val string_of_array_type_info : ?len:int -> array_type_info -> string

    Serialize a value of type array_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_array_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> array_type_info

    Input JSON data of type array_type_info.

    val array_type_info_of_string : string -> array_type_info

    Deserialize JSON data of type array_type_info.

    val write_compound_assign_operator_info : Stdlib.Buffer.t -> compound_assign_operator_info -> unit

    Output a JSON value of type compound_assign_operator_info.

    val string_of_compound_assign_operator_info : - ?len:int -> + ?len:int -> compound_assign_operator_info -> string

    Serialize a value of type compound_assign_operator_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_compound_assign_operator_info : Yojson.Safe.lexer_state -> @@ -507,14 +507,14 @@ compound_assign_operator_info

    Deserialize JSON data of type compound_assign_operator_info.

    val write_cxx_delete_expr_info : Stdlib.Buffer.t -> cxx_delete_expr_info -> - unit

    Output a JSON value of type cxx_delete_expr_info.

    val string_of_cxx_delete_expr_info : ?len:int -> cxx_delete_expr_info -> string

    Serialize a value of type cxx_delete_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_delete_expr_info : + unit

    Output a JSON value of type cxx_delete_expr_info.

    val string_of_cxx_delete_expr_info : ?len:int -> cxx_delete_expr_info -> string

    Serialize a value of type cxx_delete_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_delete_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cxx_delete_expr_info

    Input JSON data of type cxx_delete_expr_info.

    val cxx_delete_expr_info_of_string : string -> cxx_delete_expr_info

    Deserialize JSON data of type cxx_delete_expr_info.

    val write_decl_ref : Stdlib.Buffer.t -> decl_ref -> unit

    Output a JSON value of type decl_ref.

    val string_of_decl_ref : ?len:int -> decl_ref -> string

    Serialize a value of type decl_ref into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_ref : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl_ref

    Input JSON data of type decl_ref.

    val decl_ref_of_string : string -> decl_ref

    Deserialize JSON data of type decl_ref.

    val write_cxx_construct_expr_info : + cxx_delete_expr_info

    Input JSON data of type cxx_delete_expr_info.

    val cxx_delete_expr_info_of_string : string -> cxx_delete_expr_info

    Deserialize JSON data of type cxx_delete_expr_info.

    val write_decl_ref : Stdlib.Buffer.t -> decl_ref -> unit

    Output a JSON value of type decl_ref.

    val string_of_decl_ref : ?len:int -> decl_ref -> string

    Serialize a value of type decl_ref into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_ref : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl_ref

    Input JSON data of type decl_ref.

    val decl_ref_of_string : string -> decl_ref

    Deserialize JSON data of type decl_ref.

    val write_cxx_construct_expr_info : Stdlib.Buffer.t -> cxx_construct_expr_info -> unit

    Output a JSON value of type cxx_construct_expr_info.

    val string_of_cxx_construct_expr_info : - ?len:int -> + ?len:int -> cxx_construct_expr_info -> string

    Serialize a value of type cxx_construct_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_construct_expr_info : Yojson.Safe.lexer_state -> @@ -523,50 +523,50 @@ Stdlib.Buffer.t -> cxx_ctor_initializer_subject -> unit

    Output a JSON value of type cxx_ctor_initializer_subject.

    val string_of_cxx_ctor_initializer_subject : - ?len:int -> + ?len:int -> cxx_ctor_initializer_subject -> string

    Serialize a value of type cxx_ctor_initializer_subject into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_ctor_initializer_subject : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_ctor_initializer_subject

    Input JSON data of type cxx_ctor_initializer_subject.

    val cxx_ctor_initializer_subject_of_string : string -> - cxx_ctor_initializer_subject

    Deserialize JSON data of type cxx_ctor_initializer_subject.

    val write_decl_ref_expr_info : Stdlib.Buffer.t -> decl_ref_expr_info -> unit

    Output a JSON value of type decl_ref_expr_info.

    val string_of_decl_ref_expr_info : ?len:int -> decl_ref_expr_info -> string

    Serialize a value of type decl_ref_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_ref_expr_info : + cxx_ctor_initializer_subject

    Deserialize JSON data of type cxx_ctor_initializer_subject.

    val write_decl_ref_expr_info : Stdlib.Buffer.t -> decl_ref_expr_info -> unit

    Output a JSON value of type decl_ref_expr_info.

    val string_of_decl_ref_expr_info : ?len:int -> decl_ref_expr_info -> string

    Serialize a value of type decl_ref_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_ref_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl_ref_expr_info

    Input JSON data of type decl_ref_expr_info.

    val decl_ref_expr_info_of_string : string -> decl_ref_expr_info

    Deserialize JSON data of type decl_ref_expr_info.

    val write_expr_with_cleanups_info : Stdlib.Buffer.t -> expr_with_cleanups_info -> unit

    Output a JSON value of type expr_with_cleanups_info.

    val string_of_expr_with_cleanups_info : - ?len:int -> + ?len:int -> expr_with_cleanups_info -> string

    Serialize a value of type expr_with_cleanups_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_expr_with_cleanups_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - expr_with_cleanups_info

    Input JSON data of type expr_with_cleanups_info.

    val expr_with_cleanups_info_of_string : string -> expr_with_cleanups_info

    Deserialize JSON data of type expr_with_cleanups_info.

    val write_function_type_info : Stdlib.Buffer.t -> function_type_info -> unit

    Output a JSON value of type function_type_info.

    val string_of_function_type_info : ?len:int -> function_type_info -> string

    Serialize a value of type function_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_function_type_info : + expr_with_cleanups_info

    Input JSON data of type expr_with_cleanups_info.

    val expr_with_cleanups_info_of_string : string -> expr_with_cleanups_info

    Deserialize JSON data of type expr_with_cleanups_info.

    val write_function_type_info : Stdlib.Buffer.t -> function_type_info -> unit

    Output a JSON value of type function_type_info.

    val string_of_function_type_info : ?len:int -> function_type_info -> string

    Serialize a value of type function_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_function_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> function_type_info

    Input JSON data of type function_type_info.

    val function_type_info_of_string : string -> function_type_info

    Deserialize JSON data of type function_type_info.

    val write_materialize_temporary_expr_info : Stdlib.Buffer.t -> materialize_temporary_expr_info -> unit

    Output a JSON value of type materialize_temporary_expr_info.

    val string_of_materialize_temporary_expr_info : - ?len:int -> + ?len:int -> materialize_temporary_expr_info -> string

    Serialize a value of type materialize_temporary_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_materialize_temporary_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> materialize_temporary_expr_info

    Input JSON data of type materialize_temporary_expr_info.

    val materialize_temporary_expr_info_of_string : string -> - materialize_temporary_expr_info

    Deserialize JSON data of type materialize_temporary_expr_info.

    val write_member_expr_info : Stdlib.Buffer.t -> member_expr_info -> unit

    Output a JSON value of type member_expr_info.

    val string_of_member_expr_info : ?len:int -> member_expr_info -> string

    Serialize a value of type member_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_member_expr_info : + materialize_temporary_expr_info

    Deserialize JSON data of type materialize_temporary_expr_info.

    val write_member_expr_info : Stdlib.Buffer.t -> member_expr_info -> unit

    Output a JSON value of type member_expr_info.

    val string_of_member_expr_info : ?len:int -> member_expr_info -> string

    Serialize a value of type member_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_member_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - member_expr_info

    Input JSON data of type member_expr_info.

    val member_expr_info_of_string : string -> member_expr_info

    Deserialize JSON data of type member_expr_info.

    val write_namespace_decl_info : Stdlib.Buffer.t -> namespace_decl_info -> unit

    Output a JSON value of type namespace_decl_info.

    val string_of_namespace_decl_info : ?len:int -> namespace_decl_info -> string

    Serialize a value of type namespace_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_namespace_decl_info : + member_expr_info

    Input JSON data of type member_expr_info.

    val member_expr_info_of_string : string -> member_expr_info

    Deserialize JSON data of type member_expr_info.

    val write_namespace_decl_info : Stdlib.Buffer.t -> namespace_decl_info -> unit

    Output a JSON value of type namespace_decl_info.

    val string_of_namespace_decl_info : ?len:int -> namespace_decl_info -> string

    Serialize a value of type namespace_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_namespace_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> namespace_decl_info

    Input JSON data of type namespace_decl_info.

    val namespace_decl_info_of_string : string -> namespace_decl_info

    Deserialize JSON data of type namespace_decl_info.

    val write_nested_name_specifier_loc : Stdlib.Buffer.t -> nested_name_specifier_loc -> unit

    Output a JSON value of type nested_name_specifier_loc.

    val string_of_nested_name_specifier_loc : - ?len:int -> + ?len:int -> nested_name_specifier_loc -> string

    Serialize a value of type nested_name_specifier_loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nested_name_specifier_loc : Yojson.Safe.lexer_state -> @@ -575,7 +575,7 @@ Stdlib.Buffer.t -> namespace_alias_decl_info -> unit

    Output a JSON value of type namespace_alias_decl_info.

    val string_of_namespace_alias_decl_info : - ?len:int -> + ?len:int -> namespace_alias_decl_info -> string

    Serialize a value of type namespace_alias_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_namespace_alias_decl_info : Yojson.Safe.lexer_state -> @@ -584,7 +584,7 @@ Stdlib.Buffer.t -> obj_c_category_decl_info -> unit

    Output a JSON value of type obj_c_category_decl_info.

    val string_of_obj_c_category_decl_info : - ?len:int -> + ?len:int -> obj_c_category_decl_info -> string

    Serialize a value of type obj_c_category_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_category_decl_info : Yojson.Safe.lexer_state -> @@ -593,7 +593,7 @@ Stdlib.Buffer.t -> obj_c_category_impl_decl_info -> unit

    Output a JSON value of type obj_c_category_impl_decl_info.

    val string_of_obj_c_category_impl_decl_info : - ?len:int -> + ?len:int -> obj_c_category_impl_decl_info -> string

    Serialize a value of type obj_c_category_impl_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_category_impl_decl_info : Yojson.Safe.lexer_state -> @@ -604,7 +604,7 @@ Stdlib.Buffer.t -> obj_c_compatible_alias_decl_info -> unit

    Output a JSON value of type obj_c_compatible_alias_decl_info.

    val string_of_obj_c_compatible_alias_decl_info : - ?len:int -> + ?len:int -> obj_c_compatible_alias_decl_info -> string

    Serialize a value of type obj_c_compatible_alias_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_compatible_alias_decl_info : Yojson.Safe.lexer_state -> @@ -615,7 +615,7 @@ Stdlib.Buffer.t -> obj_c_interface_decl_info -> unit

    Output a JSON value of type obj_c_interface_decl_info.

    val string_of_obj_c_interface_decl_info : - ?len:int -> + ?len:int -> obj_c_interface_decl_info -> string

    Serialize a value of type obj_c_interface_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_interface_decl_info : Yojson.Safe.lexer_state -> @@ -624,7 +624,7 @@ Stdlib.Buffer.t -> obj_c_ivar_ref_expr_info -> unit

    Output a JSON value of type obj_c_ivar_ref_expr_info.

    val string_of_obj_c_ivar_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_ivar_ref_expr_info -> string

    Serialize a value of type obj_c_ivar_ref_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_ivar_ref_expr_info : Yojson.Safe.lexer_state -> @@ -633,7 +633,7 @@ Stdlib.Buffer.t -> obj_c_property_decl_info -> unit

    Output a JSON value of type obj_c_property_decl_info.

    val string_of_obj_c_property_decl_info : - ?len:int -> + ?len:int -> obj_c_property_decl_info -> string

    Serialize a value of type obj_c_property_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_property_decl_info : Yojson.Safe.lexer_state -> @@ -642,7 +642,7 @@ Stdlib.Buffer.t -> obj_c_property_impl_decl_info -> unit

    Output a JSON value of type obj_c_property_impl_decl_info.

    val string_of_obj_c_property_impl_decl_info : - ?len:int -> + ?len:int -> obj_c_property_impl_decl_info -> string

    Serialize a value of type obj_c_property_impl_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_property_impl_decl_info : Yojson.Safe.lexer_state -> @@ -653,7 +653,7 @@ Stdlib.Buffer.t -> obj_c_protocol_decl_info -> unit

    Output a JSON value of type obj_c_protocol_decl_info.

    val string_of_obj_c_protocol_decl_info : - ?len:int -> + ?len:int -> obj_c_protocol_decl_info -> string

    Serialize a value of type obj_c_protocol_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_protocol_decl_info : Yojson.Safe.lexer_state -> @@ -662,7 +662,7 @@ Stdlib.Buffer.t -> objc_encode_expr_info -> unit

    Output a JSON value of type objc_encode_expr_info.

    val string_of_objc_encode_expr_info : - ?len:int -> + ?len:int -> objc_encode_expr_info -> string

    Serialize a value of type objc_encode_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_encode_expr_info : Yojson.Safe.lexer_state -> @@ -671,60 +671,60 @@ Stdlib.Buffer.t -> objc_object_type_info -> unit

    Output a JSON value of type objc_object_type_info.

    val string_of_objc_object_type_info : - ?len:int -> + ?len:int -> objc_object_type_info -> string

    Serialize a value of type objc_object_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_objc_object_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - objc_object_type_info

    Input JSON data of type objc_object_type_info.

    val objc_object_type_info_of_string : string -> objc_object_type_info

    Deserialize JSON data of type objc_object_type_info.

    val write_overload_expr_info : Stdlib.Buffer.t -> overload_expr_info -> unit

    Output a JSON value of type overload_expr_info.

    val string_of_overload_expr_info : ?len:int -> overload_expr_info -> string

    Serialize a value of type overload_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_overload_expr_info : + objc_object_type_info

    Input JSON data of type objc_object_type_info.

    val objc_object_type_info_of_string : string -> objc_object_type_info

    Deserialize JSON data of type objc_object_type_info.

    val write_overload_expr_info : Stdlib.Buffer.t -> overload_expr_info -> unit

    Output a JSON value of type overload_expr_info.

    val string_of_overload_expr_info : ?len:int -> overload_expr_info -> string

    Serialize a value of type overload_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_overload_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - overload_expr_info

    Input JSON data of type overload_expr_info.

    val overload_expr_info_of_string : string -> overload_expr_info

    Deserialize JSON data of type overload_expr_info.

    val write_params_type_info : Stdlib.Buffer.t -> params_type_info -> unit

    Output a JSON value of type params_type_info.

    val string_of_params_type_info : ?len:int -> params_type_info -> string

    Serialize a value of type params_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_params_type_info : + overload_expr_info

    Input JSON data of type overload_expr_info.

    val overload_expr_info_of_string : string -> overload_expr_info

    Deserialize JSON data of type overload_expr_info.

    val write_params_type_info : Stdlib.Buffer.t -> params_type_info -> unit

    Output a JSON value of type params_type_info.

    val string_of_params_type_info : ?len:int -> params_type_info -> string

    Serialize a value of type params_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_params_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - params_type_info

    Input JSON data of type params_type_info.

    val params_type_info_of_string : string -> params_type_info

    Deserialize JSON data of type params_type_info.

    val write_property_ref_kind : Stdlib.Buffer.t -> property_ref_kind -> unit

    Output a JSON value of type property_ref_kind.

    val string_of_property_ref_kind : ?len:int -> property_ref_kind -> string

    Serialize a value of type property_ref_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_property_ref_kind : + params_type_info

    Input JSON data of type params_type_info.

    val params_type_info_of_string : string -> params_type_info

    Deserialize JSON data of type params_type_info.

    val write_property_ref_kind : Stdlib.Buffer.t -> property_ref_kind -> unit

    Output a JSON value of type property_ref_kind.

    val string_of_property_ref_kind : ?len:int -> property_ref_kind -> string

    Serialize a value of type property_ref_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_property_ref_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> property_ref_kind

    Input JSON data of type property_ref_kind.

    val property_ref_kind_of_string : string -> property_ref_kind

    Deserialize JSON data of type property_ref_kind.

    val write_obj_c_property_ref_expr_info : Stdlib.Buffer.t -> obj_c_property_ref_expr_info -> unit

    Output a JSON value of type obj_c_property_ref_expr_info.

    val string_of_obj_c_property_ref_expr_info : - ?len:int -> + ?len:int -> obj_c_property_ref_expr_info -> string

    Serialize a value of type obj_c_property_ref_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_property_ref_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> obj_c_property_ref_expr_info

    Input JSON data of type obj_c_property_ref_expr_info.

    val obj_c_property_ref_expr_info_of_string : string -> - obj_c_property_ref_expr_info

    Deserialize JSON data of type obj_c_property_ref_expr_info.

    val write_receiver_kind : Stdlib.Buffer.t -> receiver_kind -> unit

    Output a JSON value of type receiver_kind.

    val string_of_receiver_kind : ?len:int -> receiver_kind -> string

    Serialize a value of type receiver_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_receiver_kind : + obj_c_property_ref_expr_info

    Deserialize JSON data of type obj_c_property_ref_expr_info.

    val write_receiver_kind : Stdlib.Buffer.t -> receiver_kind -> unit

    Output a JSON value of type receiver_kind.

    val string_of_receiver_kind : ?len:int -> receiver_kind -> string

    Serialize a value of type receiver_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_receiver_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> receiver_kind

    Input JSON data of type receiver_kind.

    val receiver_kind_of_string : string -> receiver_kind

    Deserialize JSON data of type receiver_kind.

    val write_obj_c_message_expr_info : Stdlib.Buffer.t -> obj_c_message_expr_info -> unit

    Output a JSON value of type obj_c_message_expr_info.

    val string_of_obj_c_message_expr_info : - ?len:int -> + ?len:int -> obj_c_message_expr_info -> string

    Serialize a value of type obj_c_message_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_message_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - obj_c_message_expr_info

    Input JSON data of type obj_c_message_expr_info.

    val obj_c_message_expr_info_of_string : string -> obj_c_message_expr_info

    Deserialize JSON data of type obj_c_message_expr_info.

    val write_type_info : Stdlib.Buffer.t -> type_info -> unit

    Output a JSON value of type type_info.

    val string_of_type_info : ?len:int -> type_info -> string

    Serialize a value of type type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_info : + obj_c_message_expr_info

    Input JSON data of type obj_c_message_expr_info.

    val obj_c_message_expr_info_of_string : string -> obj_c_message_expr_info

    Deserialize JSON data of type obj_c_message_expr_info.

    val write_type_info : Stdlib.Buffer.t -> type_info -> unit

    Output a JSON value of type type_info.

    val string_of_type_info : ?len:int -> type_info -> string

    Serialize a value of type type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - type_info

    Input JSON data of type type_info.

    val type_info_of_string : string -> type_info

    Deserialize JSON data of type type_info.

    val write_type_trait_info : Stdlib.Buffer.t -> type_trait_info -> unit

    Output a JSON value of type type_trait_info.

    val string_of_type_trait_info : ?len:int -> type_trait_info -> string

    Serialize a value of type type_trait_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_trait_info : + type_info

    Input JSON data of type type_info.

    val type_info_of_string : string -> type_info

    Deserialize JSON data of type type_info.

    val write_type_trait_info : Stdlib.Buffer.t -> type_trait_info -> unit

    Output a JSON value of type type_trait_info.

    val string_of_type_trait_info : ?len:int -> type_trait_info -> string

    Serialize a value of type type_trait_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_type_trait_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - type_trait_info

    Input JSON data of type type_trait_info.

    val type_trait_info_of_string : string -> type_trait_info

    Deserialize JSON data of type type_trait_info.

    val write_typedef_decl_info : Stdlib.Buffer.t -> typedef_decl_info -> unit

    Output a JSON value of type typedef_decl_info.

    val string_of_typedef_decl_info : ?len:int -> typedef_decl_info -> string

    Serialize a value of type typedef_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_typedef_decl_info : + type_trait_info

    Input JSON data of type type_trait_info.

    val type_trait_info_of_string : string -> type_trait_info

    Deserialize JSON data of type type_trait_info.

    val write_typedef_decl_info : Stdlib.Buffer.t -> typedef_decl_info -> unit

    Output a JSON value of type typedef_decl_info.

    val string_of_typedef_decl_info : ?len:int -> typedef_decl_info -> string

    Serialize a value of type typedef_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_typedef_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - typedef_decl_info

    Input JSON data of type typedef_decl_info.

    val typedef_decl_info_of_string : string -> typedef_decl_info

    Deserialize JSON data of type typedef_decl_info.

    val write_typedef_type_info : Stdlib.Buffer.t -> typedef_type_info -> unit

    Output a JSON value of type typedef_type_info.

    val string_of_typedef_type_info : ?len:int -> typedef_type_info -> string

    Serialize a value of type typedef_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_typedef_type_info : + typedef_decl_info

    Input JSON data of type typedef_decl_info.

    val typedef_decl_info_of_string : string -> typedef_decl_info

    Deserialize JSON data of type typedef_decl_info.

    val write_typedef_type_info : Stdlib.Buffer.t -> typedef_type_info -> unit

    Output a JSON value of type typedef_type_info.

    val string_of_typedef_type_info : ?len:int -> typedef_type_info -> string

    Serialize a value of type typedef_type_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_typedef_type_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - typedef_type_info

    Input JSON data of type typedef_type_info.

    val typedef_type_info_of_string : string -> typedef_type_info

    Deserialize JSON data of type typedef_type_info.

    val write_c_type : Stdlib.Buffer.t -> c_type -> unit

    Output a JSON value of type c_type.

    val string_of_c_type : ?len:int -> c_type -> string

    Serialize a value of type c_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_c_type : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> c_type

    Input JSON data of type c_type.

    val c_type_of_string : string -> c_type

    Deserialize JSON data of type c_type.

    val write_translation_unit_decl_info : + typedef_type_info

    Input JSON data of type typedef_type_info.

    val typedef_type_info_of_string : string -> typedef_type_info

    Deserialize JSON data of type typedef_type_info.

    val write_c_type : Stdlib.Buffer.t -> c_type -> unit

    Output a JSON value of type c_type.

    val string_of_c_type : ?len:int -> c_type -> string

    Serialize a value of type c_type into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_c_type : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> c_type

    Input JSON data of type c_type.

    val c_type_of_string : string -> c_type

    Deserialize JSON data of type c_type.

    val write_translation_unit_decl_info : Stdlib.Buffer.t -> translation_unit_decl_info -> unit

    Output a JSON value of type translation_unit_decl_info.

    val string_of_translation_unit_decl_info : - ?len:int -> + ?len:int -> translation_unit_decl_info -> string

    Serialize a value of type translation_unit_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_translation_unit_decl_info : Yojson.Safe.lexer_state -> @@ -733,7 +733,7 @@ Stdlib.Buffer.t -> unary_expr_or_type_trait_kind -> unit

    Output a JSON value of type unary_expr_or_type_trait_kind.

    val string_of_unary_expr_or_type_trait_kind : - ?len:int -> + ?len:int -> unary_expr_or_type_trait_kind -> string

    Serialize a value of type unary_expr_or_type_trait_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_expr_or_type_trait_kind : Yojson.Safe.lexer_state -> @@ -744,24 +744,24 @@ Stdlib.Buffer.t -> unary_expr_or_type_trait_expr_info -> unit

    Output a JSON value of type unary_expr_or_type_trait_expr_info.

    val string_of_unary_expr_or_type_trait_expr_info : - ?len:int -> + ?len:int -> unary_expr_or_type_trait_expr_info -> string

    Serialize a value of type unary_expr_or_type_trait_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_expr_or_type_trait_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> unary_expr_or_type_trait_expr_info

    Input JSON data of type unary_expr_or_type_trait_expr_info.

    val unary_expr_or_type_trait_expr_info_of_string : string -> - unary_expr_or_type_trait_expr_info

    Deserialize JSON data of type unary_expr_or_type_trait_expr_info.

    val write_unary_operator_kind : Stdlib.Buffer.t -> unary_operator_kind -> unit

    Output a JSON value of type unary_operator_kind.

    val string_of_unary_operator_kind : ?len:int -> unary_operator_kind -> string

    Serialize a value of type unary_operator_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_operator_kind : + unary_expr_or_type_trait_expr_info

    Deserialize JSON data of type unary_expr_or_type_trait_expr_info.

    val write_unary_operator_kind : Stdlib.Buffer.t -> unary_operator_kind -> unit

    Output a JSON value of type unary_operator_kind.

    val string_of_unary_operator_kind : ?len:int -> unary_operator_kind -> string

    Serialize a value of type unary_operator_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_operator_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - unary_operator_kind

    Input JSON data of type unary_operator_kind.

    val unary_operator_kind_of_string : string -> unary_operator_kind

    Deserialize JSON data of type unary_operator_kind.

    val write_unary_operator_info : Stdlib.Buffer.t -> unary_operator_info -> unit

    Output a JSON value of type unary_operator_info.

    val string_of_unary_operator_info : ?len:int -> unary_operator_info -> string

    Serialize a value of type unary_operator_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_operator_info : + unary_operator_kind

    Input JSON data of type unary_operator_kind.

    val unary_operator_kind_of_string : string -> unary_operator_kind

    Deserialize JSON data of type unary_operator_kind.

    val write_unary_operator_info : Stdlib.Buffer.t -> unary_operator_info -> unit

    Output a JSON value of type unary_operator_info.

    val string_of_unary_operator_info : ?len:int -> unary_operator_info -> string

    Serialize a value of type unary_operator_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unary_operator_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> unary_operator_info

    Input JSON data of type unary_operator_info.

    val unary_operator_info_of_string : string -> unary_operator_info

    Deserialize JSON data of type unary_operator_info.

    val write_unresolved_lookup_expr_info : Stdlib.Buffer.t -> unresolved_lookup_expr_info -> unit

    Output a JSON value of type unresolved_lookup_expr_info.

    val string_of_unresolved_lookup_expr_info : - ?len:int -> + ?len:int -> unresolved_lookup_expr_info -> string

    Serialize a value of type unresolved_lookup_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_unresolved_lookup_expr_info : Yojson.Safe.lexer_state -> @@ -772,92 +772,92 @@ Stdlib.Buffer.t -> using_directive_decl_info -> unit

    Output a JSON value of type using_directive_decl_info.

    val string_of_using_directive_decl_info : - ?len:int -> + ?len:int -> using_directive_decl_info -> string

    Serialize a value of type using_directive_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_using_directive_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - using_directive_decl_info

    Input JSON data of type using_directive_decl_info.

    val using_directive_decl_info_of_string : string -> using_directive_decl_info

    Deserialize JSON data of type using_directive_decl_info.

    val write_value_kind : Stdlib.Buffer.t -> value_kind -> unit

    Output a JSON value of type value_kind.

    val string_of_value_kind : ?len:int -> value_kind -> string

    Serialize a value of type value_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_value_kind : + using_directive_decl_info

    Input JSON data of type using_directive_decl_info.

    val using_directive_decl_info_of_string : string -> using_directive_decl_info

    Deserialize JSON data of type using_directive_decl_info.

    val write_value_kind : Stdlib.Buffer.t -> value_kind -> unit

    Output a JSON value of type value_kind.

    val string_of_value_kind : ?len:int -> value_kind -> string

    Serialize a value of type value_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_value_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - value_kind

    Input JSON data of type value_kind.

    val value_kind_of_string : string -> value_kind

    Deserialize JSON data of type value_kind.

    val write_expr_info : Stdlib.Buffer.t -> expr_info -> unit

    Output a JSON value of type expr_info.

    val string_of_expr_info : ?len:int -> expr_info -> string

    Serialize a value of type expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_expr_info : + value_kind

    Input JSON data of type value_kind.

    val value_kind_of_string : string -> value_kind

    Deserialize JSON data of type value_kind.

    val write_expr_info : Stdlib.Buffer.t -> expr_info -> unit

    Output a JSON value of type expr_info.

    val string_of_expr_info : ?len:int -> expr_info -> string

    Serialize a value of type expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - expr_info

    Input JSON data of type expr_info.

    val expr_info_of_string : string -> expr_info

    Deserialize JSON data of type expr_info.

    val write_version_tuple : Stdlib.Buffer.t -> version_tuple -> unit

    Output a JSON value of type version_tuple.

    val string_of_version_tuple : ?len:int -> version_tuple -> string

    Serialize a value of type version_tuple into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_version_tuple : + expr_info

    Input JSON data of type expr_info.

    val expr_info_of_string : string -> expr_info

    Deserialize JSON data of type expr_info.

    val write_version_tuple : Stdlib.Buffer.t -> version_tuple -> unit

    Output a JSON value of type version_tuple.

    val string_of_version_tuple : ?len:int -> version_tuple -> string

    Serialize a value of type version_tuple into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_version_tuple : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> version_tuple

    Input JSON data of type version_tuple.

    val version_tuple_of_string : string -> version_tuple

    Deserialize JSON data of type version_tuple.

    val write_availability_attr_info : Stdlib.Buffer.t -> availability_attr_info -> unit

    Output a JSON value of type availability_attr_info.

    val string_of_availability_attr_info : - ?len:int -> + ?len:int -> availability_attr_info -> string

    Serialize a value of type availability_attr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_availability_attr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - availability_attr_info

    Input JSON data of type availability_attr_info.

    val availability_attr_info_of_string : string -> availability_attr_info

    Deserialize JSON data of type availability_attr_info.

    val write_visibility_attr : Stdlib.Buffer.t -> visibility_attr -> unit

    Output a JSON value of type visibility_attr.

    val string_of_visibility_attr : ?len:int -> visibility_attr -> string

    Serialize a value of type visibility_attr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_visibility_attr : + availability_attr_info

    Input JSON data of type availability_attr_info.

    val availability_attr_info_of_string : string -> availability_attr_info

    Deserialize JSON data of type availability_attr_info.

    val write_visibility_attr : Stdlib.Buffer.t -> visibility_attr -> unit

    Output a JSON value of type visibility_attr.

    val string_of_visibility_attr : ?len:int -> visibility_attr -> string

    Serialize a value of type visibility_attr into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_visibility_attr : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - visibility_attr

    Input JSON data of type visibility_attr.

    val visibility_attr_of_string : string -> visibility_attr

    Deserialize JSON data of type visibility_attr.

    val write_attribute : Stdlib.Buffer.t -> attribute -> unit

    Output a JSON value of type attribute.

    val string_of_attribute : ?len:int -> attribute -> string

    Serialize a value of type attribute into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute : + visibility_attr

    Input JSON data of type visibility_attr.

    val visibility_attr_of_string : string -> visibility_attr

    Deserialize JSON data of type visibility_attr.

    val write_attribute : Stdlib.Buffer.t -> attribute -> unit

    Output a JSON value of type attribute.

    val string_of_attribute : ?len:int -> attribute -> string

    Serialize a value of type attribute into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_attribute : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> attribute

    Input JSON data of type attribute.

    val attribute_of_string : string -> attribute

    Deserialize JSON data of type attribute.

    val write_template_instantiation_arg_info : Stdlib.Buffer.t -> template_instantiation_arg_info -> unit

    Output a JSON value of type template_instantiation_arg_info.

    val string_of_template_instantiation_arg_info : - ?len:int -> + ?len:int -> template_instantiation_arg_info -> string

    Serialize a value of type template_instantiation_arg_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_template_instantiation_arg_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> template_instantiation_arg_info

    Input JSON data of type template_instantiation_arg_info.

    val template_instantiation_arg_info_of_string : string -> - template_instantiation_arg_info

    Deserialize JSON data of type template_instantiation_arg_info.

    val write_comment : Stdlib.Buffer.t -> comment -> unit

    Output a JSON value of type comment.

    val string_of_comment : ?len:int -> comment -> string

    Serialize a value of type comment into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_comment : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> comment

    Input JSON data of type comment.

    val comment_of_string : string -> comment

    Deserialize JSON data of type comment.

    val write_template_specialization_info : + template_instantiation_arg_info

    Deserialize JSON data of type template_instantiation_arg_info.

    val write_comment : Stdlib.Buffer.t -> comment -> unit

    Output a JSON value of type comment.

    val string_of_comment : ?len:int -> comment -> string

    Serialize a value of type comment into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_comment : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> comment

    Input JSON data of type comment.

    val comment_of_string : string -> comment

    Deserialize JSON data of type comment.

    val write_template_specialization_info : Stdlib.Buffer.t -> template_specialization_info -> unit

    Output a JSON value of type template_specialization_info.

    val string_of_template_specialization_info : - ?len:int -> + ?len:int -> template_specialization_info -> string

    Serialize a value of type template_specialization_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_template_specialization_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> template_specialization_info

    Input JSON data of type template_specialization_info.

    val template_specialization_info_of_string : string -> - template_specialization_info

    Deserialize JSON data of type template_specialization_info.

    val write_decl_info : Stdlib.Buffer.t -> decl_info -> unit

    Output a JSON value of type decl_info.

    val string_of_decl_info : ?len:int -> decl_info -> string

    Serialize a value of type decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_info : + template_specialization_info

    Deserialize JSON data of type template_specialization_info.

    val write_decl_info : Stdlib.Buffer.t -> decl_info -> unit

    Output a JSON value of type decl_info.

    val string_of_decl_info : ?len:int -> decl_info -> string

    Serialize a value of type decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl_info

    Input JSON data of type decl_info.

    val decl_info_of_string : string -> decl_info

    Deserialize JSON data of type decl_info.

    val write_block_captured_variable : Stdlib.Buffer.t -> block_captured_variable -> unit

    Output a JSON value of type block_captured_variable.

    val string_of_block_captured_variable : - ?len:int -> + ?len:int -> block_captured_variable -> string

    Serialize a value of type block_captured_variable into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_block_captured_variable : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - block_captured_variable

    Input JSON data of type block_captured_variable.

    val block_captured_variable_of_string : string -> block_captured_variable

    Deserialize JSON data of type block_captured_variable.

    val write_block_decl_info : Stdlib.Buffer.t -> block_decl_info -> unit

    Output a JSON value of type block_decl_info.

    val string_of_block_decl_info : ?len:int -> block_decl_info -> string

    Serialize a value of type block_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_block_decl_info : + block_captured_variable

    Input JSON data of type block_captured_variable.

    val block_captured_variable_of_string : string -> block_captured_variable

    Deserialize JSON data of type block_captured_variable.

    val write_block_decl_info : Stdlib.Buffer.t -> block_decl_info -> unit

    Output a JSON value of type block_decl_info.

    val string_of_block_decl_info : ?len:int -> block_decl_info -> string

    Serialize a value of type block_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_block_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - block_decl_info

    Input JSON data of type block_decl_info.

    val block_decl_info_of_string : string -> block_decl_info

    Deserialize JSON data of type block_decl_info.

    val write_coreturn_stmt_info : Stdlib.Buffer.t -> coreturn_stmt_info -> unit

    Output a JSON value of type coreturn_stmt_info.

    val string_of_coreturn_stmt_info : ?len:int -> coreturn_stmt_info -> string

    Serialize a value of type coreturn_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_coreturn_stmt_info : + block_decl_info

    Input JSON data of type block_decl_info.

    val block_decl_info_of_string : string -> block_decl_info

    Deserialize JSON data of type block_decl_info.

    val write_coreturn_stmt_info : Stdlib.Buffer.t -> coreturn_stmt_info -> unit

    Output a JSON value of type coreturn_stmt_info.

    val string_of_coreturn_stmt_info : ?len:int -> coreturn_stmt_info -> string

    Serialize a value of type coreturn_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_coreturn_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - coreturn_stmt_info

    Input JSON data of type coreturn_stmt_info.

    val coreturn_stmt_info_of_string : string -> coreturn_stmt_info

    Deserialize JSON data of type coreturn_stmt_info.

    val write_coro_body_stmt_info : Stdlib.Buffer.t -> coro_body_stmt_info -> unit

    Output a JSON value of type coro_body_stmt_info.

    val string_of_coro_body_stmt_info : ?len:int -> coro_body_stmt_info -> string

    Serialize a value of type coro_body_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_coro_body_stmt_info : + coreturn_stmt_info

    Input JSON data of type coreturn_stmt_info.

    val coreturn_stmt_info_of_string : string -> coreturn_stmt_info

    Deserialize JSON data of type coreturn_stmt_info.

    val write_coro_body_stmt_info : Stdlib.Buffer.t -> coro_body_stmt_info -> unit

    Output a JSON value of type coro_body_stmt_info.

    val string_of_coro_body_stmt_info : ?len:int -> coro_body_stmt_info -> string

    Serialize a value of type coro_body_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_coro_body_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - coro_body_stmt_info

    Input JSON data of type coro_body_stmt_info.

    val coro_body_stmt_info_of_string : string -> coro_body_stmt_info

    Deserialize JSON data of type coro_body_stmt_info.

    val write_cxx_catch_stmt_info : Stdlib.Buffer.t -> cxx_catch_stmt_info -> unit

    Output a JSON value of type cxx_catch_stmt_info.

    val string_of_cxx_catch_stmt_info : ?len:int -> cxx_catch_stmt_info -> string

    Serialize a value of type cxx_catch_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_catch_stmt_info : + coro_body_stmt_info

    Input JSON data of type coro_body_stmt_info.

    val coro_body_stmt_info_of_string : string -> coro_body_stmt_info

    Deserialize JSON data of type coro_body_stmt_info.

    val write_cxx_catch_stmt_info : Stdlib.Buffer.t -> cxx_catch_stmt_info -> unit

    Output a JSON value of type cxx_catch_stmt_info.

    val string_of_cxx_catch_stmt_info : ?len:int -> cxx_catch_stmt_info -> string

    Serialize a value of type cxx_catch_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_catch_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_catch_stmt_info

    Input JSON data of type cxx_catch_stmt_info.

    val cxx_catch_stmt_info_of_string : string -> cxx_catch_stmt_info

    Deserialize JSON data of type cxx_catch_stmt_info.

    val write_cxx_ctor_initializer : Stdlib.Buffer.t -> cxx_ctor_initializer -> - unit

    Output a JSON value of type cxx_ctor_initializer.

    val string_of_cxx_ctor_initializer : ?len:int -> cxx_ctor_initializer -> string

    Serialize a value of type cxx_ctor_initializer into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_ctor_initializer : + unit

    Output a JSON value of type cxx_ctor_initializer.

    val string_of_cxx_ctor_initializer : ?len:int -> cxx_ctor_initializer -> string

    Serialize a value of type cxx_ctor_initializer into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_ctor_initializer : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_ctor_initializer

    Input JSON data of type cxx_ctor_initializer.

    val cxx_ctor_initializer_of_string : string -> cxx_ctor_initializer

    Deserialize JSON data of type cxx_ctor_initializer.

    val write_cxx_default_expr_info : Stdlib.Buffer.t -> cxx_default_expr_info -> unit

    Output a JSON value of type cxx_default_expr_info.

    val string_of_cxx_default_expr_info : - ?len:int -> + ?len:int -> cxx_default_expr_info -> string

    Serialize a value of type cxx_default_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_default_expr_info : Yojson.Safe.lexer_state -> @@ -865,38 +865,38 @@ cxx_default_expr_info

    Input JSON data of type cxx_default_expr_info.

    val cxx_default_expr_info_of_string : string -> cxx_default_expr_info

    Deserialize JSON data of type cxx_default_expr_info.

    val write_cxx_method_decl_info : Stdlib.Buffer.t -> cxx_method_decl_info -> - unit

    Output a JSON value of type cxx_method_decl_info.

    val string_of_cxx_method_decl_info : ?len:int -> cxx_method_decl_info -> string

    Serialize a value of type cxx_method_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_method_decl_info : + unit

    Output a JSON value of type cxx_method_decl_info.

    val string_of_cxx_method_decl_info : ?len:int -> cxx_method_decl_info -> string

    Serialize a value of type cxx_method_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_method_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cxx_method_decl_info

    Input JSON data of type cxx_method_decl_info.

    val cxx_method_decl_info_of_string : string -> cxx_method_decl_info

    Deserialize JSON data of type cxx_method_decl_info.

    val write_cxx_record_decl_info : Stdlib.Buffer.t -> cxx_record_decl_info -> - unit

    Output a JSON value of type cxx_record_decl_info.

    val string_of_cxx_record_decl_info : ?len:int -> cxx_record_decl_info -> string

    Serialize a value of type cxx_record_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_record_decl_info : + unit

    Output a JSON value of type cxx_record_decl_info.

    val string_of_cxx_record_decl_info : ?len:int -> cxx_record_decl_info -> string

    Serialize a value of type cxx_record_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_cxx_record_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - cxx_record_decl_info

    Input JSON data of type cxx_record_decl_info.

    val cxx_record_decl_info_of_string : string -> cxx_record_decl_info

    Deserialize JSON data of type cxx_record_decl_info.

    val write_decl : Stdlib.Buffer.t -> decl -> unit

    Output a JSON value of type decl.

    val string_of_decl : ?len:int -> decl -> string

    Serialize a value of type decl into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl

    Input JSON data of type decl.

    val decl_of_string : string -> decl

    Deserialize JSON data of type decl.

    val write_enum_constant_decl_info : + cxx_record_decl_info

    Input JSON data of type cxx_record_decl_info.

    val cxx_record_decl_info_of_string : string -> cxx_record_decl_info

    Deserialize JSON data of type cxx_record_decl_info.

    val write_decl : Stdlib.Buffer.t -> decl -> unit

    Output a JSON value of type decl.

    val string_of_decl : ?len:int -> decl -> string

    Serialize a value of type decl into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_decl : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> decl

    Input JSON data of type decl.

    val decl_of_string : string -> decl

    Deserialize JSON data of type decl.

    val write_enum_constant_decl_info : Stdlib.Buffer.t -> enum_constant_decl_info -> unit

    Output a JSON value of type enum_constant_decl_info.

    val string_of_enum_constant_decl_info : - ?len:int -> + ?len:int -> enum_constant_decl_info -> string

    Serialize a value of type enum_constant_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_enum_constant_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - enum_constant_decl_info

    Input JSON data of type enum_constant_decl_info.

    val enum_constant_decl_info_of_string : string -> enum_constant_decl_info

    Deserialize JSON data of type enum_constant_decl_info.

    val write_field_decl_info : Stdlib.Buffer.t -> field_decl_info -> unit

    Output a JSON value of type field_decl_info.

    val string_of_field_decl_info : ?len:int -> field_decl_info -> string

    Serialize a value of type field_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_field_decl_info : + enum_constant_decl_info

    Input JSON data of type enum_constant_decl_info.

    val enum_constant_decl_info_of_string : string -> enum_constant_decl_info

    Deserialize JSON data of type enum_constant_decl_info.

    val write_field_decl_info : Stdlib.Buffer.t -> field_decl_info -> unit

    Output a JSON value of type field_decl_info.

    val string_of_field_decl_info : ?len:int -> field_decl_info -> string

    Serialize a value of type field_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_field_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - field_decl_info

    Input JSON data of type field_decl_info.

    val field_decl_info_of_string : string -> field_decl_info

    Deserialize JSON data of type field_decl_info.

    val write_friend_info : Stdlib.Buffer.t -> friend_info -> unit

    Output a JSON value of type friend_info.

    val string_of_friend_info : ?len:int -> friend_info -> string

    Serialize a value of type friend_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_friend_info : + field_decl_info

    Input JSON data of type field_decl_info.

    val field_decl_info_of_string : string -> field_decl_info

    Deserialize JSON data of type field_decl_info.

    val write_friend_info : Stdlib.Buffer.t -> friend_info -> unit

    Output a JSON value of type friend_info.

    val string_of_friend_info : ?len:int -> friend_info -> string

    Serialize a value of type friend_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_friend_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - friend_info

    Input JSON data of type friend_info.

    val friend_info_of_string : string -> friend_info

    Deserialize JSON data of type friend_info.

    val write_function_decl_info : Stdlib.Buffer.t -> function_decl_info -> unit

    Output a JSON value of type function_decl_info.

    val string_of_function_decl_info : ?len:int -> function_decl_info -> string

    Serialize a value of type function_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_function_decl_info : + friend_info

    Input JSON data of type friend_info.

    val friend_info_of_string : string -> friend_info

    Deserialize JSON data of type friend_info.

    val write_function_decl_info : Stdlib.Buffer.t -> function_decl_info -> unit

    Output a JSON value of type function_decl_info.

    val string_of_function_decl_info : ?len:int -> function_decl_info -> string

    Serialize a value of type function_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_function_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> function_decl_info

    Input JSON data of type function_decl_info.

    val function_decl_info_of_string : string -> function_decl_info

    Deserialize JSON data of type function_decl_info.

    val write_generic_selection_info : Stdlib.Buffer.t -> generic_selection_info -> unit

    Output a JSON value of type generic_selection_info.

    val string_of_generic_selection_info : - ?len:int -> + ?len:int -> generic_selection_info -> string

    Serialize a value of type generic_selection_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_generic_selection_info : Yojson.Safe.lexer_state -> @@ -905,25 +905,25 @@ Stdlib.Buffer.t -> holding_var_decl_info -> unit

    Output a JSON value of type holding_var_decl_info.

    val string_of_holding_var_decl_info : - ?len:int -> + ?len:int -> holding_var_decl_info -> string

    Serialize a value of type holding_var_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_holding_var_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - holding_var_decl_info

    Input JSON data of type holding_var_decl_info.

    val holding_var_decl_info_of_string : string -> holding_var_decl_info

    Deserialize JSON data of type holding_var_decl_info.

    val write_if_stmt_info : Stdlib.Buffer.t -> if_stmt_info -> unit

    Output a JSON value of type if_stmt_info.

    val string_of_if_stmt_info : ?len:int -> if_stmt_info -> string

    Serialize a value of type if_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_if_stmt_info : + holding_var_decl_info

    Input JSON data of type holding_var_decl_info.

    val holding_var_decl_info_of_string : string -> holding_var_decl_info

    Deserialize JSON data of type holding_var_decl_info.

    val write_if_stmt_info : Stdlib.Buffer.t -> if_stmt_info -> unit

    Output a JSON value of type if_stmt_info.

    val string_of_if_stmt_info : ?len:int -> if_stmt_info -> string

    Serialize a value of type if_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_if_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - if_stmt_info

    Input JSON data of type if_stmt_info.

    val if_stmt_info_of_string : string -> if_stmt_info

    Deserialize JSON data of type if_stmt_info.

    val write_lambda_capture_info : Stdlib.Buffer.t -> lambda_capture_info -> unit

    Output a JSON value of type lambda_capture_info.

    val string_of_lambda_capture_info : ?len:int -> lambda_capture_info -> string

    Serialize a value of type lambda_capture_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_capture_info : + if_stmt_info

    Input JSON data of type if_stmt_info.

    val if_stmt_info_of_string : string -> if_stmt_info

    Deserialize JSON data of type if_stmt_info.

    val write_lambda_capture_info : Stdlib.Buffer.t -> lambda_capture_info -> unit

    Output a JSON value of type lambda_capture_info.

    val string_of_lambda_capture_info : ?len:int -> lambda_capture_info -> string

    Serialize a value of type lambda_capture_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_capture_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - lambda_capture_info

    Input JSON data of type lambda_capture_info.

    val lambda_capture_info_of_string : string -> lambda_capture_info

    Deserialize JSON data of type lambda_capture_info.

    val write_lambda_expr_info : Stdlib.Buffer.t -> lambda_expr_info -> unit

    Output a JSON value of type lambda_expr_info.

    val string_of_lambda_expr_info : ?len:int -> lambda_expr_info -> string

    Serialize a value of type lambda_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_expr_info : + lambda_capture_info

    Input JSON data of type lambda_capture_info.

    val lambda_capture_info_of_string : string -> lambda_capture_info

    Deserialize JSON data of type lambda_capture_info.

    val write_lambda_expr_info : Stdlib.Buffer.t -> lambda_expr_info -> unit

    Output a JSON value of type lambda_expr_info.

    val string_of_lambda_expr_info : ?len:int -> lambda_expr_info -> string

    Serialize a value of type lambda_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lambda_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> lambda_expr_info

    Input JSON data of type lambda_expr_info.

    val lambda_expr_info_of_string : string -> lambda_expr_info

    Deserialize JSON data of type lambda_expr_info.

    val write_obj_c_implementation_decl_info : Stdlib.Buffer.t -> obj_c_implementation_decl_info -> unit

    Output a JSON value of type obj_c_implementation_decl_info.

    val string_of_obj_c_implementation_decl_info : - ?len:int -> + ?len:int -> obj_c_implementation_decl_info -> string

    Serialize a value of type obj_c_implementation_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_implementation_decl_info : Yojson.Safe.lexer_state -> @@ -934,7 +934,7 @@ Stdlib.Buffer.t -> obj_c_message_expr_kind -> unit

    Output a JSON value of type obj_c_message_expr_kind.

    val string_of_obj_c_message_expr_kind : - ?len:int -> + ?len:int -> obj_c_message_expr_kind -> string

    Serialize a value of type obj_c_message_expr_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_message_expr_kind : Yojson.Safe.lexer_state -> @@ -943,7 +943,7 @@ Stdlib.Buffer.t -> obj_c_method_decl_info -> unit

    Output a JSON value of type obj_c_method_decl_info.

    val string_of_obj_c_method_decl_info : - ?len:int -> + ?len:int -> obj_c_method_decl_info -> string

    Serialize a value of type obj_c_method_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_obj_c_method_decl_info : Yojson.Safe.lexer_state -> @@ -952,18 +952,18 @@ Stdlib.Buffer.t -> opaque_value_expr_info -> unit

    Output a JSON value of type opaque_value_expr_info.

    val string_of_opaque_value_expr_info : - ?len:int -> + ?len:int -> opaque_value_expr_info -> string

    Serialize a value of type opaque_value_expr_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_opaque_value_expr_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - opaque_value_expr_info

    Input JSON data of type opaque_value_expr_info.

    val opaque_value_expr_info_of_string : string -> opaque_value_expr_info

    Deserialize JSON data of type opaque_value_expr_info.

    val write_stmt : Stdlib.Buffer.t -> stmt -> unit

    Output a JSON value of type stmt.

    val string_of_stmt : ?len:int -> stmt -> string

    Serialize a value of type stmt into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_stmt : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> stmt

    Input JSON data of type stmt.

    val stmt_of_string : string -> stmt

    Deserialize JSON data of type stmt.

    val write_switch_stmt_info : Stdlib.Buffer.t -> switch_stmt_info -> unit

    Output a JSON value of type switch_stmt_info.

    val string_of_switch_stmt_info : ?len:int -> switch_stmt_info -> string

    Serialize a value of type switch_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_switch_stmt_info : + opaque_value_expr_info

    Input JSON data of type opaque_value_expr_info.

    val opaque_value_expr_info_of_string : string -> opaque_value_expr_info

    Deserialize JSON data of type opaque_value_expr_info.

    val write_stmt : Stdlib.Buffer.t -> stmt -> unit

    Output a JSON value of type stmt.

    val string_of_stmt : ?len:int -> stmt -> string

    Serialize a value of type stmt into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_stmt : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> stmt

    Input JSON data of type stmt.

    val stmt_of_string : string -> stmt

    Deserialize JSON data of type stmt.

    val write_switch_stmt_info : Stdlib.Buffer.t -> switch_stmt_info -> unit

    Output a JSON value of type switch_stmt_info.

    val string_of_switch_stmt_info : ?len:int -> switch_stmt_info -> string

    Serialize a value of type switch_stmt_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_switch_stmt_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - switch_stmt_info

    Input JSON data of type switch_stmt_info.

    val switch_stmt_info_of_string : string -> switch_stmt_info

    Deserialize JSON data of type switch_stmt_info.

    val write_template_decl_info : Stdlib.Buffer.t -> template_decl_info -> unit

    Output a JSON value of type template_decl_info.

    val string_of_template_decl_info : ?len:int -> template_decl_info -> string

    Serialize a value of type template_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_template_decl_info : + switch_stmt_info

    Input JSON data of type switch_stmt_info.

    val switch_stmt_info_of_string : string -> switch_stmt_info

    Deserialize JSON data of type switch_stmt_info.

    val write_template_decl_info : Stdlib.Buffer.t -> template_decl_info -> unit

    Output a JSON value of type template_decl_info.

    val string_of_template_decl_info : ?len:int -> template_decl_info -> string

    Serialize a value of type template_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_template_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - template_decl_info

    Input JSON data of type template_decl_info.

    val template_decl_info_of_string : string -> template_decl_info

    Deserialize JSON data of type template_decl_info.

    val write_var_decl_info : Stdlib.Buffer.t -> var_decl_info -> unit

    Output a JSON value of type var_decl_info.

    val string_of_var_decl_info : ?len:int -> var_decl_info -> string

    Serialize a value of type var_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_var_decl_info : + template_decl_info

    Input JSON data of type template_decl_info.

    val template_decl_info_of_string : string -> template_decl_info

    Deserialize JSON data of type template_decl_info.

    val write_var_decl_info : Stdlib.Buffer.t -> var_decl_info -> unit

    Output a JSON value of type var_decl_info.

    val string_of_var_decl_info : ?len:int -> var_decl_info -> string

    Serialize a value of type var_decl_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_var_decl_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - var_decl_info

    Input JSON data of type var_decl_info.

    val var_decl_info_of_string : string -> var_decl_info

    Deserialize JSON data of type var_decl_info.

    val write_lookup : Stdlib.Buffer.t -> lookup -> unit

    Output a JSON value of type lookup.

    val string_of_lookup : ?len:int -> lookup -> string

    Serialize a value of type lookup into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lookup : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> lookup

    Input JSON data of type lookup.

    val lookup_of_string : string -> lookup

    Deserialize JSON data of type lookup.

    val write_lookups : Stdlib.Buffer.t -> lookups -> unit

    Output a JSON value of type lookups.

    val string_of_lookups : ?len:int -> lookups -> string

    Serialize a value of type lookups into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lookups : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> lookups

    Input JSON data of type lookups.

    val lookups_of_string : string -> lookups

    Deserialize JSON data of type lookups.

    \ No newline at end of file + var_decl_info

    Input JSON data of type var_decl_info.

    val var_decl_info_of_string : string -> var_decl_info

    Deserialize JSON data of type var_decl_info.

    val write_lookup : Stdlib.Buffer.t -> lookup -> unit

    Output a JSON value of type lookup.

    val string_of_lookup : ?len:int -> lookup -> string

    Serialize a value of type lookup into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lookup : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> lookup

    Input JSON data of type lookup.

    val lookup_of_string : string -> lookup

    Deserialize JSON data of type lookup.

    val write_lookups : Stdlib.Buffer.t -> lookups -> unit

    Output a JSON value of type lookups.

    val string_of_lookups : ?len:int -> lookups -> string

    Serialize a value of type lookups into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_lookups : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> lookups

    Input JSON data of type lookups.

    val lookups_of_string : string -> lookups

    Deserialize JSON data of type lookups.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_proj/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_proj/index.html index dc2ffd36be5..0a8860e1e2f 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_proj/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_proj/index.html @@ -1,5 +1,5 @@ -Clang_ast_proj (infer.ATDGenerated.Clang_ast_proj)

    Module ATDGenerated.Clang_ast_proj

    val get_cast_kind : Clang_ast_t.stmt -> Clang_ast_t.cast_kind option
    val get_decl_context_tuple : +Clang_ast_proj (infer.ATDGenerated.Clang_ast_proj)

    Module ATDGenerated.Clang_ast_proj

    val get_cast_kind : Clang_ast_t.stmt -> Clang_ast_t.cast_kind option
    val get_decl_context_tuple : Clang_ast_t.decl -> (Clang_ast_t.decl list * Clang_ast_t.decl_context_info) option
    val get_decl_kind_string : Clang_ast_t.decl -> string
    val get_decl_tuple : Clang_ast_t.decl -> Clang_ast_t.decl_info
    \ No newline at end of file + Clang_ast_t.decl
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_t/index.html index 530995ab466..881b51b1960 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_t/index.html @@ -1,5 +1,5 @@ -Clang_ast_t (infer.ATDGenerated.Clang_ast_t)

    Module ATDGenerated.Clang_ast_t

    type access_specifier = [
    1. | `None
    2. | `Public
    3. | `Protected
    4. | `Private
    ]
    type atomic_expr_kind = [
    1. | `AO__c11_atomic_init
    2. | `AO__c11_atomic_load
    3. | `AO__c11_atomic_store
    4. | `AO__c11_atomic_exchange
    5. | `AO__c11_atomic_compare_exchange_strong
    6. | `AO__c11_atomic_compare_exchange_weak
    7. | `AO__c11_atomic_fetch_add
    8. | `AO__c11_atomic_fetch_sub
    9. | `AO__c11_atomic_fetch_and
    10. | `AO__c11_atomic_fetch_or
    11. | `AO__c11_atomic_fetch_xor
    12. | `AO__c11_atomic_fetch_nand
    13. | `AO__c11_atomic_fetch_max
    14. | `AO__c11_atomic_fetch_min
    15. | `AO__atomic_load
    16. | `AO__atomic_load_n
    17. | `AO__atomic_store
    18. | `AO__atomic_store_n
    19. | `AO__atomic_exchange
    20. | `AO__atomic_exchange_n
    21. | `AO__atomic_compare_exchange
    22. | `AO__atomic_compare_exchange_n
    23. | `AO__atomic_fetch_add
    24. | `AO__atomic_fetch_sub
    25. | `AO__atomic_fetch_and
    26. | `AO__atomic_fetch_or
    27. | `AO__atomic_fetch_xor
    28. | `AO__atomic_fetch_nand
    29. | `AO__atomic_add_fetch
    30. | `AO__atomic_sub_fetch
    31. | `AO__atomic_and_fetch
    32. | `AO__atomic_or_fetch
    33. | `AO__atomic_xor_fetch
    34. | `AO__atomic_max_fetch
    35. | `AO__atomic_min_fetch
    36. | `AO__atomic_nand_fetch
    37. | `AO__scoped_atomic_load
    38. | `AO__scoped_atomic_load_n
    39. | `AO__scoped_atomic_store
    40. | `AO__scoped_atomic_store_n
    41. | `AO__scoped_atomic_exchange
    42. | `AO__scoped_atomic_exchange_n
    43. | `AO__scoped_atomic_compare_exchange
    44. | `AO__scoped_atomic_compare_exchange_n
    45. | `AO__scoped_atomic_fetch_add
    46. | `AO__scoped_atomic_fetch_sub
    47. | `AO__scoped_atomic_fetch_and
    48. | `AO__scoped_atomic_fetch_or
    49. | `AO__scoped_atomic_fetch_xor
    50. | `AO__scoped_atomic_fetch_nand
    51. | `AO__scoped_atomic_add_fetch
    52. | `AO__scoped_atomic_sub_fetch
    53. | `AO__scoped_atomic_and_fetch
    54. | `AO__scoped_atomic_or_fetch
    55. | `AO__scoped_atomic_xor_fetch
    56. | `AO__scoped_atomic_max_fetch
    57. | `AO__scoped_atomic_min_fetch
    58. | `AO__scoped_atomic_nand_fetch
    59. | `AO__scoped_atomic_fetch_min
    60. | `AO__scoped_atomic_fetch_max
    61. | `AO__opencl_atomic_init
    62. | `AO__opencl_atomic_load
    63. | `AO__opencl_atomic_store
    64. | `AO__opencl_atomic_exchange
    65. | `AO__opencl_atomic_compare_exchange_strong
    66. | `AO__opencl_atomic_compare_exchange_weak
    67. | `AO__opencl_atomic_fetch_add
    68. | `AO__opencl_atomic_fetch_sub
    69. | `AO__opencl_atomic_fetch_and
    70. | `AO__opencl_atomic_fetch_or
    71. | `AO__opencl_atomic_fetch_xor
    72. | `AO__opencl_atomic_fetch_min
    73. | `AO__opencl_atomic_fetch_max
    74. | `AO__atomic_fetch_min
    75. | `AO__atomic_fetch_max
    76. | `AO__hip_atomic_load
    77. | `AO__hip_atomic_store
    78. | `AO__hip_atomic_compare_exchange_weak
    79. | `AO__hip_atomic_compare_exchange_strong
    80. | `AO__hip_atomic_exchange
    81. | `AO__hip_atomic_fetch_add
    82. | `AO__hip_atomic_fetch_sub
    83. | `AO__hip_atomic_fetch_and
    84. | `AO__hip_atomic_fetch_or
    85. | `AO__hip_atomic_fetch_xor
    86. | `AO__hip_atomic_fetch_min
    87. | `AO__hip_atomic_fetch_max
    ]
    type atomic_expr_info = {
    1. aei_kind : atomic_expr_kind;
    }
    type attribute_kind =
    1. | AddressSpaceAttrKind
    2. | AnnotateTypeAttrKind
    3. | ArmInAttrKind
    4. | ArmInOutAttrKind
    5. | ArmMveStrictPolymorphismAttrKind
    6. | ArmOutAttrKind
    7. | ArmPreservesAttrKind
    8. | ArmStreamingAttrKind
    9. | ArmStreamingCompatibleAttrKind
    10. | BTFTypeTagAttrKind
    11. | CmseNSCallAttrKind
    12. | HLSLGroupSharedAddressSpaceAttrKind
    13. | HLSLParamModifierAttrKind
    14. | NoDerefAttrKind
    15. | ObjCGCAttrKind
    16. | ObjCInertUnsafeUnretainedAttrKind
    17. | ObjCKindOfAttrKind
    18. | OpenCLConstantAddressSpaceAttrKind
    19. | OpenCLGenericAddressSpaceAttrKind
    20. | OpenCLGlobalAddressSpaceAttrKind
    21. | OpenCLGlobalDeviceAddressSpaceAttrKind
    22. | OpenCLGlobalHostAddressSpaceAttrKind
    23. | OpenCLLocalAddressSpaceAttrKind
    24. | OpenCLPrivateAddressSpaceAttrKind
    25. | Ptr32AttrKind
    26. | Ptr64AttrKind
    27. | SPtrAttrKind
    28. | TypeNonNullAttrKind
    29. | TypeNullUnspecifiedAttrKind
    30. | TypeNullableAttrKind
    31. | TypeNullableResultAttrKind
    32. | UPtrAttrKind
    33. | WebAssemblyFuncrefAttrKind
    34. | CodeAlignAttrKind
    35. | FallThroughAttrKind
    36. | LikelyAttrKind
    37. | MustTailAttrKind
    38. | OpenCLUnrollHintAttrKind
    39. | UnlikelyAttrKind
    40. | AlwaysInlineAttrKind
    41. | NoInlineAttrKind
    42. | NoMergeAttrKind
    43. | SuppressAttrKind
    44. | AArch64SVEPcsAttrKind
    45. | AArch64VectorPcsAttrKind
    46. | AMDGPUKernelCallAttrKind
    47. | AcquireHandleAttrKind
    48. | AnyX86NoCfCheckAttrKind
    49. | CDeclAttrKind
    50. | FastCallAttrKind
    51. | IntelOclBiccAttrKind
    52. | LifetimeBoundAttrKind
    53. | M68kRTDAttrKind
    54. | MSABIAttrKind
    55. | NSReturnsRetainedAttrKind
    56. | ObjCOwnershipAttrKind
    57. | PascalAttrKind
    58. | PcsAttrKind
    59. | PreserveAllAttrKind
    60. | PreserveMostAttrKind
    61. | RegCallAttrKind
    62. | StdCallAttrKind
    63. | SwiftAsyncCallAttrKind
    64. | SwiftCallAttrKind
    65. | SysVABIAttrKind
    66. | ThisCallAttrKind
    67. | VectorCallAttrKind
    68. | SwiftAsyncContextAttrKind
    69. | SwiftContextAttrKind
    70. | SwiftErrorResultAttrKind
    71. | SwiftIndirectResultAttrKind
    72. | AnnotateAttrKind
    73. | CFConsumedAttrKind
    74. | CarriesDependencyAttrKind
    75. | NSConsumedAttrKind
    76. | NonNullAttrKind
    77. | OSConsumedAttrKind
    78. | PassObjectSizeAttrKind
    79. | ReleaseHandleAttrKind
    80. | UseHandleAttrKind
    81. | HLSLSV_DispatchThreadIDAttrKind
    82. | HLSLSV_GroupIndexAttrKind
    83. | AMDGPUFlatWorkGroupSizeAttrKind
    84. | AMDGPUNumSGPRAttrKind
    85. | AMDGPUNumVGPRAttrKind
    86. | AMDGPUWavesPerEUAttrKind
    87. | ARMInterruptAttrKind
    88. | AVRInterruptAttrKind
    89. | AVRSignalAttrKind
    90. | AcquireCapabilityAttrKind
    91. | AcquiredAfterAttrKind
    92. | AcquiredBeforeAttrKind
    93. | AlignMac68kAttrKind
    94. | AlignNaturalAttrKind
    95. | AlignedAttrKind
    96. | AllocAlignAttrKind
    97. | AllocSizeAttrKind
    98. | AlwaysDestroyAttrKind
    99. | AnalyzerNoReturnAttrKind
    100. | AnyX86InterruptAttrKind
    101. | AnyX86NoCallerSavedRegistersAttrKind
    102. | ArcWeakrefUnavailableAttrKind
    103. | ArgumentWithTypeTagAttrKind
    104. | ArmBuiltinAliasAttrKind
    105. | ArmLocallyStreamingAttrKind
    106. | ArmNewAttrKind
    107. | ArtificialAttrKind
    108. | AsmLabelAttrKind
    109. | AssertCapabilityAttrKind
    110. | AssertExclusiveLockAttrKind
    111. | AssertSharedLockAttrKind
    112. | AssumeAlignedAttrKind
    113. | AssumptionAttrKind
    114. | AvailabilityAttrKind
    115. | AvailableOnlyInDefaultEvalMethodAttrKind
    116. | BPFPreserveAccessIndexAttrKind
    117. | BPFPreserveStaticOffsetAttrKind
    118. | BTFDeclTagAttrKind
    119. | BlocksAttrKind
    120. | BuiltinAttrKind
    121. | C11NoReturnAttrKind
    122. | CFAuditedTransferAttrKind
    123. | CFGuardAttrKind
    124. | CFICanonicalJumpTableAttrKind
    125. | CFReturnsNotRetainedAttrKind
    126. | CFReturnsRetainedAttrKind
    127. | CFUnknownTransferAttrKind
    128. | CPUDispatchAttrKind
    129. | CPUSpecificAttrKind
    130. | CUDAConstantAttrKind
    131. | CUDADeviceAttrKind
    132. | CUDADeviceBuiltinSurfaceTypeAttrKind
    133. | CUDADeviceBuiltinTextureTypeAttrKind
    134. | CUDAGlobalAttrKind
    135. | CUDAHostAttrKind
    136. | CUDAInvalidTargetAttrKind
    137. | CUDALaunchBoundsAttrKind
    138. | CUDASharedAttrKind
    139. | CXX11NoReturnAttrKind
    140. | CallableWhenAttrKind
    141. | CallbackAttrKind
    142. | CapabilityAttrKind
    143. | CapturedRecordAttrKind
    144. | CleanupAttrKind
    145. | CmseNSEntryAttrKind
    146. | CodeModelAttrKind
    147. | CodeSegAttrKind
    148. | ColdAttrKind
    149. | CommonAttrKind
    150. | ConstAttrKind
    151. | ConstInitAttrKind
    152. | ConstructorAttrKind
    153. | ConsumableAttrKind
    154. | ConsumableAutoCastAttrKind
    155. | ConsumableSetOnReadAttrKind
    156. | ConvergentAttrKind
    157. | CoroDisableLifetimeBoundAttrKind
    158. | CoroLifetimeBoundAttrKind
    159. | CoroOnlyDestroyWhenCompleteAttrKind
    160. | CoroReturnTypeAttrKind
    161. | CoroWrapperAttrKind
    162. | CountedByAttrKind
    163. | DLLExportAttrKind
    164. | DLLExportStaticLocalAttrKind
    165. | DLLImportAttrKind
    166. | DLLImportStaticLocalAttrKind
    167. | DeprecatedAttrKind
    168. | DestructorAttrKind
    169. | DiagnoseAsBuiltinAttrKind
    170. | DiagnoseIfAttrKind
    171. | DisableSanitizerInstrumentationAttrKind
    172. | DisableTailCallsAttrKind
    173. | EmptyBasesAttrKind
    174. | EnableIfAttrKind
    175. | EnforceTCBAttrKind
    176. | EnforceTCBLeafAttrKind
    177. | EnumExtensibilityAttrKind
    178. | ErrorAttrKind
    179. | ExcludeFromExplicitInstantiationAttrKind
    180. | ExclusiveTrylockFunctionAttrKind
    181. | ExternalSourceSymbolAttrKind
    182. | FinalAttrKind
    183. | FlagEnumAttrKind
    184. | FlattenAttrKind
    185. | FormatAttrKind
    186. | FormatArgAttrKind
    187. | FunctionReturnThunksAttrKind
    188. | GNUInlineAttrKind
    189. | GuardedByAttrKind
    190. | GuardedVarAttrKind
    191. | HIPManagedAttrKind
    192. | HLSLNumThreadsAttrKind
    193. | HLSLResourceAttrKind
    194. | HLSLResourceBindingAttrKind
    195. | HLSLShaderAttrKind
    196. | HotAttrKind
    197. | IBActionAttrKind
    198. | IBOutletAttrKind
    199. | IBOutletCollectionAttrKind
    200. | InitPriorityAttrKind
    201. | InternalLinkageAttrKind
    202. | LTOVisibilityPublicAttrKind
    203. | LayoutVersionAttrKind
    204. | LeafAttrKind
    205. | LockReturnedAttrKind
    206. | LocksExcludedAttrKind
    207. | M68kInterruptAttrKind
    208. | MIGServerRoutineAttrKind
    209. | MSAllocatorAttrKind
    210. | MSConstexprAttrKind
    211. | MSInheritanceAttrKind
    212. | MSNoVTableAttrKind
    213. | MSP430InterruptAttrKind
    214. | MSStructAttrKind
    215. | MSVtorDispAttrKind
    216. | MaxFieldAlignmentAttrKind
    217. | MayAliasAttrKind
    218. | MaybeUndefAttrKind
    219. | MicroMipsAttrKind
    220. | MinSizeAttrKind
    221. | MinVectorWidthAttrKind
    222. | Mips16AttrKind
    223. | MipsInterruptAttrKind
    224. | MipsLongCallAttrKind
    225. | MipsShortCallAttrKind
    226. | NSConsumesSelfAttrKind
    227. | NSErrorDomainAttrKind
    228. | NSReturnsAutoreleasedAttrKind
    229. | NSReturnsNotRetainedAttrKind
    230. | NVPTXKernelAttrKind
    231. | NakedAttrKind
    232. | NoAliasAttrKind
    233. | NoCommonAttrKind
    234. | NoDebugAttrKind
    235. | NoDestroyAttrKind
    236. | NoDuplicateAttrKind
    237. | NoInstrumentFunctionAttrKind
    238. | NoMicroMipsAttrKind
    239. | NoMips16AttrKind
    240. | NoProfileFunctionAttrKind
    241. | NoRandomizeLayoutAttrKind
    242. | NoReturnAttrKind
    243. | NoSanitizeAttrKind
    244. | NoSpeculativeLoadHardeningAttrKind
    245. | NoSplitStackAttrKind
    246. | NoStackProtectorAttrKind
    247. | NoThreadSafetyAnalysisAttrKind
    248. | NoThrowAttrKind
    249. | NoUniqueAddressAttrKind
    250. | NoUwtableAttrKind
    251. | NotTailCalledAttrKind
    252. | OMPAllocateDeclAttrKind
    253. | OMPCaptureNoInitAttrKind
    254. | OMPDeclareTargetDeclAttrKind
    255. | OMPDeclareVariantAttrKind
    256. | OMPThreadPrivateDeclAttrKind
    257. | OSConsumesThisAttrKind
    258. | OSReturnsNotRetainedAttrKind
    259. | OSReturnsRetainedAttrKind
    260. | OSReturnsRetainedOnNonZeroAttrKind
    261. | OSReturnsRetainedOnZeroAttrKind
    262. | ObjCBridgeAttrKind
    263. | ObjCBridgeMutableAttrKind
    264. | ObjCBridgeRelatedAttrKind
    265. | ObjCExceptionAttrKind
    266. | ObjCExplicitProtocolImplAttrKind
    267. | ObjCExternallyRetainedAttrKind
    268. | ObjCIndependentClassAttrKind
    269. | ObjCMethodFamilyAttrKind
    270. | ObjCNSObjectAttrKind
    271. | ObjCPreciseLifetimeAttrKind
    272. | ObjCRequiresPropertyDefsAttrKind
    273. | ObjCRequiresSuperAttrKind
    274. | ObjCReturnsInnerPointerAttrKind
    275. | ObjCRootClassAttrKind
    276. | ObjCSubclassingRestrictedAttrKind
    277. | OpenCLIntelReqdSubGroupSizeAttrKind
    278. | OpenCLKernelAttrKind
    279. | OptimizeNoneAttrKind
    280. | OverrideAttrKind
    281. | OwnerAttrKind
    282. | OwnershipAttrKind
    283. | PackedAttrKind
    284. | ParamTypestateAttrKind
    285. | PatchableFunctionEntryAttrKind
    286. | PointerAttrKind
    287. | PragmaClangBSSSectionAttrKind
    288. | PragmaClangDataSectionAttrKind
    289. | PragmaClangRelroSectionAttrKind
    290. | PragmaClangRodataSectionAttrKind
    291. | PragmaClangTextSectionAttrKind
    292. | PreferredNameAttrKind
    293. | PreferredTypeAttrKind
    294. | PtGuardedByAttrKind
    295. | PtGuardedVarAttrKind
    296. | PureAttrKind
    297. | RISCVInterruptAttrKind
    298. | RandomizeLayoutAttrKind
    299. | ReadOnlyPlacementAttrKind
    300. | ReinitializesAttrKind
    301. | ReleaseCapabilityAttrKind
    302. | ReqdWorkGroupSizeAttrKind
    303. | RequiresCapabilityAttrKind
    304. | RestrictAttrKind
    305. | RetainAttrKind
    306. | ReturnTypestateAttrKind
    307. | ReturnsNonNullAttrKind
    308. | ReturnsTwiceAttrKind
    309. | SYCLKernelAttrKind
    310. | SYCLSpecialClassAttrKind
    311. | ScopedLockableAttrKind
    312. | SectionAttrKind
    313. | SelectAnyAttrKind
    314. | SentinelAttrKind
    315. | SetTypestateAttrKind
    316. | SharedTrylockFunctionAttrKind
    317. | SpeculativeLoadHardeningAttrKind
    318. | StandaloneDebugAttrKind
    319. | StrictFPAttrKind
    320. | StrictGuardStackCheckAttrKind
    321. | SwiftAsyncAttrKind
    322. | SwiftAsyncErrorAttrKind
    323. | SwiftAsyncNameAttrKind
    324. | SwiftAttrAttrKind
    325. | SwiftBridgeAttrKind
    326. | SwiftBridgedTypedefAttrKind
    327. | SwiftErrorAttrKind
    328. | SwiftImportAsNonGenericAttrKind
    329. | SwiftImportPropertyAsAccessorsAttrKind
    330. | SwiftNameAttrKind
    331. | SwiftNewTypeAttrKind
    332. | SwiftPrivateAttrKind
    333. | TLSModelAttrKind
    334. | TargetAttrKind
    335. | TargetClonesAttrKind
    336. | TargetVersionAttrKind
    337. | TestTypestateAttrKind
    338. | TransparentUnionAttrKind
    339. | TrivialABIAttrKind
    340. | TryAcquireCapabilityAttrKind
    341. | TypeTagForDatatypeAttrKind
    342. | TypeVisibilityAttrKind
    343. | UnavailableAttrKind
    344. | UninitializedAttrKind
    345. | UnsafeBufferUsageAttrKind
    346. | UnusedAttrKind
    347. | UsedAttrKind
    348. | UsingIfExistsAttrKind
    349. | UuidAttrKind
    350. | VecReturnAttrKind
    351. | VecTypeHintAttrKind
    352. | VisibilityAttrKind
    353. | WarnUnusedAttrKind
    354. | WarnUnusedResultAttrKind
    355. | WeakAttrKind
    356. | WeakImportAttrKind
    357. | WeakRefAttrKind
    358. | WebAssemblyExportNameAttrKind
    359. | WebAssemblyImportModuleAttrKind
    360. | WebAssemblyImportNameAttrKind
    361. | WorkGroupSizeHintAttrKind
    362. | X86ForceAlignArgPointerAttrKind
    363. | XRayInstrumentAttrKind
    364. | XRayLogArgsAttrKind
    365. | ZeroCallUsedRegsAttrKind
    366. | AbiTagAttrKind
    367. | AliasAttrKind
    368. | AlignValueAttrKind
    369. | BuiltinAliasAttrKind
    370. | CalledOnceAttrKind
    371. | IFuncAttrKind
    372. | InitSegAttrKind
    373. | LoaderUninitializedAttrKind
    374. | LoopHintAttrKind
    375. | ModeAttrKind
    376. | NoBuiltinAttrKind
    377. | NoEscapeAttrKind
    378. | OMPCaptureKindAttrKind
    379. | OMPDeclareSimdDeclAttrKind
    380. | OMPReferencedVarAttrKind
    381. | ObjCBoxableAttrKind
    382. | ObjCClassStubAttrKind
    383. | ObjCDesignatedInitializerAttrKind
    384. | ObjCDirectAttrKind
    385. | ObjCDirectMembersAttrKind
    386. | ObjCNonLazyClassAttrKind
    387. | ObjCNonRuntimeProtocolAttrKind
    388. | ObjCRuntimeNameAttrKind
    389. | ObjCRuntimeVisibleAttrKind
    390. | OpenCLAccessAttrKind
    391. | OverloadableAttrKind
    392. | RenderScriptKernelAttrKind
    393. | SwiftObjCMembersAttrKind
    394. | SwiftVersionedAdditionAttrKind
    395. | SwiftVersionedRemovalAttrKind
    396. | ThreadAttrKind
    type binary_operator_kind = [
    1. | `PtrMemD
    2. | `PtrMemI
    3. | `Mul
    4. | `Div
    5. | `Rem
    6. | `Add
    7. | `Sub
    8. | `Shl
    9. | `Shr
    10. | `Cmp
    11. | `LT
    12. | `GT
    13. | `LE
    14. | `GE
    15. | `EQ
    16. | `NE
    17. | `And
    18. | `Xor
    19. | `Or
    20. | `LAnd
    21. | `LOr
    22. | `Assign
    23. | `MulAssign
    24. | `DivAssign
    25. | `RemAssign
    26. | `AddAssign
    27. | `SubAssign
    28. | `ShlAssign
    29. | `ShrAssign
    30. | `AndAssign
    31. | `XorAssign
    32. | `OrAssign
    33. | `Comma
    ]
    type binary_operator_info = {
    1. boi_kind : binary_operator_kind;
    }
    type builtin_type_kind = [
    1. | `Void
    2. | `Bool
    3. | `Char_U
    4. | `UChar
    5. | `WChar_U
    6. | `Char8
    7. | `Char16
    8. | `Char32
    9. | `UShort
    10. | `UInt
    11. | `ULong
    12. | `ULongLong
    13. | `UInt128
    14. | `Char_S
    15. | `SChar
    16. | `WChar_S
    17. | `Short
    18. | `Int
    19. | `Long
    20. | `LongLong
    21. | `Int128
    22. | `ShortAccum
    23. | `Accum
    24. | `LongAccum
    25. | `UShortAccum
    26. | `UAccum
    27. | `ULongAccum
    28. | `ShortFract
    29. | `Fract
    30. | `LongFract
    31. | `UShortFract
    32. | `UFract
    33. | `ULongFract
    34. | `SatShortAccum
    35. | `SatAccum
    36. | `SatLongAccum
    37. | `SatUShortAccum
    38. | `SatUAccum
    39. | `SatULongAccum
    40. | `SatShortFract
    41. | `SatFract
    42. | `SatLongFract
    43. | `SatUShortFract
    44. | `SatUFract
    45. | `SatULongFract
    46. | `Half
    47. | `Float
    48. | `Double
    49. | `LongDouble
    50. | `Float16
    51. | `BFloat16
    52. | `Float128
    53. | `Ibm128
    54. | `NullPtr
    55. | `ObjCId
    56. | `ObjCClass
    57. | `ObjCSel
    58. | `OCLSampler
    59. | `OCLEvent
    60. | `OCLClkEvent
    61. | `OCLQueue
    62. | `OCLReserveID
    63. | `Dependent
    64. | `Overload
    65. | `BoundMember
    66. | `PseudoObject
    67. | `UnknownAny
    68. | `BuiltinFn
    69. | `ARCUnbridgedCast
    70. | `IncompleteMatrixIdx
    71. | `OMPArraySection
    72. | `OMPArrayShaping
    73. | `OMPIterator
    74. | `SveInt8
    75. | `SveInt16
    76. | `SveInt32
    77. | `SveInt64
    78. | `SveUint8
    79. | `SveUint16
    80. | `SveUint32
    81. | `SveUint64
    82. | `SveFloat16
    83. | `SveFloat32
    84. | `SveFloat64
    85. | `SveBFloat16
    86. | `SveInt8x2
    87. | `SveInt16x2
    88. | `SveInt32x2
    89. | `SveInt64x2
    90. | `SveUint8x2
    91. | `SveUint16x2
    92. | `SveUint32x2
    93. | `SveUint64x2
    94. | `SveFloat16x2
    95. | `SveFloat32x2
    96. | `SveFloat64x2
    97. | `SveBFloat16x2
    98. | `SveInt8x3
    99. | `SveInt16x3
    100. | `SveInt32x3
    101. | `SveInt64x3
    102. | `SveUint8x3
    103. | `SveUint16x3
    104. | `SveUint32x3
    105. | `SveUint64x3
    106. | `SveFloat16x3
    107. | `SveFloat32x3
    108. | `SveFloat64x3
    109. | `SveBFloat16x3
    110. | `SveInt8x4
    111. | `SveInt16x4
    112. | `SveInt32x4
    113. | `SveInt64x4
    114. | `SveUint8x4
    115. | `SveUint16x4
    116. | `SveUint32x4
    117. | `SveUint64x4
    118. | `SveFloat16x4
    119. | `SveFloat32x4
    120. | `SveFloat64x4
    121. | `SveBFloat16x4
    122. | `SveBool
    123. | `SveBoolx2
    124. | `SveBoolx4
    125. | `SveCount
    ]
    type cast_kind = [
    1. | `Dependent
    2. | `BitCast
    3. | `LValueBitCast
    4. | `LValueToRValueBitCast
    5. | `LValueToRValue
    6. | `NoOp
    7. | `BaseToDerived
    8. | `DerivedToBase
    9. | `UncheckedDerivedToBase
    10. | `Dynamic
    11. | `ToUnion
    12. | `ArrayToPointerDecay
    13. | `FunctionToPointerDecay
    14. | `NullToPointer
    15. | `NullToMemberPointer
    16. | `BaseToDerivedMemberPointer
    17. | `DerivedToBaseMemberPointer
    18. | `MemberPointerToBoolean
    19. | `ReinterpretMemberPointer
    20. | `UserDefinedConversion
    21. | `ConstructorConversion
    22. | `IntegralToPointer
    23. | `PointerToIntegral
    24. | `PointerToBoolean
    25. | `ToVoid
    26. | `MatrixCast
    27. | `VectorSplat
    28. | `IntegralCast
    29. | `IntegralToBoolean
    30. | `IntegralToFloating
    31. | `FloatingToFixedPoint
    32. | `FixedPointToFloating
    33. | `FixedPointCast
    34. | `FixedPointToIntegral
    35. | `IntegralToFixedPoint
    36. | `FixedPointToBoolean
    37. | `FloatingToIntegral
    38. | `FloatingToBoolean
    39. | `BooleanToSignedIntegral
    40. | `FloatingCast
    41. | `CPointerToObjCPointerCast
    42. | `BlockPointerToObjCPointerCast
    43. | `AnyPointerToBlockPointerCast
    44. | `ObjCObjectLValueCast
    45. | `FloatingRealToComplex
    46. | `FloatingComplexToReal
    47. | `FloatingComplexToBoolean
    48. | `FloatingComplexCast
    49. | `FloatingComplexToIntegralComplex
    50. | `IntegralRealToComplex
    51. | `IntegralComplexToReal
    52. | `IntegralComplexToBoolean
    53. | `IntegralComplexCast
    54. | `IntegralComplexToFloatingComplex
    55. | `ARCProduceObject
    56. | `ARCConsumeObject
    57. | `ARCReclaimReturnedObject
    58. | `ARCExtendBlockObject
    59. | `AtomicToNonAtomic
    60. | `NonAtomicToAtomic
    61. | `CopyAndAutoreleaseBlockObject
    62. | `BuiltinFnToFnPtr
    63. | `ZeroToOCLOpaqueType
    64. | `AddressSpaceConversion
    65. | `IntToOCLSampler
    ]
    type cxx_base_specifier = {
    1. xbs_name : string;
    2. xbs_virtual : bool;
    }
    type cast_expr_info = {
    1. cei_cast_kind : cast_kind;
    2. cei_base_path : cxx_base_specifier list;
    }
    type cxx_noexcept_expr_info = {
    1. xnee_value : bool;
    }
    type decl_context_info = {
    1. dci_has_external_lexical_storage : bool;
    2. dci_has_external_visible_storage : bool;
    }
    type decl_kind = [
    1. | `TranslationUnit
    2. | `RequiresExprBody
    3. | `LinkageSpec
    4. | `ExternCContext
    5. | `Export
    6. | `Captured
    7. | `Block
    8. | `TopLevelStmt
    9. | `StaticAssert
    10. | `PragmaDetectMismatch
    11. | `PragmaComment
    12. | `ObjCPropertyImpl
    13. | `OMPThreadPrivate
    14. | `OMPRequires
    15. | `OMPAllocate
    16. | `Named
    17. | `ObjCMethod
    18. | `ObjCContainer
    19. | `ObjCProtocol
    20. | `ObjCInterface
    21. | `ObjCImpl
    22. | `ObjCImplementation
    23. | `ObjCCategoryImpl
    24. | `ObjCCategory
    25. | `Namespace
    26. | `HLSLBuffer
    27. | `Value
    28. | `OMPDeclareReduction
    29. | `OMPDeclareMapper
    30. | `UnresolvedUsingValue
    31. | `UnnamedGlobalConstant
    32. | `TemplateParamObject
    33. | `MSGuid
    34. | `IndirectField
    35. | `EnumConstant
    36. | `Declarator
    37. | `Function
    38. | `CXXMethod
    39. | `CXXDestructor
    40. | `CXXConversion
    41. | `CXXConstructor
    42. | `CXXDeductionGuide
    43. | `Var
    44. | `VarTemplateSpecialization
    45. | `VarTemplatePartialSpecialization
    46. | `ParmVar
    47. | `OMPCapturedExpr
    48. | `ImplicitParam
    49. | `Decomposition
    50. | `NonTypeTemplateParm
    51. | `MSProperty
    52. | `Field
    53. | `ObjCIvar
    54. | `ObjCAtDefsField
    55. | `Binding
    56. | `UsingShadow
    57. | `ConstructorUsingShadow
    58. | `UsingPack
    59. | `UsingDirective
    60. | `UnresolvedUsingIfExists
    61. | `Type
    62. | `Tag
    63. | `Record
    64. | `CXXRecord
    65. | `ClassTemplateSpecialization
    66. | `ClassTemplatePartialSpecialization
    67. | `Enum
    68. | `UnresolvedUsingTypename
    69. | `TypedefName
    70. | `Typedef
    71. | `TypeAlias
    72. | `ObjCTypeParam
    73. | `TemplateTypeParm
    74. | `Template
    75. | `TemplateTemplateParm
    76. | `RedeclarableTemplate
    77. | `VarTemplate
    78. | `TypeAliasTemplate
    79. | `FunctionTemplate
    80. | `ClassTemplate
    81. | `Concept
    82. | `BuiltinTemplate
    83. | `ObjCProperty
    84. | `ObjCCompatibleAlias
    85. | `NamespaceAlias
    86. | `Label
    87. | `BaseUsing
    88. | `UsingEnum
    89. | `Using
    90. | `LifetimeExtendedTemporary
    91. | `Import
    92. | `ImplicitConceptSpecialization
    93. | `FriendTemplate
    94. | `Friend
    95. | `FileScopeAsm
    96. | `Empty
    97. | `AccessSpec
    ]
    type declaration_name_kind = [
    1. | `Identifier
    2. | `ObjCZeroArgSelector
    3. | `ObjCOneArgSelector
    4. | `ObjCMultiArgSelector
    5. | `CXXConstructorName
    6. | `CXXDestructorName
    7. | `CXXConversionFunctionName
    8. | `CXXOperatorName
    9. | `CXXLiteralOperatorName
    10. | `CXXUsingDirective
    11. | `CXXDeductionGuideName
    ]
    type declaration_name = {
    1. dn_kind : declaration_name_kind;
    2. dn_name : string;
    }
    type enum_decl_scope = [
    1. | `Class
    2. | `Struct
    ]
    type enum_decl_info = {
    1. edi_scope : enum_decl_scope option;
    2. edi_is_module_private : bool;
    }
    type input_kind = [
    1. | `IK_None
    2. | `IK_Asm
    3. | `IK_C
    4. | `IK_CXX
    5. | `IK_ObjC
    6. | `IK_ObjCXX
    7. | `IK_OpenCL
    8. | `IK_CUDA
    9. | `IK_HIP
    10. | `IK_RenderScript
    11. | `IK_LLVM_IR
    12. | `IK_HLSL
    ]
    type integer_literal_info = {
    1. ili_is_signed : bool;
    2. ili_bitwidth : int;
    3. ili_value : string;
    }
    type integer_type_widths = {
    1. itw_char_type : int;
    2. itw_short_type : int;
    3. itw_int_type : int;
    4. itw_long_type : int;
    5. itw_longlong_type : int;
    }
    type lambda_capture_kind = [
    1. | `LCK_This
    2. | `LCK_ByCopy
    3. | `LCK_ByRef
    4. | `LCK_VLAType
    5. | `LCK_StarThis
    ]
    type named_decl_info = {
    1. ni_name : string;
    2. ni_qual_name : string list;
    }
    type obj_c_access_control = [
    1. | `None
    2. | `Private
    3. | `Protected
    4. | `Public
    5. | `Package
    ]
    type obj_c_availability_check_expr_info = {
    1. oacei_version : string option;
    }
    type obj_c_bridge_cast_kind = [
    1. | `OBC_BridgeRetained
    2. | `OBC_Bridge
    3. | `OBC_BridgeTransfer
    ]
    type obj_c_bridged_cast_expr_info = {
    1. obcei_cast_kind : obj_c_bridge_cast_kind;
    }
    type obj_c_ivar_decl_info = {
    1. ovdi_is_synthesize : bool;
    2. ovdi_access_control : obj_c_access_control;
    }
    type obj_c_property_control = [
    1. | `None
    2. | `Required
    3. | `Optional
    ]
    type obj_c_subscript_kind = [
    1. | `ArraySubscript
    2. | `DictionarySubscript
    ]
    type objc_lifetime_attr = [
    1. | `OCL_None
    2. | `OCL_ExplicitNone
    3. | `OCL_Strong
    4. | `OCL_Weak
    5. | `OCL_Autoreleasing
    ]
    type attr_type_info = {
    1. ati_attr_kind : attribute_kind;
    2. ati_lifetime : objc_lifetime_attr;
    }
    type object_kind = [
    1. | `Ordinary
    2. | `BitField
    3. | `ObjCProperty
    4. | `ObjCSubscript
    5. | `VectorComponent
    ]
    type offset_of_expr_info = {
    1. ooe_literal : integer_literal_info option;
    }
    type pointer = int
    type addr_label_expr_info = {
    1. alei_label : string;
    2. alei_pointer : pointer;
    }
    type cxx_new_expr_info = {
    1. xnei_is_array : bool;
    2. xnei_array_size_expr : pointer option;
    3. xnei_initializer_expr : pointer option;
    4. xnei_placement_args : pointer list;
    }
    type cxx_temporary = pointer
    type cxx_bind_temporary_expr_info = {
    1. xbtei_cxx_temporary : cxx_temporary;
    }
    type goto_stmt_info = {
    1. gsi_label : string;
    2. gsi_pointer : pointer;
    }
    type obj_c_array_literal_expr_info = {
    1. oalei_array_method : pointer option;
    }
    type obj_c_dictionary_literal_expr_info = {
    1. odlei_dict_method : pointer option;
    }
    type predefined_expr_type = [
    1. | `Func
    2. | `Function
    3. | `LFunction
    4. | `FuncDName
    5. | `FuncSig
    6. | `LFuncSig
    7. | `PrettyFunction
    8. | `PrettyFunctionNoVirtual
    ]
    type property_attribute = [
    1. | `Readonly
    2. | `Assign
    3. | `Readwrite
    4. | `Retain
    5. | `Copy
    6. | `Nonatomic
    7. | `Atomic
    8. | `Weak
    9. | `Strong
    10. | `Unsafe_unretained
    11. | `ExplicitGetter
    12. | `ExplicitSetter
    ]
    type property_implementation = [
    1. | `Synthesize
    2. | `Dynamic
    ]
    type record_decl_info = {
    1. rdi_definition_ptr : pointer;
    2. rdi_is_module_private : bool;
    3. rdi_is_complete_definition : bool;
    4. rdi_is_dependent_type : bool;
    }
    type selector = string
    type obj_c_method_ref_info = {
    1. mri_getter : selector option;
    2. mri_setter : selector option;
    }
    type obj_c_subscript_ref_expr_info = {
    1. osrei_kind : obj_c_subscript_kind;
    2. osrei_getter : selector option;
    3. osrei_setter : selector option;
    }
    type objc_boxed_expr_info = {
    1. obei_boxing_method : selector option;
    }
    type sentinel_attr_info = {
    1. sai_sentinel : int;
    2. sai_null_pos : int;
    }
    type source_file = string
    type source_location = {
    1. mutable sl_file : source_file option;
    2. mutable sl_line : int option;
    3. mutable sl_column : int option;
    4. sl_is_macro : bool;
    5. mutable sl_macro_file : source_file option;
    6. mutable sl_macro_line : int option;
    }
    type source_range = source_location * source_location
    type attribute_info = {
    1. ai_pointer : pointer;
    2. ai_source_range : source_range;
    }
    type attr_tuple = attribute_info
    type comment_info = {
    1. ci_parent_pointer : pointer;
    2. ci_source_range : source_range;
    }
    type specifier_kind = [
    1. | `Identifier
    2. | `Namespace
    3. | `NamespaceAlias
    4. | `TypeSpec
    5. | `TypeSpecWithTemplate
    6. | `Global
    7. | `Super
    ]
    type stmt_info = {
    1. si_pointer : pointer;
    2. si_source_range : source_range;
    }
    type tag_kind = [
    1. | `TTK_Struct
    2. | `TTK_Interface
    3. | `TTK_Union
    4. | `TTK_Class
    5. | `TTK_Enum
    ]
    type qual_type = {
    1. qt_type_ptr : type_ptr;
    2. qt_is_const : bool;
    3. qt_is_restrict : bool;
    4. qt_is_volatile : bool;
    }
    type array_type_info = {
    1. arti_element_type : qual_type;
    2. arti_stride : int option;
    }
    type compound_assign_operator_info = {
    1. caoi_lhs_type : qual_type;
    2. caoi_result_type : qual_type;
    }
    type cxx_delete_expr_info = {
    1. xdei_is_array : bool;
    2. xdei_destroyed_type : qual_type;
    }
    type decl_ref = {
    1. dr_kind : decl_kind;
    2. dr_decl_pointer : pointer;
    3. dr_name : named_decl_info option;
    4. dr_is_hidden : bool;
    5. dr_qual_type : qual_type option;
    }
    type cxx_construct_expr_info = {
    1. xcei_decl_ref : decl_ref;
    2. xcei_is_elidable : bool;
    3. xcei_requires_zero_initialization : bool;
    4. xcei_is_copy_constructor : bool;
    }
    type cxx_ctor_initializer_subject = [
    1. | `Member of decl_ref
    2. | `Delegating of type_ptr
    3. | `BaseClass of type_ptr * bool
    ]
    type decl_ref_expr_info = {
    1. drti_decl_ref : decl_ref option;
    2. drti_found_decl_ref : decl_ref option;
    }
    type expr_with_cleanups_info = {
    1. ewci_decl_refs : decl_ref list;
    }
    type function_type_info = {
    1. fti_return_type : qual_type;
    }
    type materialize_temporary_expr_info = {
    1. mtei_decl_ref : decl_ref option;
    }
    type member_expr_info = {
    1. mei_is_arrow : bool;
    2. mei_performs_virtual_dispatch : bool;
    3. mei_name : named_decl_info;
    4. mei_decl_ref : decl_ref;
    }
    type namespace_decl_info = {
    1. ndi_is_inline : bool;
    2. ndi_original_namespace : decl_ref option;
    }
    type nested_name_specifier_loc = {
    1. nnsl_kind : specifier_kind;
    2. nnsl_ref : decl_ref option;
    }
    type namespace_alias_decl_info = {
    1. nadi_namespace_loc : source_location;
    2. nadi_target_name_loc : source_location;
    3. nadi_nested_name_specifier_locs : nested_name_specifier_loc list;
    4. nadi_namespace : decl_ref;
    }
    type obj_c_category_decl_info = {
    1. odi_class_interface : decl_ref option;
    2. odi_implementation : decl_ref option;
    3. odi_protocols : decl_ref list;
    }
    type obj_c_category_impl_decl_info = {
    1. ocidi_class_interface : decl_ref option;
    2. ocidi_category_decl : decl_ref option;
    }
    type obj_c_compatible_alias_decl_info = {
    1. ocadi_class_interface : decl_ref option;
    }
    type obj_c_interface_decl_info = {
    1. otdi_super : decl_ref option;
    2. otdi_implementation : decl_ref option;
    3. otdi_protocols : decl_ref list;
    4. otdi_known_categories : decl_ref list;
    }
    type obj_c_ivar_ref_expr_info = {
    1. ovrei_decl_ref : decl_ref;
    2. ovrei_pointer : pointer;
    3. ovrei_is_free_ivar : bool;
    }
    type obj_c_property_decl_info = {
    1. opdi_qual_type : qual_type;
    2. opdi_getter_method : decl_ref option;
    3. opdi_setter_method : decl_ref option;
    4. opdi_ivar_decl : decl_ref option;
    5. opdi_property_control : obj_c_property_control;
    6. opdi_property_attributes : property_attribute list;
    }
    type obj_c_property_impl_decl_info = {
    1. opidi_implementation : property_implementation;
    2. opidi_property_decl : decl_ref option;
    3. opidi_ivar_decl : decl_ref option;
    }
    type obj_c_protocol_decl_info = {
    1. opcdi_protocols : decl_ref list;
    }
    type objc_encode_expr_info = {
    1. oeei_qual_type : qual_type;
    2. oeei_raw : string;
    }
    type objc_object_type_info = {
    1. ooti_base_type : type_ptr;
    2. ooti_protocol_decls_ptr : pointer list;
    3. ooti_type_args : qual_type list;
    }
    type overload_expr_info = {
    1. oei_decls : decl_ref list;
    2. oei_name : declaration_name;
    }
    type params_type_info = {
    1. pti_params_type : qual_type list;
    }
    type property_ref_kind = [
    1. | `MethodRef of obj_c_method_ref_info
    2. | `PropertyRef of decl_ref
    ]
    type obj_c_property_ref_expr_info = {
    1. oprei_kind : property_ref_kind;
    2. oprei_is_super_receiver : bool;
    3. oprei_is_messaging_getter : bool;
    4. oprei_is_messaging_setter : bool;
    }
    type receiver_kind = [
    1. | `Instance
    2. | `Class of qual_type
    3. | `SuperInstance
    4. | `SuperClass
    ]
    type obj_c_message_expr_info = {
    1. omei_selector : string;
    2. omei_is_definition_found : bool;
    3. omei_decl_pointer : pointer option;
    4. omei_receiver_kind : receiver_kind;
    }
    type type_info = {
    1. ti_pointer : pointer;
    2. ti_desugared_type : type_ptr option;
    }
    type type_trait_info = {
    1. xtti_value : bool;
    }
    type typedef_decl_info = {
    1. tdi_is_module_private : bool;
    }
    type typedef_type_info = {
    1. tti_child_type : qual_type;
    2. tti_decl_ptr : pointer;
    }
    type c_type =
    1. | NoneType of type_info
    2. | AdjustedType of type_info * qual_type
    3. | DecayedType of type_info * qual_type
    4. | ConstantArrayType of type_info * array_type_info * int
    5. | DependentSizedArrayType of type_info * array_type_info
    6. | IncompleteArrayType of type_info * array_type_info
    7. | VariableArrayType of type_info * array_type_info * pointer
    8. | AtomicType of type_info * qual_type
    9. | AttributedType of type_info * attr_type_info
    10. | BTFTagAttributedType of type_info
    11. | BitIntType of type_info
    12. | BlockPointerType of type_info * qual_type
    13. | BuiltinType of type_info * builtin_type_kind
    14. | ComplexType of type_info
    15. | DecltypeType of type_info * qual_type
    16. | AutoType of type_info
    17. | DeducedTemplateSpecializationType of type_info
    18. | DependentAddressSpaceType of type_info
    19. | DependentBitIntType of type_info
    20. | DependentNameType of type_info
    21. | DependentSizedExtVectorType of type_info
    22. | DependentTemplateSpecializationType of type_info
    23. | DependentVectorType of type_info
    24. | ElaboratedType of type_info
    25. | FunctionNoProtoType of type_info * function_type_info
    26. | FunctionProtoType of type_info * function_type_info * params_type_info
    27. | InjectedClassNameType of type_info
    28. | MacroQualifiedType of type_info
    29. | ConstantMatrixType of type_info
    30. | DependentSizedMatrixType of type_info
    31. | MemberPointerType of type_info * qual_type
    32. | ObjCObjectPointerType of type_info * qual_type
    33. | ObjCObjectType of type_info * objc_object_type_info
    34. | ObjCInterfaceType of type_info * pointer
    35. | ObjCTypeParamType of type_info
    36. | PackExpansionType of type_info
    37. | ParenType of type_info * qual_type
    38. | PipeType of type_info
    39. | PointerType of type_info * qual_type
    40. | LValueReferenceType of type_info * qual_type
    41. | RValueReferenceType of type_info * qual_type
    42. | SubstTemplateTypeParmPackType of type_info
    43. | SubstTemplateTypeParmType of type_info
    44. | EnumType of type_info * pointer
    45. | RecordType of type_info * pointer
    46. | TemplateSpecializationType of type_info
    47. | TemplateTypeParmType of type_info
    48. | TypeOfExprType of type_info
    49. | TypeOfType of type_info
    50. | TypedefType of type_info * typedef_type_info
    51. | UnaryTransformType of type_info
    52. | UnresolvedUsingType of type_info
    53. | UsingType of type_info
    54. | VectorType of type_info
    55. | ExtVectorType of type_info
    type translation_unit_decl_info = {
    1. tudi_input_path : source_file;
    2. tudi_input_kind : input_kind;
    3. tudi_integer_type_widths : integer_type_widths;
    4. tudi_is_objc_arc_on : bool;
    5. tudi_types : c_type list;
    }
    type unary_expr_or_type_trait_kind = [
    1. | `AlignOf
    2. | `OpenMPRequiredSimdAlign
    3. | `PreferredAlignOf
    4. | `SizeOf
    5. | `SizeOfWithSize of int
    6. | `VecStep
    7. | `VectorElements
    ]
    type unary_expr_or_type_trait_expr_info = {
    1. uttei_kind : unary_expr_or_type_trait_kind;
    2. uttei_qual_type : qual_type;
    }
    type unary_operator_kind = [
    1. | `PostInc
    2. | `PostDec
    3. | `PreInc
    4. | `PreDec
    5. | `AddrOf
    6. | `Deref
    7. | `Plus
    8. | `Minus
    9. | `Not
    10. | `LNot
    11. | `Real
    12. | `Imag
    13. | `Extension
    14. | `Coawait
    ]
    type unary_operator_info = {
    1. uoi_kind : unary_operator_kind;
    2. uoi_is_postfix : bool;
    }
    type unresolved_lookup_expr_info = {
    1. ulei_requires_ADL : bool;
    2. ulei_is_overloaded : bool;
    3. ulei_naming_class : decl_ref option;
    }
    type using_directive_decl_info = {
    1. uddi_using_location : source_location;
    2. uddi_namespace_key_location : source_location;
    3. uddi_nested_name_specifier_locs : nested_name_specifier_loc list;
    4. uddi_nominated_namespace : decl_ref option;
    }
    type value_kind = [
    1. | `RValue
    2. | `LValue
    3. | `XValue
    ]
    type expr_info = {
    1. ei_qual_type : qual_type;
    2. ei_value_kind : value_kind;
    3. ei_object_kind : object_kind;
    }
    type version_tuple = {
    1. vt_major : int;
    2. vt_minor : int option;
    3. vt_subminor : int option;
    4. vt_build : int option;
    }
    type availability_attr_info = {
    1. aai_platform : string option;
    2. aai_introduced : version_tuple;
    }
    type visibility_attr =
    1. | DefaultVisibility
    2. | HiddenVisibility
    3. | ProtectedVisibility
    type attribute = [
    1. | `AddressSpaceAttr of attribute_info
    2. | `AnnotateTypeAttr of attribute_info
    3. | `ArmInAttr of attribute_info
    4. | `ArmInOutAttr of attribute_info
    5. | `ArmMveStrictPolymorphismAttr of attribute_info
    6. | `ArmOutAttr of attribute_info
    7. | `ArmPreservesAttr of attribute_info
    8. | `ArmStreamingAttr of attribute_info
    9. | `ArmStreamingCompatibleAttr of attribute_info
    10. | `BTFTypeTagAttr of attribute_info
    11. | `CmseNSCallAttr of attribute_info
    12. | `HLSLGroupSharedAddressSpaceAttr of attribute_info
    13. | `HLSLParamModifierAttr of attribute_info
    14. | `NoDerefAttr of attribute_info
    15. | `ObjCGCAttr of attribute_info
    16. | `ObjCInertUnsafeUnretainedAttr of attribute_info
    17. | `ObjCKindOfAttr of attribute_info
    18. | `OpenCLConstantAddressSpaceAttr of attribute_info
    19. | `OpenCLGenericAddressSpaceAttr of attribute_info
    20. | `OpenCLGlobalAddressSpaceAttr of attribute_info
    21. | `OpenCLGlobalDeviceAddressSpaceAttr of attribute_info
    22. | `OpenCLGlobalHostAddressSpaceAttr of attribute_info
    23. | `OpenCLLocalAddressSpaceAttr of attribute_info
    24. | `OpenCLPrivateAddressSpaceAttr of attribute_info
    25. | `Ptr32Attr of attribute_info
    26. | `Ptr64Attr of attribute_info
    27. | `SPtrAttr of attribute_info
    28. | `TypeNonNullAttr of attribute_info
    29. | `TypeNullUnspecifiedAttr of attribute_info
    30. | `TypeNullableAttr of attribute_info
    31. | `TypeNullableResultAttr of attribute_info
    32. | `UPtrAttr of attribute_info
    33. | `WebAssemblyFuncrefAttr of attribute_info
    34. | `CodeAlignAttr of attribute_info
    35. | `FallThroughAttr of attribute_info
    36. | `LikelyAttr of attribute_info
    37. | `MustTailAttr of attribute_info
    38. | `OpenCLUnrollHintAttr of attribute_info
    39. | `UnlikelyAttr of attribute_info
    40. | `AlwaysInlineAttr of attribute_info
    41. | `NoInlineAttr of attribute_info
    42. | `NoMergeAttr of attribute_info
    43. | `SuppressAttr of attribute_info
    44. | `AArch64SVEPcsAttr of attribute_info
    45. | `AArch64VectorPcsAttr of attribute_info
    46. | `AMDGPUKernelCallAttr of attribute_info
    47. | `AcquireHandleAttr of attribute_info
    48. | `AnyX86NoCfCheckAttr of attribute_info
    49. | `CDeclAttr of attribute_info
    50. | `FastCallAttr of attribute_info
    51. | `IntelOclBiccAttr of attribute_info
    52. | `LifetimeBoundAttr of attribute_info
    53. | `M68kRTDAttr of attribute_info
    54. | `MSABIAttr of attribute_info
    55. | `NSReturnsRetainedAttr of attribute_info
    56. | `ObjCOwnershipAttr of attribute_info
    57. | `PascalAttr of attribute_info
    58. | `PcsAttr of attribute_info
    59. | `PreserveAllAttr of attribute_info
    60. | `PreserveMostAttr of attribute_info
    61. | `RegCallAttr of attribute_info
    62. | `StdCallAttr of attribute_info
    63. | `SwiftAsyncCallAttr of attribute_info
    64. | `SwiftCallAttr of attribute_info
    65. | `SysVABIAttr of attribute_info
    66. | `ThisCallAttr of attribute_info
    67. | `VectorCallAttr of attribute_info
    68. | `SwiftAsyncContextAttr of attribute_info
    69. | `SwiftContextAttr of attribute_info
    70. | `SwiftErrorResultAttr of attribute_info
    71. | `SwiftIndirectResultAttr of attribute_info
    72. | `AnnotateAttr of attr_tuple * string
    73. | `CFConsumedAttr of attribute_info
    74. | `CarriesDependencyAttr of attribute_info
    75. | `NSConsumedAttr of attribute_info
    76. | `NonNullAttr of attribute_info
    77. | `OSConsumedAttr of attribute_info
    78. | `PassObjectSizeAttr of attribute_info
    79. | `ReleaseHandleAttr of attribute_info
    80. | `UseHandleAttr of attribute_info
    81. | `HLSLSV_DispatchThreadIDAttr of attribute_info
    82. | `HLSLSV_GroupIndexAttr of attribute_info
    83. | `AMDGPUFlatWorkGroupSizeAttr of attribute_info
    84. | `AMDGPUNumSGPRAttr of attribute_info
    85. | `AMDGPUNumVGPRAttr of attribute_info
    86. | `AMDGPUWavesPerEUAttr of attribute_info
    87. | `ARMInterruptAttr of attribute_info
    88. | `AVRInterruptAttr of attribute_info
    89. | `AVRSignalAttr of attribute_info
    90. | `AcquireCapabilityAttr of attribute_info
    91. | `AcquiredAfterAttr of attribute_info
    92. | `AcquiredBeforeAttr of attribute_info
    93. | `AlignMac68kAttr of attribute_info
    94. | `AlignNaturalAttr of attribute_info
    95. | `AlignedAttr of attribute_info
    96. | `AllocAlignAttr of attribute_info
    97. | `AllocSizeAttr of attribute_info
    98. | `AlwaysDestroyAttr of attribute_info
    99. | `AnalyzerNoReturnAttr of attribute_info
    100. | `AnyX86InterruptAttr of attribute_info
    101. | `AnyX86NoCallerSavedRegistersAttr of attribute_info
    102. | `ArcWeakrefUnavailableAttr of attribute_info
    103. | `ArgumentWithTypeTagAttr of attribute_info
    104. | `ArmBuiltinAliasAttr of attribute_info
    105. | `ArmLocallyStreamingAttr of attribute_info
    106. | `ArmNewAttr of attribute_info
    107. | `ArtificialAttr of attribute_info
    108. | `AsmLabelAttr of attribute_info
    109. | `AssertCapabilityAttr of attribute_info
    110. | `AssertExclusiveLockAttr of attribute_info
    111. | `AssertSharedLockAttr of attribute_info
    112. | `AssumeAlignedAttr of attribute_info
    113. | `AssumptionAttr of attribute_info
    114. | `AvailabilityAttr of attr_tuple * availability_attr_info
    115. | `AvailableOnlyInDefaultEvalMethodAttr of attribute_info
    116. | `BPFPreserveAccessIndexAttr of attribute_info
    117. | `BPFPreserveStaticOffsetAttr of attribute_info
    118. | `BTFDeclTagAttr of attribute_info
    119. | `BlocksAttr of attribute_info
    120. | `BuiltinAttr of attribute_info
    121. | `C11NoReturnAttr of attribute_info
    122. | `CFAuditedTransferAttr of attribute_info
    123. | `CFGuardAttr of attribute_info
    124. | `CFICanonicalJumpTableAttr of attribute_info
    125. | `CFReturnsNotRetainedAttr of attribute_info
    126. | `CFReturnsRetainedAttr of attribute_info
    127. | `CFUnknownTransferAttr of attribute_info
    128. | `CPUDispatchAttr of attribute_info
    129. | `CPUSpecificAttr of attribute_info
    130. | `CUDAConstantAttr of attribute_info
    131. | `CUDADeviceAttr of attribute_info
    132. | `CUDADeviceBuiltinSurfaceTypeAttr of attribute_info
    133. | `CUDADeviceBuiltinTextureTypeAttr of attribute_info
    134. | `CUDAGlobalAttr of attribute_info
    135. | `CUDAHostAttr of attribute_info
    136. | `CUDAInvalidTargetAttr of attribute_info
    137. | `CUDALaunchBoundsAttr of attribute_info
    138. | `CUDASharedAttr of attribute_info
    139. | `CXX11NoReturnAttr of attribute_info
    140. | `CallableWhenAttr of attribute_info
    141. | `CallbackAttr of attribute_info
    142. | `CapabilityAttr of attribute_info
    143. | `CapturedRecordAttr of attribute_info
    144. | `CleanupAttr of attribute_info
    145. | `CmseNSEntryAttr of attribute_info
    146. | `CodeModelAttr of attribute_info
    147. | `CodeSegAttr of attribute_info
    148. | `ColdAttr of attribute_info
    149. | `CommonAttr of attribute_info
    150. | `ConstAttr of attribute_info
    151. | `ConstInitAttr of attribute_info
    152. | `ConstructorAttr of attribute_info
    153. | `ConsumableAttr of attribute_info
    154. | `ConsumableAutoCastAttr of attribute_info
    155. | `ConsumableSetOnReadAttr of attribute_info
    156. | `ConvergentAttr of attribute_info
    157. | `CoroDisableLifetimeBoundAttr of attribute_info
    158. | `CoroLifetimeBoundAttr of attribute_info
    159. | `CoroOnlyDestroyWhenCompleteAttr of attribute_info
    160. | `CoroReturnTypeAttr of attribute_info
    161. | `CoroWrapperAttr of attribute_info
    162. | `CountedByAttr of attribute_info
    163. | `DLLExportAttr of attribute_info
    164. | `DLLExportStaticLocalAttr of attribute_info
    165. | `DLLImportAttr of attribute_info
    166. | `DLLImportStaticLocalAttr of attribute_info
    167. | `DeprecatedAttr of attribute_info
    168. | `DestructorAttr of attribute_info
    169. | `DiagnoseAsBuiltinAttr of attribute_info
    170. | `DiagnoseIfAttr of attribute_info
    171. | `DisableSanitizerInstrumentationAttr of attribute_info
    172. | `DisableTailCallsAttr of attribute_info
    173. | `EmptyBasesAttr of attribute_info
    174. | `EnableIfAttr of attribute_info
    175. | `EnforceTCBAttr of attribute_info
    176. | `EnforceTCBLeafAttr of attribute_info
    177. | `EnumExtensibilityAttr of attribute_info
    178. | `ErrorAttr of attribute_info
    179. | `ExcludeFromExplicitInstantiationAttr of attribute_info
    180. | `ExclusiveTrylockFunctionAttr of attribute_info
    181. | `ExternalSourceSymbolAttr of attribute_info
    182. | `FinalAttr of attribute_info
    183. | `FlagEnumAttr of attribute_info
    184. | `FlattenAttr of attribute_info
    185. | `FormatAttr of attribute_info
    186. | `FormatArgAttr of attribute_info
    187. | `FunctionReturnThunksAttr of attribute_info
    188. | `GNUInlineAttr of attribute_info
    189. | `GuardedByAttr of attribute_info
    190. | `GuardedVarAttr of attribute_info
    191. | `HIPManagedAttr of attribute_info
    192. | `HLSLNumThreadsAttr of attribute_info
    193. | `HLSLResourceAttr of attribute_info
    194. | `HLSLResourceBindingAttr of attribute_info
    195. | `HLSLShaderAttr of attribute_info
    196. | `HotAttr of attribute_info
    197. | `IBActionAttr of attribute_info
    198. | `IBOutletAttr of attribute_info
    199. | `IBOutletCollectionAttr of attribute_info
    200. | `InitPriorityAttr of attribute_info
    201. | `InternalLinkageAttr of attribute_info
    202. | `LTOVisibilityPublicAttr of attribute_info
    203. | `LayoutVersionAttr of attribute_info
    204. | `LeafAttr of attribute_info
    205. | `LockReturnedAttr of attribute_info
    206. | `LocksExcludedAttr of attribute_info
    207. | `M68kInterruptAttr of attribute_info
    208. | `MIGServerRoutineAttr of attribute_info
    209. | `MSAllocatorAttr of attribute_info
    210. | `MSConstexprAttr of attribute_info
    211. | `MSInheritanceAttr of attribute_info
    212. | `MSNoVTableAttr of attribute_info
    213. | `MSP430InterruptAttr of attribute_info
    214. | `MSStructAttr of attribute_info
    215. | `MSVtorDispAttr of attribute_info
    216. | `MaxFieldAlignmentAttr of attribute_info
    217. | `MayAliasAttr of attribute_info
    218. | `MaybeUndefAttr of attribute_info
    219. | `MicroMipsAttr of attribute_info
    220. | `MinSizeAttr of attribute_info
    221. | `MinVectorWidthAttr of attribute_info
    222. | `Mips16Attr of attribute_info
    223. | `MipsInterruptAttr of attribute_info
    224. | `MipsLongCallAttr of attribute_info
    225. | `MipsShortCallAttr of attribute_info
    226. | `NSConsumesSelfAttr of attribute_info
    227. | `NSErrorDomainAttr of attribute_info
    228. | `NSReturnsAutoreleasedAttr of attribute_info
    229. | `NSReturnsNotRetainedAttr of attribute_info
    230. | `NVPTXKernelAttr of attribute_info
    231. | `NakedAttr of attribute_info
    232. | `NoAliasAttr of attribute_info
    233. | `NoCommonAttr of attribute_info
    234. | `NoDebugAttr of attribute_info
    235. | `NoDestroyAttr of attribute_info
    236. | `NoDuplicateAttr of attribute_info
    237. | `NoInstrumentFunctionAttr of attribute_info
    238. | `NoMicroMipsAttr of attribute_info
    239. | `NoMips16Attr of attribute_info
    240. | `NoProfileFunctionAttr of attribute_info
    241. | `NoRandomizeLayoutAttr of attribute_info
    242. | `NoReturnAttr of attribute_info
    243. | `NoSanitizeAttr of attribute_info
    244. | `NoSpeculativeLoadHardeningAttr of attribute_info
    245. | `NoSplitStackAttr of attribute_info
    246. | `NoStackProtectorAttr of attribute_info
    247. | `NoThreadSafetyAnalysisAttr of attribute_info
    248. | `NoThrowAttr of attribute_info
    249. | `NoUniqueAddressAttr of attribute_info
    250. | `NoUwtableAttr of attribute_info
    251. | `NotTailCalledAttr of attribute_info
    252. | `OMPAllocateDeclAttr of attribute_info
    253. | `OMPCaptureNoInitAttr of attribute_info
    254. | `OMPDeclareTargetDeclAttr of attribute_info
    255. | `OMPDeclareVariantAttr of attribute_info
    256. | `OMPThreadPrivateDeclAttr of attribute_info
    257. | `OSConsumesThisAttr of attribute_info
    258. | `OSReturnsNotRetainedAttr of attribute_info
    259. | `OSReturnsRetainedAttr of attribute_info
    260. | `OSReturnsRetainedOnNonZeroAttr of attribute_info
    261. | `OSReturnsRetainedOnZeroAttr of attribute_info
    262. | `ObjCBridgeAttr of attribute_info
    263. | `ObjCBridgeMutableAttr of attribute_info
    264. | `ObjCBridgeRelatedAttr of attribute_info
    265. | `ObjCExceptionAttr of attribute_info
    266. | `ObjCExplicitProtocolImplAttr of attribute_info
    267. | `ObjCExternallyRetainedAttr of attribute_info
    268. | `ObjCIndependentClassAttr of attribute_info
    269. | `ObjCMethodFamilyAttr of attribute_info
    270. | `ObjCNSObjectAttr of attribute_info
    271. | `ObjCPreciseLifetimeAttr of attribute_info
    272. | `ObjCRequiresPropertyDefsAttr of attribute_info
    273. | `ObjCRequiresSuperAttr of attribute_info
    274. | `ObjCReturnsInnerPointerAttr of attribute_info
    275. | `ObjCRootClassAttr of attribute_info
    276. | `ObjCSubclassingRestrictedAttr of attribute_info
    277. | `OpenCLIntelReqdSubGroupSizeAttr of attribute_info
    278. | `OpenCLKernelAttr of attribute_info
    279. | `OptimizeNoneAttr of attribute_info
    280. | `OverrideAttr of attribute_info
    281. | `OwnerAttr of attribute_info
    282. | `OwnershipAttr of attribute_info
    283. | `PackedAttr of attribute_info
    284. | `ParamTypestateAttr of attribute_info
    285. | `PatchableFunctionEntryAttr of attribute_info
    286. | `PointerAttr of attribute_info
    287. | `PragmaClangBSSSectionAttr of attribute_info
    288. | `PragmaClangDataSectionAttr of attribute_info
    289. | `PragmaClangRelroSectionAttr of attribute_info
    290. | `PragmaClangRodataSectionAttr of attribute_info
    291. | `PragmaClangTextSectionAttr of attribute_info
    292. | `PreferredNameAttr of attribute_info
    293. | `PreferredTypeAttr of attribute_info
    294. | `PtGuardedByAttr of attribute_info
    295. | `PtGuardedVarAttr of attribute_info
    296. | `PureAttr of attribute_info
    297. | `RISCVInterruptAttr of attribute_info
    298. | `RandomizeLayoutAttr of attribute_info
    299. | `ReadOnlyPlacementAttr of attribute_info
    300. | `ReinitializesAttr of attribute_info
    301. | `ReleaseCapabilityAttr of attribute_info
    302. | `ReqdWorkGroupSizeAttr of attribute_info
    303. | `RequiresCapabilityAttr of attribute_info
    304. | `RestrictAttr of attribute_info
    305. | `RetainAttr of attribute_info
    306. | `ReturnTypestateAttr of attribute_info
    307. | `ReturnsNonNullAttr of attribute_info
    308. | `ReturnsTwiceAttr of attribute_info
    309. | `SYCLKernelAttr of attribute_info
    310. | `SYCLSpecialClassAttr of attribute_info
    311. | `ScopedLockableAttr of attribute_info
    312. | `SectionAttr of attribute_info
    313. | `SelectAnyAttr of attribute_info
    314. | `SentinelAttr of attr_tuple * sentinel_attr_info
    315. | `SetTypestateAttr of attribute_info
    316. | `SharedTrylockFunctionAttr of attribute_info
    317. | `SpeculativeLoadHardeningAttr of attribute_info
    318. | `StandaloneDebugAttr of attribute_info
    319. | `StrictFPAttr of attribute_info
    320. | `StrictGuardStackCheckAttr of attribute_info
    321. | `SwiftAsyncAttr of attribute_info
    322. | `SwiftAsyncErrorAttr of attribute_info
    323. | `SwiftAsyncNameAttr of attribute_info
    324. | `SwiftAttrAttr of attribute_info
    325. | `SwiftBridgeAttr of attribute_info
    326. | `SwiftBridgedTypedefAttr of attribute_info
    327. | `SwiftErrorAttr of attribute_info
    328. | `SwiftImportAsNonGenericAttr of attribute_info
    329. | `SwiftImportPropertyAsAccessorsAttr of attribute_info
    330. | `SwiftNameAttr of attribute_info
    331. | `SwiftNewTypeAttr of attribute_info
    332. | `SwiftPrivateAttr of attribute_info
    333. | `TLSModelAttr of attribute_info
    334. | `TargetAttr of attribute_info
    335. | `TargetClonesAttr of attribute_info
    336. | `TargetVersionAttr of attribute_info
    337. | `TestTypestateAttr of attribute_info
    338. | `TransparentUnionAttr of attribute_info
    339. | `TrivialABIAttr of attribute_info
    340. | `TryAcquireCapabilityAttr of attribute_info
    341. | `TypeTagForDatatypeAttr of attribute_info
    342. | `TypeVisibilityAttr of attribute_info
    343. | `UnavailableAttr of attribute_info
    344. | `UninitializedAttr of attribute_info
    345. | `UnsafeBufferUsageAttr of attribute_info
    346. | `UnusedAttr of attribute_info
    347. | `UsedAttr of attribute_info
    348. | `UsingIfExistsAttr of attribute_info
    349. | `UuidAttr of attribute_info
    350. | `VecReturnAttr of attribute_info
    351. | `VecTypeHintAttr of attribute_info
    352. | `VisibilityAttr of attr_tuple * visibility_attr
    353. | `WarnUnusedAttr of attribute_info
    354. | `WarnUnusedResultAttr of attribute_info
    355. | `WeakAttr of attribute_info
    356. | `WeakImportAttr of attribute_info
    357. | `WeakRefAttr of attribute_info
    358. | `WebAssemblyExportNameAttr of attribute_info
    359. | `WebAssemblyImportModuleAttr of attribute_info
    360. | `WebAssemblyImportNameAttr of attribute_info
    361. | `WorkGroupSizeHintAttr of attribute_info
    362. | `X86ForceAlignArgPointerAttr of attribute_info
    363. | `XRayInstrumentAttr of attribute_info
    364. | `XRayLogArgsAttr of attribute_info
    365. | `ZeroCallUsedRegsAttr of attribute_info
    366. | `AbiTagAttr of attribute_info
    367. | `AliasAttr of attribute_info
    368. | `AlignValueAttr of attribute_info
    369. | `BuiltinAliasAttr of attribute_info
    370. | `CalledOnceAttr of attribute_info
    371. | `IFuncAttr of attribute_info
    372. | `InitSegAttr of attribute_info
    373. | `LoaderUninitializedAttr of attribute_info
    374. | `LoopHintAttr of attribute_info
    375. | `ModeAttr of attribute_info
    376. | `NoBuiltinAttr of attribute_info
    377. | `NoEscapeAttr of attribute_info
    378. | `OMPCaptureKindAttr of attribute_info
    379. | `OMPDeclareSimdDeclAttr of attribute_info
    380. | `OMPReferencedVarAttr of attribute_info
    381. | `ObjCBoxableAttr of attribute_info
    382. | `ObjCClassStubAttr of attribute_info
    383. | `ObjCDesignatedInitializerAttr of attribute_info
    384. | `ObjCDirectAttr of attribute_info
    385. | `ObjCDirectMembersAttr of attribute_info
    386. | `ObjCNonLazyClassAttr of attribute_info
    387. | `ObjCNonRuntimeProtocolAttr of attribute_info
    388. | `ObjCRuntimeNameAttr of attribute_info
    389. | `ObjCRuntimeVisibleAttr of attribute_info
    390. | `OpenCLAccessAttr of attribute_info
    391. | `OverloadableAttr of attribute_info
    392. | `RenderScriptKernelAttr of attribute_info
    393. | `SwiftObjCMembersAttr of attribute_info
    394. | `SwiftVersionedAdditionAttr of attribute_info
    395. | `SwiftVersionedRemovalAttr of attribute_info
    396. | `ThreadAttr of attribute_info
    ]
    type template_instantiation_arg_info = [
    1. | `Null
    2. | `Type of qual_type
    3. | `Declaration of pointer
    4. | `NullPtr
    5. | `Integral of string
    6. | `Template
    7. | `TemplateExpansion
    8. | `Expression
    9. | `Pack of template_instantiation_arg_info list
    ]
    type comment =
    1. | VerbatimBlockLineComment of comment_info * comment list
    2. | TextComment of comment_info * comment list
    3. | InlineCommandComment of comment_info * comment list
    4. | HTMLStartTagComment of comment_info * comment list
    5. | HTMLEndTagComment of comment_info * comment list
    6. | FullComment of comment_info * comment list
    7. | ParagraphComment of comment_info * comment list
    8. | BlockCommandComment of comment_info * comment list
    9. | VerbatimLineComment of comment_info * comment list
    10. | VerbatimBlockComment of comment_info * comment list
    11. | TParamCommandComment of comment_info * comment list
    12. | ParamCommandComment of comment_info * comment list
    type template_specialization_info = {
    1. tsi_template_decl : pointer;
    2. tsi_specialization_args : template_instantiation_arg_info list;
    }
    type decl_info = {
    1. di_pointer : pointer;
    2. di_parent_pointer : pointer option;
    3. di_source_range : source_range;
    4. di_owning_module : string option;
    5. di_is_hidden : bool;
    6. di_is_implicit : bool;
    7. di_is_used : bool;
    8. di_is_this_declaration_referenced : bool;
    9. di_is_invalid_decl : bool;
    10. di_attributes : attribute list;
    11. di_full_comment : comment option;
    12. di_access : access_specifier;
    }
    type block_captured_variable = {
    1. bcv_is_by_ref : bool;
    2. bcv_is_nested : bool;
    3. bcv_variable : decl_ref option;
    4. bcv_copy_expr : stmt option;
    }
    and block_decl_info = {
    1. bdi_parameters : decl list;
    2. bdi_is_variadic : bool;
    3. bdi_captures_cxx_this : bool;
    4. bdi_captured_variables : block_captured_variable list;
    5. bdi_body : stmt option;
    6. bdi_mangled_name : string;
    }
    and coreturn_stmt_info = {
    1. coret_operand : stmt option;
    2. coret_promise_call : stmt option;
    }
    and coro_body_stmt_info = {
    1. cbs_body : pointer;
    2. cbs_promise_decl_stmt : pointer;
    3. cbs_return_value : stmt;
    }
    and cxx_catch_stmt_info = {
    1. xcsi_variable : decl option;
    }
    and cxx_ctor_initializer = {
    1. xci_subject : cxx_ctor_initializer_subject;
    2. xci_source_range : source_range;
    3. xci_init_expr : stmt option;
    }
    and cxx_default_expr_info = {
    1. xdaei_init_expr : stmt option;
    }
    and cxx_method_decl_info = {
    1. xmdi_is_virtual : bool;
    2. xmdi_is_static : bool;
    3. xmdi_is_const : bool;
    4. xmdi_is_copy_assignment : bool;
    5. xmdi_is_copy_constructor : bool;
    6. xmdi_is_move_constructor : bool;
    7. xmdi_cxx_ctor_initializers : cxx_ctor_initializer list;
    8. xmdi_overriden_methods : decl_ref list;
    }
    and cxx_record_decl_info = {
    1. xrdi_bases : type_ptr list;
    2. xrdi_vbases : type_ptr list;
    3. xrdi_transitive_vbases : type_ptr list;
    4. xrdi_is_pod : bool;
    5. xrdi_is_trivially_copyable : bool;
    6. xrdi_destructor : decl_ref option;
    7. xrdi_lambda_call_operator : decl_ref option;
    8. xrdi_lambda_captures : lambda_capture_info list;
    }
    and decl =
    1. | TranslationUnitDecl of decl_info +Clang_ast_t (infer.ATDGenerated.Clang_ast_t)

      Module ATDGenerated.Clang_ast_t

      type access_specifier = [
      1. | `None
      2. | `Public
      3. | `Protected
      4. | `Private
      ]
      type atomic_expr_kind = [
      1. | `AO__c11_atomic_init
      2. | `AO__c11_atomic_load
      3. | `AO__c11_atomic_store
      4. | `AO__c11_atomic_exchange
      5. | `AO__c11_atomic_compare_exchange_strong
      6. | `AO__c11_atomic_compare_exchange_weak
      7. | `AO__c11_atomic_fetch_add
      8. | `AO__c11_atomic_fetch_sub
      9. | `AO__c11_atomic_fetch_and
      10. | `AO__c11_atomic_fetch_or
      11. | `AO__c11_atomic_fetch_xor
      12. | `AO__c11_atomic_fetch_nand
      13. | `AO__c11_atomic_fetch_max
      14. | `AO__c11_atomic_fetch_min
      15. | `AO__atomic_load
      16. | `AO__atomic_load_n
      17. | `AO__atomic_store
      18. | `AO__atomic_store_n
      19. | `AO__atomic_exchange
      20. | `AO__atomic_exchange_n
      21. | `AO__atomic_compare_exchange
      22. | `AO__atomic_compare_exchange_n
      23. | `AO__atomic_fetch_add
      24. | `AO__atomic_fetch_sub
      25. | `AO__atomic_fetch_and
      26. | `AO__atomic_fetch_or
      27. | `AO__atomic_fetch_xor
      28. | `AO__atomic_fetch_nand
      29. | `AO__atomic_add_fetch
      30. | `AO__atomic_sub_fetch
      31. | `AO__atomic_and_fetch
      32. | `AO__atomic_or_fetch
      33. | `AO__atomic_xor_fetch
      34. | `AO__atomic_max_fetch
      35. | `AO__atomic_min_fetch
      36. | `AO__atomic_nand_fetch
      37. | `AO__scoped_atomic_load
      38. | `AO__scoped_atomic_load_n
      39. | `AO__scoped_atomic_store
      40. | `AO__scoped_atomic_store_n
      41. | `AO__scoped_atomic_exchange
      42. | `AO__scoped_atomic_exchange_n
      43. | `AO__scoped_atomic_compare_exchange
      44. | `AO__scoped_atomic_compare_exchange_n
      45. | `AO__scoped_atomic_fetch_add
      46. | `AO__scoped_atomic_fetch_sub
      47. | `AO__scoped_atomic_fetch_and
      48. | `AO__scoped_atomic_fetch_or
      49. | `AO__scoped_atomic_fetch_xor
      50. | `AO__scoped_atomic_fetch_nand
      51. | `AO__scoped_atomic_add_fetch
      52. | `AO__scoped_atomic_sub_fetch
      53. | `AO__scoped_atomic_and_fetch
      54. | `AO__scoped_atomic_or_fetch
      55. | `AO__scoped_atomic_xor_fetch
      56. | `AO__scoped_atomic_max_fetch
      57. | `AO__scoped_atomic_min_fetch
      58. | `AO__scoped_atomic_nand_fetch
      59. | `AO__scoped_atomic_fetch_min
      60. | `AO__scoped_atomic_fetch_max
      61. | `AO__opencl_atomic_init
      62. | `AO__opencl_atomic_load
      63. | `AO__opencl_atomic_store
      64. | `AO__opencl_atomic_exchange
      65. | `AO__opencl_atomic_compare_exchange_strong
      66. | `AO__opencl_atomic_compare_exchange_weak
      67. | `AO__opencl_atomic_fetch_add
      68. | `AO__opencl_atomic_fetch_sub
      69. | `AO__opencl_atomic_fetch_and
      70. | `AO__opencl_atomic_fetch_or
      71. | `AO__opencl_atomic_fetch_xor
      72. | `AO__opencl_atomic_fetch_min
      73. | `AO__opencl_atomic_fetch_max
      74. | `AO__atomic_fetch_min
      75. | `AO__atomic_fetch_max
      76. | `AO__hip_atomic_load
      77. | `AO__hip_atomic_store
      78. | `AO__hip_atomic_compare_exchange_weak
      79. | `AO__hip_atomic_compare_exchange_strong
      80. | `AO__hip_atomic_exchange
      81. | `AO__hip_atomic_fetch_add
      82. | `AO__hip_atomic_fetch_sub
      83. | `AO__hip_atomic_fetch_and
      84. | `AO__hip_atomic_fetch_or
      85. | `AO__hip_atomic_fetch_xor
      86. | `AO__hip_atomic_fetch_min
      87. | `AO__hip_atomic_fetch_max
      ]
      type atomic_expr_info = {
      1. aei_kind : atomic_expr_kind;
      }
      type attribute_kind =
      1. | AddressSpaceAttrKind
      2. | AnnotateTypeAttrKind
      3. | ArmInAttrKind
      4. | ArmInOutAttrKind
      5. | ArmMveStrictPolymorphismAttrKind
      6. | ArmOutAttrKind
      7. | ArmPreservesAttrKind
      8. | ArmStreamingAttrKind
      9. | ArmStreamingCompatibleAttrKind
      10. | BTFTypeTagAttrKind
      11. | CmseNSCallAttrKind
      12. | HLSLGroupSharedAddressSpaceAttrKind
      13. | HLSLParamModifierAttrKind
      14. | NoDerefAttrKind
      15. | ObjCGCAttrKind
      16. | ObjCInertUnsafeUnretainedAttrKind
      17. | ObjCKindOfAttrKind
      18. | OpenCLConstantAddressSpaceAttrKind
      19. | OpenCLGenericAddressSpaceAttrKind
      20. | OpenCLGlobalAddressSpaceAttrKind
      21. | OpenCLGlobalDeviceAddressSpaceAttrKind
      22. | OpenCLGlobalHostAddressSpaceAttrKind
      23. | OpenCLLocalAddressSpaceAttrKind
      24. | OpenCLPrivateAddressSpaceAttrKind
      25. | Ptr32AttrKind
      26. | Ptr64AttrKind
      27. | SPtrAttrKind
      28. | TypeNonNullAttrKind
      29. | TypeNullUnspecifiedAttrKind
      30. | TypeNullableAttrKind
      31. | TypeNullableResultAttrKind
      32. | UPtrAttrKind
      33. | WebAssemblyFuncrefAttrKind
      34. | CodeAlignAttrKind
      35. | FallThroughAttrKind
      36. | LikelyAttrKind
      37. | MustTailAttrKind
      38. | OpenCLUnrollHintAttrKind
      39. | UnlikelyAttrKind
      40. | AlwaysInlineAttrKind
      41. | NoInlineAttrKind
      42. | NoMergeAttrKind
      43. | SuppressAttrKind
      44. | AArch64SVEPcsAttrKind
      45. | AArch64VectorPcsAttrKind
      46. | AMDGPUKernelCallAttrKind
      47. | AcquireHandleAttrKind
      48. | AnyX86NoCfCheckAttrKind
      49. | CDeclAttrKind
      50. | FastCallAttrKind
      51. | IntelOclBiccAttrKind
      52. | LifetimeBoundAttrKind
      53. | M68kRTDAttrKind
      54. | MSABIAttrKind
      55. | NSReturnsRetainedAttrKind
      56. | ObjCOwnershipAttrKind
      57. | PascalAttrKind
      58. | PcsAttrKind
      59. | PreserveAllAttrKind
      60. | PreserveMostAttrKind
      61. | RegCallAttrKind
      62. | StdCallAttrKind
      63. | SwiftAsyncCallAttrKind
      64. | SwiftCallAttrKind
      65. | SysVABIAttrKind
      66. | ThisCallAttrKind
      67. | VectorCallAttrKind
      68. | SwiftAsyncContextAttrKind
      69. | SwiftContextAttrKind
      70. | SwiftErrorResultAttrKind
      71. | SwiftIndirectResultAttrKind
      72. | AnnotateAttrKind
      73. | CFConsumedAttrKind
      74. | CarriesDependencyAttrKind
      75. | NSConsumedAttrKind
      76. | NonNullAttrKind
      77. | OSConsumedAttrKind
      78. | PassObjectSizeAttrKind
      79. | ReleaseHandleAttrKind
      80. | UseHandleAttrKind
      81. | HLSLSV_DispatchThreadIDAttrKind
      82. | HLSLSV_GroupIndexAttrKind
      83. | AMDGPUFlatWorkGroupSizeAttrKind
      84. | AMDGPUNumSGPRAttrKind
      85. | AMDGPUNumVGPRAttrKind
      86. | AMDGPUWavesPerEUAttrKind
      87. | ARMInterruptAttrKind
      88. | AVRInterruptAttrKind
      89. | AVRSignalAttrKind
      90. | AcquireCapabilityAttrKind
      91. | AcquiredAfterAttrKind
      92. | AcquiredBeforeAttrKind
      93. | AlignMac68kAttrKind
      94. | AlignNaturalAttrKind
      95. | AlignedAttrKind
      96. | AllocAlignAttrKind
      97. | AllocSizeAttrKind
      98. | AlwaysDestroyAttrKind
      99. | AnalyzerNoReturnAttrKind
      100. | AnyX86InterruptAttrKind
      101. | AnyX86NoCallerSavedRegistersAttrKind
      102. | ArcWeakrefUnavailableAttrKind
      103. | ArgumentWithTypeTagAttrKind
      104. | ArmBuiltinAliasAttrKind
      105. | ArmLocallyStreamingAttrKind
      106. | ArmNewAttrKind
      107. | ArtificialAttrKind
      108. | AsmLabelAttrKind
      109. | AssertCapabilityAttrKind
      110. | AssertExclusiveLockAttrKind
      111. | AssertSharedLockAttrKind
      112. | AssumeAlignedAttrKind
      113. | AssumptionAttrKind
      114. | AvailabilityAttrKind
      115. | AvailableOnlyInDefaultEvalMethodAttrKind
      116. | BPFPreserveAccessIndexAttrKind
      117. | BPFPreserveStaticOffsetAttrKind
      118. | BTFDeclTagAttrKind
      119. | BlocksAttrKind
      120. | BuiltinAttrKind
      121. | C11NoReturnAttrKind
      122. | CFAuditedTransferAttrKind
      123. | CFGuardAttrKind
      124. | CFICanonicalJumpTableAttrKind
      125. | CFReturnsNotRetainedAttrKind
      126. | CFReturnsRetainedAttrKind
      127. | CFUnknownTransferAttrKind
      128. | CPUDispatchAttrKind
      129. | CPUSpecificAttrKind
      130. | CUDAConstantAttrKind
      131. | CUDADeviceAttrKind
      132. | CUDADeviceBuiltinSurfaceTypeAttrKind
      133. | CUDADeviceBuiltinTextureTypeAttrKind
      134. | CUDAGlobalAttrKind
      135. | CUDAHostAttrKind
      136. | CUDAInvalidTargetAttrKind
      137. | CUDALaunchBoundsAttrKind
      138. | CUDASharedAttrKind
      139. | CXX11NoReturnAttrKind
      140. | CallableWhenAttrKind
      141. | CallbackAttrKind
      142. | CapabilityAttrKind
      143. | CapturedRecordAttrKind
      144. | CleanupAttrKind
      145. | CmseNSEntryAttrKind
      146. | CodeModelAttrKind
      147. | CodeSegAttrKind
      148. | ColdAttrKind
      149. | CommonAttrKind
      150. | ConstAttrKind
      151. | ConstInitAttrKind
      152. | ConstructorAttrKind
      153. | ConsumableAttrKind
      154. | ConsumableAutoCastAttrKind
      155. | ConsumableSetOnReadAttrKind
      156. | ConvergentAttrKind
      157. | CoroDisableLifetimeBoundAttrKind
      158. | CoroLifetimeBoundAttrKind
      159. | CoroOnlyDestroyWhenCompleteAttrKind
      160. | CoroReturnTypeAttrKind
      161. | CoroWrapperAttrKind
      162. | CountedByAttrKind
      163. | DLLExportAttrKind
      164. | DLLExportStaticLocalAttrKind
      165. | DLLImportAttrKind
      166. | DLLImportStaticLocalAttrKind
      167. | DeprecatedAttrKind
      168. | DestructorAttrKind
      169. | DiagnoseAsBuiltinAttrKind
      170. | DiagnoseIfAttrKind
      171. | DisableSanitizerInstrumentationAttrKind
      172. | DisableTailCallsAttrKind
      173. | EmptyBasesAttrKind
      174. | EnableIfAttrKind
      175. | EnforceTCBAttrKind
      176. | EnforceTCBLeafAttrKind
      177. | EnumExtensibilityAttrKind
      178. | ErrorAttrKind
      179. | ExcludeFromExplicitInstantiationAttrKind
      180. | ExclusiveTrylockFunctionAttrKind
      181. | ExternalSourceSymbolAttrKind
      182. | FinalAttrKind
      183. | FlagEnumAttrKind
      184. | FlattenAttrKind
      185. | FormatAttrKind
      186. | FormatArgAttrKind
      187. | FunctionReturnThunksAttrKind
      188. | GNUInlineAttrKind
      189. | GuardedByAttrKind
      190. | GuardedVarAttrKind
      191. | HIPManagedAttrKind
      192. | HLSLNumThreadsAttrKind
      193. | HLSLResourceAttrKind
      194. | HLSLResourceBindingAttrKind
      195. | HLSLShaderAttrKind
      196. | HotAttrKind
      197. | IBActionAttrKind
      198. | IBOutletAttrKind
      199. | IBOutletCollectionAttrKind
      200. | InitPriorityAttrKind
      201. | InternalLinkageAttrKind
      202. | LTOVisibilityPublicAttrKind
      203. | LayoutVersionAttrKind
      204. | LeafAttrKind
      205. | LockReturnedAttrKind
      206. | LocksExcludedAttrKind
      207. | M68kInterruptAttrKind
      208. | MIGServerRoutineAttrKind
      209. | MSAllocatorAttrKind
      210. | MSConstexprAttrKind
      211. | MSInheritanceAttrKind
      212. | MSNoVTableAttrKind
      213. | MSP430InterruptAttrKind
      214. | MSStructAttrKind
      215. | MSVtorDispAttrKind
      216. | MaxFieldAlignmentAttrKind
      217. | MayAliasAttrKind
      218. | MaybeUndefAttrKind
      219. | MicroMipsAttrKind
      220. | MinSizeAttrKind
      221. | MinVectorWidthAttrKind
      222. | Mips16AttrKind
      223. | MipsInterruptAttrKind
      224. | MipsLongCallAttrKind
      225. | MipsShortCallAttrKind
      226. | NSConsumesSelfAttrKind
      227. | NSErrorDomainAttrKind
      228. | NSReturnsAutoreleasedAttrKind
      229. | NSReturnsNotRetainedAttrKind
      230. | NVPTXKernelAttrKind
      231. | NakedAttrKind
      232. | NoAliasAttrKind
      233. | NoCommonAttrKind
      234. | NoDebugAttrKind
      235. | NoDestroyAttrKind
      236. | NoDuplicateAttrKind
      237. | NoInstrumentFunctionAttrKind
      238. | NoMicroMipsAttrKind
      239. | NoMips16AttrKind
      240. | NoProfileFunctionAttrKind
      241. | NoRandomizeLayoutAttrKind
      242. | NoReturnAttrKind
      243. | NoSanitizeAttrKind
      244. | NoSpeculativeLoadHardeningAttrKind
      245. | NoSplitStackAttrKind
      246. | NoStackProtectorAttrKind
      247. | NoThreadSafetyAnalysisAttrKind
      248. | NoThrowAttrKind
      249. | NoUniqueAddressAttrKind
      250. | NoUwtableAttrKind
      251. | NotTailCalledAttrKind
      252. | OMPAllocateDeclAttrKind
      253. | OMPCaptureNoInitAttrKind
      254. | OMPDeclareTargetDeclAttrKind
      255. | OMPDeclareVariantAttrKind
      256. | OMPThreadPrivateDeclAttrKind
      257. | OSConsumesThisAttrKind
      258. | OSReturnsNotRetainedAttrKind
      259. | OSReturnsRetainedAttrKind
      260. | OSReturnsRetainedOnNonZeroAttrKind
      261. | OSReturnsRetainedOnZeroAttrKind
      262. | ObjCBridgeAttrKind
      263. | ObjCBridgeMutableAttrKind
      264. | ObjCBridgeRelatedAttrKind
      265. | ObjCExceptionAttrKind
      266. | ObjCExplicitProtocolImplAttrKind
      267. | ObjCExternallyRetainedAttrKind
      268. | ObjCIndependentClassAttrKind
      269. | ObjCMethodFamilyAttrKind
      270. | ObjCNSObjectAttrKind
      271. | ObjCPreciseLifetimeAttrKind
      272. | ObjCRequiresPropertyDefsAttrKind
      273. | ObjCRequiresSuperAttrKind
      274. | ObjCReturnsInnerPointerAttrKind
      275. | ObjCRootClassAttrKind
      276. | ObjCSubclassingRestrictedAttrKind
      277. | OpenCLIntelReqdSubGroupSizeAttrKind
      278. | OpenCLKernelAttrKind
      279. | OptimizeNoneAttrKind
      280. | OverrideAttrKind
      281. | OwnerAttrKind
      282. | OwnershipAttrKind
      283. | PackedAttrKind
      284. | ParamTypestateAttrKind
      285. | PatchableFunctionEntryAttrKind
      286. | PointerAttrKind
      287. | PragmaClangBSSSectionAttrKind
      288. | PragmaClangDataSectionAttrKind
      289. | PragmaClangRelroSectionAttrKind
      290. | PragmaClangRodataSectionAttrKind
      291. | PragmaClangTextSectionAttrKind
      292. | PreferredNameAttrKind
      293. | PreferredTypeAttrKind
      294. | PtGuardedByAttrKind
      295. | PtGuardedVarAttrKind
      296. | PureAttrKind
      297. | RISCVInterruptAttrKind
      298. | RandomizeLayoutAttrKind
      299. | ReadOnlyPlacementAttrKind
      300. | ReinitializesAttrKind
      301. | ReleaseCapabilityAttrKind
      302. | ReqdWorkGroupSizeAttrKind
      303. | RequiresCapabilityAttrKind
      304. | RestrictAttrKind
      305. | RetainAttrKind
      306. | ReturnTypestateAttrKind
      307. | ReturnsNonNullAttrKind
      308. | ReturnsTwiceAttrKind
      309. | SYCLKernelAttrKind
      310. | SYCLSpecialClassAttrKind
      311. | ScopedLockableAttrKind
      312. | SectionAttrKind
      313. | SelectAnyAttrKind
      314. | SentinelAttrKind
      315. | SetTypestateAttrKind
      316. | SharedTrylockFunctionAttrKind
      317. | SpeculativeLoadHardeningAttrKind
      318. | StandaloneDebugAttrKind
      319. | StrictFPAttrKind
      320. | StrictGuardStackCheckAttrKind
      321. | SwiftAsyncAttrKind
      322. | SwiftAsyncErrorAttrKind
      323. | SwiftAsyncNameAttrKind
      324. | SwiftAttrAttrKind
      325. | SwiftBridgeAttrKind
      326. | SwiftBridgedTypedefAttrKind
      327. | SwiftErrorAttrKind
      328. | SwiftImportAsNonGenericAttrKind
      329. | SwiftImportPropertyAsAccessorsAttrKind
      330. | SwiftNameAttrKind
      331. | SwiftNewTypeAttrKind
      332. | SwiftPrivateAttrKind
      333. | TLSModelAttrKind
      334. | TargetAttrKind
      335. | TargetClonesAttrKind
      336. | TargetVersionAttrKind
      337. | TestTypestateAttrKind
      338. | TransparentUnionAttrKind
      339. | TrivialABIAttrKind
      340. | TryAcquireCapabilityAttrKind
      341. | TypeTagForDatatypeAttrKind
      342. | TypeVisibilityAttrKind
      343. | UnavailableAttrKind
      344. | UninitializedAttrKind
      345. | UnsafeBufferUsageAttrKind
      346. | UnusedAttrKind
      347. | UsedAttrKind
      348. | UsingIfExistsAttrKind
      349. | UuidAttrKind
      350. | VecReturnAttrKind
      351. | VecTypeHintAttrKind
      352. | VisibilityAttrKind
      353. | WarnUnusedAttrKind
      354. | WarnUnusedResultAttrKind
      355. | WeakAttrKind
      356. | WeakImportAttrKind
      357. | WeakRefAttrKind
      358. | WebAssemblyExportNameAttrKind
      359. | WebAssemblyImportModuleAttrKind
      360. | WebAssemblyImportNameAttrKind
      361. | WorkGroupSizeHintAttrKind
      362. | X86ForceAlignArgPointerAttrKind
      363. | XRayInstrumentAttrKind
      364. | XRayLogArgsAttrKind
      365. | ZeroCallUsedRegsAttrKind
      366. | AbiTagAttrKind
      367. | AliasAttrKind
      368. | AlignValueAttrKind
      369. | BuiltinAliasAttrKind
      370. | CalledOnceAttrKind
      371. | IFuncAttrKind
      372. | InitSegAttrKind
      373. | LoaderUninitializedAttrKind
      374. | LoopHintAttrKind
      375. | ModeAttrKind
      376. | NoBuiltinAttrKind
      377. | NoEscapeAttrKind
      378. | OMPCaptureKindAttrKind
      379. | OMPDeclareSimdDeclAttrKind
      380. | OMPReferencedVarAttrKind
      381. | ObjCBoxableAttrKind
      382. | ObjCClassStubAttrKind
      383. | ObjCDesignatedInitializerAttrKind
      384. | ObjCDirectAttrKind
      385. | ObjCDirectMembersAttrKind
      386. | ObjCNonLazyClassAttrKind
      387. | ObjCNonRuntimeProtocolAttrKind
      388. | ObjCRuntimeNameAttrKind
      389. | ObjCRuntimeVisibleAttrKind
      390. | OpenCLAccessAttrKind
      391. | OverloadableAttrKind
      392. | RenderScriptKernelAttrKind
      393. | SwiftObjCMembersAttrKind
      394. | SwiftVersionedAdditionAttrKind
      395. | SwiftVersionedRemovalAttrKind
      396. | ThreadAttrKind
      type binary_operator_kind = [
      1. | `PtrMemD
      2. | `PtrMemI
      3. | `Mul
      4. | `Div
      5. | `Rem
      6. | `Add
      7. | `Sub
      8. | `Shl
      9. | `Shr
      10. | `Cmp
      11. | `LT
      12. | `GT
      13. | `LE
      14. | `GE
      15. | `EQ
      16. | `NE
      17. | `And
      18. | `Xor
      19. | `Or
      20. | `LAnd
      21. | `LOr
      22. | `Assign
      23. | `MulAssign
      24. | `DivAssign
      25. | `RemAssign
      26. | `AddAssign
      27. | `SubAssign
      28. | `ShlAssign
      29. | `ShrAssign
      30. | `AndAssign
      31. | `XorAssign
      32. | `OrAssign
      33. | `Comma
      ]
      type binary_operator_info = {
      1. boi_kind : binary_operator_kind;
      }
      type builtin_type_kind = [
      1. | `Void
      2. | `Bool
      3. | `Char_U
      4. | `UChar
      5. | `WChar_U
      6. | `Char8
      7. | `Char16
      8. | `Char32
      9. | `UShort
      10. | `UInt
      11. | `ULong
      12. | `ULongLong
      13. | `UInt128
      14. | `Char_S
      15. | `SChar
      16. | `WChar_S
      17. | `Short
      18. | `Int
      19. | `Long
      20. | `LongLong
      21. | `Int128
      22. | `ShortAccum
      23. | `Accum
      24. | `LongAccum
      25. | `UShortAccum
      26. | `UAccum
      27. | `ULongAccum
      28. | `ShortFract
      29. | `Fract
      30. | `LongFract
      31. | `UShortFract
      32. | `UFract
      33. | `ULongFract
      34. | `SatShortAccum
      35. | `SatAccum
      36. | `SatLongAccum
      37. | `SatUShortAccum
      38. | `SatUAccum
      39. | `SatULongAccum
      40. | `SatShortFract
      41. | `SatFract
      42. | `SatLongFract
      43. | `SatUShortFract
      44. | `SatUFract
      45. | `SatULongFract
      46. | `Half
      47. | `Float
      48. | `Double
      49. | `LongDouble
      50. | `Float16
      51. | `BFloat16
      52. | `Float128
      53. | `Ibm128
      54. | `NullPtr
      55. | `ObjCId
      56. | `ObjCClass
      57. | `ObjCSel
      58. | `OCLSampler
      59. | `OCLEvent
      60. | `OCLClkEvent
      61. | `OCLQueue
      62. | `OCLReserveID
      63. | `Dependent
      64. | `Overload
      65. | `BoundMember
      66. | `PseudoObject
      67. | `UnknownAny
      68. | `BuiltinFn
      69. | `ARCUnbridgedCast
      70. | `IncompleteMatrixIdx
      71. | `OMPArraySection
      72. | `OMPArrayShaping
      73. | `OMPIterator
      74. | `SveInt8
      75. | `SveInt16
      76. | `SveInt32
      77. | `SveInt64
      78. | `SveUint8
      79. | `SveUint16
      80. | `SveUint32
      81. | `SveUint64
      82. | `SveFloat16
      83. | `SveFloat32
      84. | `SveFloat64
      85. | `SveBFloat16
      86. | `SveInt8x2
      87. | `SveInt16x2
      88. | `SveInt32x2
      89. | `SveInt64x2
      90. | `SveUint8x2
      91. | `SveUint16x2
      92. | `SveUint32x2
      93. | `SveUint64x2
      94. | `SveFloat16x2
      95. | `SveFloat32x2
      96. | `SveFloat64x2
      97. | `SveBFloat16x2
      98. | `SveInt8x3
      99. | `SveInt16x3
      100. | `SveInt32x3
      101. | `SveInt64x3
      102. | `SveUint8x3
      103. | `SveUint16x3
      104. | `SveUint32x3
      105. | `SveUint64x3
      106. | `SveFloat16x3
      107. | `SveFloat32x3
      108. | `SveFloat64x3
      109. | `SveBFloat16x3
      110. | `SveInt8x4
      111. | `SveInt16x4
      112. | `SveInt32x4
      113. | `SveInt64x4
      114. | `SveUint8x4
      115. | `SveUint16x4
      116. | `SveUint32x4
      117. | `SveUint64x4
      118. | `SveFloat16x4
      119. | `SveFloat32x4
      120. | `SveFloat64x4
      121. | `SveBFloat16x4
      122. | `SveBool
      123. | `SveBoolx2
      124. | `SveBoolx4
      125. | `SveCount
      ]
      type cast_kind = [
      1. | `Dependent
      2. | `BitCast
      3. | `LValueBitCast
      4. | `LValueToRValueBitCast
      5. | `LValueToRValue
      6. | `NoOp
      7. | `BaseToDerived
      8. | `DerivedToBase
      9. | `UncheckedDerivedToBase
      10. | `Dynamic
      11. | `ToUnion
      12. | `ArrayToPointerDecay
      13. | `FunctionToPointerDecay
      14. | `NullToPointer
      15. | `NullToMemberPointer
      16. | `BaseToDerivedMemberPointer
      17. | `DerivedToBaseMemberPointer
      18. | `MemberPointerToBoolean
      19. | `ReinterpretMemberPointer
      20. | `UserDefinedConversion
      21. | `ConstructorConversion
      22. | `IntegralToPointer
      23. | `PointerToIntegral
      24. | `PointerToBoolean
      25. | `ToVoid
      26. | `MatrixCast
      27. | `VectorSplat
      28. | `IntegralCast
      29. | `IntegralToBoolean
      30. | `IntegralToFloating
      31. | `FloatingToFixedPoint
      32. | `FixedPointToFloating
      33. | `FixedPointCast
      34. | `FixedPointToIntegral
      35. | `IntegralToFixedPoint
      36. | `FixedPointToBoolean
      37. | `FloatingToIntegral
      38. | `FloatingToBoolean
      39. | `BooleanToSignedIntegral
      40. | `FloatingCast
      41. | `CPointerToObjCPointerCast
      42. | `BlockPointerToObjCPointerCast
      43. | `AnyPointerToBlockPointerCast
      44. | `ObjCObjectLValueCast
      45. | `FloatingRealToComplex
      46. | `FloatingComplexToReal
      47. | `FloatingComplexToBoolean
      48. | `FloatingComplexCast
      49. | `FloatingComplexToIntegralComplex
      50. | `IntegralRealToComplex
      51. | `IntegralComplexToReal
      52. | `IntegralComplexToBoolean
      53. | `IntegralComplexCast
      54. | `IntegralComplexToFloatingComplex
      55. | `ARCProduceObject
      56. | `ARCConsumeObject
      57. | `ARCReclaimReturnedObject
      58. | `ARCExtendBlockObject
      59. | `AtomicToNonAtomic
      60. | `NonAtomicToAtomic
      61. | `CopyAndAutoreleaseBlockObject
      62. | `BuiltinFnToFnPtr
      63. | `ZeroToOCLOpaqueType
      64. | `AddressSpaceConversion
      65. | `IntToOCLSampler
      ]
      type cxx_base_specifier = {
      1. xbs_name : string;
      2. xbs_virtual : bool;
      }
      type cast_expr_info = {
      1. cei_cast_kind : cast_kind;
      2. cei_base_path : cxx_base_specifier list;
      }
      type cxx_noexcept_expr_info = {
      1. xnee_value : bool;
      }
      type decl_context_info = {
      1. dci_has_external_lexical_storage : bool;
      2. dci_has_external_visible_storage : bool;
      }
      type decl_kind = [
      1. | `TranslationUnit
      2. | `RequiresExprBody
      3. | `LinkageSpec
      4. | `ExternCContext
      5. | `Export
      6. | `Captured
      7. | `Block
      8. | `TopLevelStmt
      9. | `StaticAssert
      10. | `PragmaDetectMismatch
      11. | `PragmaComment
      12. | `ObjCPropertyImpl
      13. | `OMPThreadPrivate
      14. | `OMPRequires
      15. | `OMPAllocate
      16. | `Named
      17. | `ObjCMethod
      18. | `ObjCContainer
      19. | `ObjCProtocol
      20. | `ObjCInterface
      21. | `ObjCImpl
      22. | `ObjCImplementation
      23. | `ObjCCategoryImpl
      24. | `ObjCCategory
      25. | `Namespace
      26. | `HLSLBuffer
      27. | `Value
      28. | `OMPDeclareReduction
      29. | `OMPDeclareMapper
      30. | `UnresolvedUsingValue
      31. | `UnnamedGlobalConstant
      32. | `TemplateParamObject
      33. | `MSGuid
      34. | `IndirectField
      35. | `EnumConstant
      36. | `Declarator
      37. | `Function
      38. | `CXXMethod
      39. | `CXXDestructor
      40. | `CXXConversion
      41. | `CXXConstructor
      42. | `CXXDeductionGuide
      43. | `Var
      44. | `VarTemplateSpecialization
      45. | `VarTemplatePartialSpecialization
      46. | `ParmVar
      47. | `OMPCapturedExpr
      48. | `ImplicitParam
      49. | `Decomposition
      50. | `NonTypeTemplateParm
      51. | `MSProperty
      52. | `Field
      53. | `ObjCIvar
      54. | `ObjCAtDefsField
      55. | `Binding
      56. | `UsingShadow
      57. | `ConstructorUsingShadow
      58. | `UsingPack
      59. | `UsingDirective
      60. | `UnresolvedUsingIfExists
      61. | `Type
      62. | `Tag
      63. | `Record
      64. | `CXXRecord
      65. | `ClassTemplateSpecialization
      66. | `ClassTemplatePartialSpecialization
      67. | `Enum
      68. | `UnresolvedUsingTypename
      69. | `TypedefName
      70. | `Typedef
      71. | `TypeAlias
      72. | `ObjCTypeParam
      73. | `TemplateTypeParm
      74. | `Template
      75. | `TemplateTemplateParm
      76. | `RedeclarableTemplate
      77. | `VarTemplate
      78. | `TypeAliasTemplate
      79. | `FunctionTemplate
      80. | `ClassTemplate
      81. | `Concept
      82. | `BuiltinTemplate
      83. | `ObjCProperty
      84. | `ObjCCompatibleAlias
      85. | `NamespaceAlias
      86. | `Label
      87. | `BaseUsing
      88. | `UsingEnum
      89. | `Using
      90. | `LifetimeExtendedTemporary
      91. | `Import
      92. | `ImplicitConceptSpecialization
      93. | `FriendTemplate
      94. | `Friend
      95. | `FileScopeAsm
      96. | `Empty
      97. | `AccessSpec
      ]
      type declaration_name_kind = [
      1. | `Identifier
      2. | `ObjCZeroArgSelector
      3. | `ObjCOneArgSelector
      4. | `ObjCMultiArgSelector
      5. | `CXXConstructorName
      6. | `CXXDestructorName
      7. | `CXXConversionFunctionName
      8. | `CXXOperatorName
      9. | `CXXLiteralOperatorName
      10. | `CXXUsingDirective
      11. | `CXXDeductionGuideName
      ]
      type declaration_name = {
      1. dn_kind : declaration_name_kind;
      2. dn_name : string;
      }
      type enum_decl_scope = [
      1. | `Class
      2. | `Struct
      ]
      type enum_decl_info = {
      1. edi_scope : enum_decl_scope option;
      2. edi_is_module_private : bool;
      }
      type input_kind = [
      1. | `IK_None
      2. | `IK_Asm
      3. | `IK_C
      4. | `IK_CXX
      5. | `IK_ObjC
      6. | `IK_ObjCXX
      7. | `IK_OpenCL
      8. | `IK_CUDA
      9. | `IK_HIP
      10. | `IK_RenderScript
      11. | `IK_LLVM_IR
      12. | `IK_HLSL
      ]
      type integer_literal_info = {
      1. ili_is_signed : bool;
      2. ili_bitwidth : int;
      3. ili_value : string;
      }
      type integer_type_widths = {
      1. itw_char_type : int;
      2. itw_short_type : int;
      3. itw_int_type : int;
      4. itw_long_type : int;
      5. itw_longlong_type : int;
      }
      type lambda_capture_kind = [
      1. | `LCK_This
      2. | `LCK_ByCopy
      3. | `LCK_ByRef
      4. | `LCK_VLAType
      5. | `LCK_StarThis
      ]
      type named_decl_info = {
      1. ni_name : string;
      2. ni_qual_name : string list;
      }
      type obj_c_access_control = [
      1. | `None
      2. | `Private
      3. | `Protected
      4. | `Public
      5. | `Package
      ]
      type obj_c_availability_check_expr_info = {
      1. oacei_version : string option;
      }
      type obj_c_bridge_cast_kind = [
      1. | `OBC_BridgeRetained
      2. | `OBC_Bridge
      3. | `OBC_BridgeTransfer
      ]
      type obj_c_bridged_cast_expr_info = {
      1. obcei_cast_kind : obj_c_bridge_cast_kind;
      }
      type obj_c_ivar_decl_info = {
      1. ovdi_is_synthesize : bool;
      2. ovdi_access_control : obj_c_access_control;
      }
      type obj_c_property_control = [
      1. | `None
      2. | `Required
      3. | `Optional
      ]
      type obj_c_subscript_kind = [
      1. | `ArraySubscript
      2. | `DictionarySubscript
      ]
      type objc_lifetime_attr = [
      1. | `OCL_None
      2. | `OCL_ExplicitNone
      3. | `OCL_Strong
      4. | `OCL_Weak
      5. | `OCL_Autoreleasing
      ]
      type attr_type_info = {
      1. ati_attr_kind : attribute_kind;
      2. ati_lifetime : objc_lifetime_attr;
      }
      type object_kind = [
      1. | `Ordinary
      2. | `BitField
      3. | `ObjCProperty
      4. | `ObjCSubscript
      5. | `VectorComponent
      ]
      type offset_of_expr_info = {
      1. ooe_literal : integer_literal_info option;
      }
      type pointer = int
      type addr_label_expr_info = {
      1. alei_label : string;
      2. alei_pointer : pointer;
      }
      type cxx_new_expr_info = {
      1. xnei_is_array : bool;
      2. xnei_array_size_expr : pointer option;
      3. xnei_initializer_expr : pointer option;
      4. xnei_placement_args : pointer list;
      }
      type cxx_temporary = pointer
      type cxx_bind_temporary_expr_info = {
      1. xbtei_cxx_temporary : cxx_temporary;
      }
      type goto_stmt_info = {
      1. gsi_label : string;
      2. gsi_pointer : pointer;
      }
      type obj_c_array_literal_expr_info = {
      1. oalei_array_method : pointer option;
      }
      type obj_c_dictionary_literal_expr_info = {
      1. odlei_dict_method : pointer option;
      }
      type predefined_expr_type = [
      1. | `Func
      2. | `Function
      3. | `LFunction
      4. | `FuncDName
      5. | `FuncSig
      6. | `LFuncSig
      7. | `PrettyFunction
      8. | `PrettyFunctionNoVirtual
      ]
      type property_attribute = [
      1. | `Readonly
      2. | `Assign
      3. | `Readwrite
      4. | `Retain
      5. | `Copy
      6. | `Nonatomic
      7. | `Atomic
      8. | `Weak
      9. | `Strong
      10. | `Unsafe_unretained
      11. | `ExplicitGetter
      12. | `ExplicitSetter
      ]
      type property_implementation = [
      1. | `Synthesize
      2. | `Dynamic
      ]
      type record_decl_info = {
      1. rdi_definition_ptr : pointer;
      2. rdi_is_module_private : bool;
      3. rdi_is_complete_definition : bool;
      4. rdi_is_dependent_type : bool;
      }
      type selector = string
      type obj_c_method_ref_info = {
      1. mri_getter : selector option;
      2. mri_setter : selector option;
      }
      type obj_c_subscript_ref_expr_info = {
      1. osrei_kind : obj_c_subscript_kind;
      2. osrei_getter : selector option;
      3. osrei_setter : selector option;
      }
      type objc_boxed_expr_info = {
      1. obei_boxing_method : selector option;
      }
      type sentinel_attr_info = {
      1. sai_sentinel : int;
      2. sai_null_pos : int;
      }
      type source_file = string
      type source_location = {
      1. mutable sl_file : source_file option;
      2. mutable sl_line : int option;
      3. mutable sl_column : int option;
      4. sl_is_macro : bool;
      5. mutable sl_macro_file : source_file option;
      6. mutable sl_macro_line : int option;
      }
      type source_range = source_location * source_location
      type attribute_info = {
      1. ai_pointer : pointer;
      2. ai_source_range : source_range;
      }
      type attr_tuple = attribute_info
      type comment_info = {
      1. ci_parent_pointer : pointer;
      2. ci_source_range : source_range;
      }
      type specifier_kind = [
      1. | `Identifier
      2. | `Namespace
      3. | `NamespaceAlias
      4. | `TypeSpec
      5. | `TypeSpecWithTemplate
      6. | `Global
      7. | `Super
      ]
      type stmt_info = {
      1. si_pointer : pointer;
      2. si_source_range : source_range;
      }
      type tag_kind = [
      1. | `TTK_Struct
      2. | `TTK_Interface
      3. | `TTK_Union
      4. | `TTK_Class
      5. | `TTK_Enum
      ]
      type qual_type = {
      1. qt_type_ptr : type_ptr;
      2. qt_is_const : bool;
      3. qt_is_restrict : bool;
      4. qt_is_volatile : bool;
      }
      type array_type_info = {
      1. arti_element_type : qual_type;
      2. arti_stride : int option;
      }
      type compound_assign_operator_info = {
      1. caoi_lhs_type : qual_type;
      2. caoi_result_type : qual_type;
      }
      type cxx_delete_expr_info = {
      1. xdei_is_array : bool;
      2. xdei_destroyed_type : qual_type;
      }
      type decl_ref = {
      1. dr_kind : decl_kind;
      2. dr_decl_pointer : pointer;
      3. dr_name : named_decl_info option;
      4. dr_is_hidden : bool;
      5. dr_qual_type : qual_type option;
      }
      type cxx_construct_expr_info = {
      1. xcei_decl_ref : decl_ref;
      2. xcei_is_elidable : bool;
      3. xcei_requires_zero_initialization : bool;
      4. xcei_is_copy_constructor : bool;
      }
      type cxx_ctor_initializer_subject = [
      1. | `Member of decl_ref
      2. | `Delegating of type_ptr
      3. | `BaseClass of type_ptr * bool
      ]
      type decl_ref_expr_info = {
      1. drti_decl_ref : decl_ref option;
      2. drti_found_decl_ref : decl_ref option;
      }
      type expr_with_cleanups_info = {
      1. ewci_decl_refs : decl_ref list;
      }
      type function_type_info = {
      1. fti_return_type : qual_type;
      }
      type materialize_temporary_expr_info = {
      1. mtei_decl_ref : decl_ref option;
      }
      type member_expr_info = {
      1. mei_is_arrow : bool;
      2. mei_performs_virtual_dispatch : bool;
      3. mei_name : named_decl_info;
      4. mei_decl_ref : decl_ref;
      }
      type namespace_decl_info = {
      1. ndi_is_inline : bool;
      2. ndi_original_namespace : decl_ref option;
      }
      type nested_name_specifier_loc = {
      1. nnsl_kind : specifier_kind;
      2. nnsl_ref : decl_ref option;
      }
      type namespace_alias_decl_info = {
      1. nadi_namespace_loc : source_location;
      2. nadi_target_name_loc : source_location;
      3. nadi_nested_name_specifier_locs : nested_name_specifier_loc list;
      4. nadi_namespace : decl_ref;
      }
      type obj_c_category_decl_info = {
      1. odi_class_interface : decl_ref option;
      2. odi_implementation : decl_ref option;
      3. odi_protocols : decl_ref list;
      }
      type obj_c_category_impl_decl_info = {
      1. ocidi_class_interface : decl_ref option;
      2. ocidi_category_decl : decl_ref option;
      }
      type obj_c_compatible_alias_decl_info = {
      1. ocadi_class_interface : decl_ref option;
      }
      type obj_c_interface_decl_info = {
      1. otdi_super : decl_ref option;
      2. otdi_implementation : decl_ref option;
      3. otdi_protocols : decl_ref list;
      4. otdi_known_categories : decl_ref list;
      }
      type obj_c_ivar_ref_expr_info = {
      1. ovrei_decl_ref : decl_ref;
      2. ovrei_pointer : pointer;
      3. ovrei_is_free_ivar : bool;
      }
      type obj_c_property_decl_info = {
      1. opdi_qual_type : qual_type;
      2. opdi_getter_method : decl_ref option;
      3. opdi_setter_method : decl_ref option;
      4. opdi_ivar_decl : decl_ref option;
      5. opdi_property_control : obj_c_property_control;
      6. opdi_property_attributes : property_attribute list;
      }
      type obj_c_property_impl_decl_info = {
      1. opidi_implementation : property_implementation;
      2. opidi_property_decl : decl_ref option;
      3. opidi_ivar_decl : decl_ref option;
      }
      type obj_c_protocol_decl_info = {
      1. opcdi_protocols : decl_ref list;
      }
      type objc_encode_expr_info = {
      1. oeei_qual_type : qual_type;
      2. oeei_raw : string;
      }
      type objc_object_type_info = {
      1. ooti_base_type : type_ptr;
      2. ooti_protocol_decls_ptr : pointer list;
      3. ooti_type_args : qual_type list;
      }
      type overload_expr_info = {
      1. oei_decls : decl_ref list;
      2. oei_name : declaration_name;
      }
      type params_type_info = {
      1. pti_params_type : qual_type list;
      }
      type property_ref_kind = [
      1. | `MethodRef of obj_c_method_ref_info
      2. | `PropertyRef of decl_ref
      ]
      type obj_c_property_ref_expr_info = {
      1. oprei_kind : property_ref_kind;
      2. oprei_is_super_receiver : bool;
      3. oprei_is_messaging_getter : bool;
      4. oprei_is_messaging_setter : bool;
      }
      type receiver_kind = [
      1. | `Instance
      2. | `Class of qual_type
      3. | `SuperInstance
      4. | `SuperClass
      ]
      type obj_c_message_expr_info = {
      1. omei_selector : string;
      2. omei_is_definition_found : bool;
      3. omei_decl_pointer : pointer option;
      4. omei_receiver_kind : receiver_kind;
      }
      type type_info = {
      1. ti_pointer : pointer;
      2. ti_desugared_type : type_ptr option;
      }
      type type_trait_info = {
      1. xtti_value : bool;
      }
      type typedef_decl_info = {
      1. tdi_is_module_private : bool;
      }
      type typedef_type_info = {
      1. tti_child_type : qual_type;
      2. tti_decl_ptr : pointer;
      }
      type c_type =
      1. | NoneType of type_info
      2. | AdjustedType of type_info * qual_type
      3. | DecayedType of type_info * qual_type
      4. | ConstantArrayType of type_info * array_type_info * int
      5. | DependentSizedArrayType of type_info * array_type_info
      6. | IncompleteArrayType of type_info * array_type_info
      7. | VariableArrayType of type_info * array_type_info * pointer
      8. | AtomicType of type_info * qual_type
      9. | AttributedType of type_info * attr_type_info
      10. | BTFTagAttributedType of type_info
      11. | BitIntType of type_info
      12. | BlockPointerType of type_info * qual_type
      13. | BuiltinType of type_info * builtin_type_kind
      14. | ComplexType of type_info
      15. | DecltypeType of type_info * qual_type
      16. | AutoType of type_info
      17. | DeducedTemplateSpecializationType of type_info
      18. | DependentAddressSpaceType of type_info
      19. | DependentBitIntType of type_info
      20. | DependentNameType of type_info
      21. | DependentSizedExtVectorType of type_info
      22. | DependentTemplateSpecializationType of type_info
      23. | DependentVectorType of type_info
      24. | ElaboratedType of type_info
      25. | FunctionNoProtoType of type_info * function_type_info
      26. | FunctionProtoType of type_info * function_type_info * params_type_info
      27. | InjectedClassNameType of type_info
      28. | MacroQualifiedType of type_info
      29. | ConstantMatrixType of type_info
      30. | DependentSizedMatrixType of type_info
      31. | MemberPointerType of type_info * qual_type
      32. | ObjCObjectPointerType of type_info * qual_type
      33. | ObjCObjectType of type_info * objc_object_type_info
      34. | ObjCInterfaceType of type_info * pointer
      35. | ObjCTypeParamType of type_info
      36. | PackExpansionType of type_info
      37. | ParenType of type_info * qual_type
      38. | PipeType of type_info
      39. | PointerType of type_info * qual_type
      40. | LValueReferenceType of type_info * qual_type
      41. | RValueReferenceType of type_info * qual_type
      42. | SubstTemplateTypeParmPackType of type_info
      43. | SubstTemplateTypeParmType of type_info
      44. | EnumType of type_info * pointer
      45. | RecordType of type_info * pointer
      46. | TemplateSpecializationType of type_info
      47. | TemplateTypeParmType of type_info
      48. | TypeOfExprType of type_info
      49. | TypeOfType of type_info
      50. | TypedefType of type_info * typedef_type_info
      51. | UnaryTransformType of type_info
      52. | UnresolvedUsingType of type_info
      53. | UsingType of type_info
      54. | VectorType of type_info
      55. | ExtVectorType of type_info
      type translation_unit_decl_info = {
      1. tudi_input_path : source_file;
      2. tudi_input_kind : input_kind;
      3. tudi_integer_type_widths : integer_type_widths;
      4. tudi_is_objc_arc_on : bool;
      5. tudi_types : c_type list;
      }
      type unary_expr_or_type_trait_kind = [
      1. | `AlignOf
      2. | `OpenMPRequiredSimdAlign
      3. | `PreferredAlignOf
      4. | `SizeOf
      5. | `SizeOfWithSize of int
      6. | `VecStep
      7. | `VectorElements
      ]
      type unary_expr_or_type_trait_expr_info = {
      1. uttei_kind : unary_expr_or_type_trait_kind;
      2. uttei_qual_type : qual_type;
      }
      type unary_operator_kind = [
      1. | `PostInc
      2. | `PostDec
      3. | `PreInc
      4. | `PreDec
      5. | `AddrOf
      6. | `Deref
      7. | `Plus
      8. | `Minus
      9. | `Not
      10. | `LNot
      11. | `Real
      12. | `Imag
      13. | `Extension
      14. | `Coawait
      ]
      type unary_operator_info = {
      1. uoi_kind : unary_operator_kind;
      2. uoi_is_postfix : bool;
      }
      type unresolved_lookup_expr_info = {
      1. ulei_requires_ADL : bool;
      2. ulei_is_overloaded : bool;
      3. ulei_naming_class : decl_ref option;
      }
      type using_directive_decl_info = {
      1. uddi_using_location : source_location;
      2. uddi_namespace_key_location : source_location;
      3. uddi_nested_name_specifier_locs : nested_name_specifier_loc list;
      4. uddi_nominated_namespace : decl_ref option;
      }
      type value_kind = [
      1. | `RValue
      2. | `LValue
      3. | `XValue
      ]
      type expr_info = {
      1. ei_qual_type : qual_type;
      2. ei_value_kind : value_kind;
      3. ei_object_kind : object_kind;
      }
      type version_tuple = {
      1. vt_major : int;
      2. vt_minor : int option;
      3. vt_subminor : int option;
      4. vt_build : int option;
      }
      type availability_attr_info = {
      1. aai_platform : string option;
      2. aai_introduced : version_tuple;
      }
      type visibility_attr =
      1. | DefaultVisibility
      2. | HiddenVisibility
      3. | ProtectedVisibility
      type attribute = [
      1. | `AddressSpaceAttr of attribute_info
      2. | `AnnotateTypeAttr of attribute_info
      3. | `ArmInAttr of attribute_info
      4. | `ArmInOutAttr of attribute_info
      5. | `ArmMveStrictPolymorphismAttr of attribute_info
      6. | `ArmOutAttr of attribute_info
      7. | `ArmPreservesAttr of attribute_info
      8. | `ArmStreamingAttr of attribute_info
      9. | `ArmStreamingCompatibleAttr of attribute_info
      10. | `BTFTypeTagAttr of attribute_info
      11. | `CmseNSCallAttr of attribute_info
      12. | `HLSLGroupSharedAddressSpaceAttr of attribute_info
      13. | `HLSLParamModifierAttr of attribute_info
      14. | `NoDerefAttr of attribute_info
      15. | `ObjCGCAttr of attribute_info
      16. | `ObjCInertUnsafeUnretainedAttr of attribute_info
      17. | `ObjCKindOfAttr of attribute_info
      18. | `OpenCLConstantAddressSpaceAttr of attribute_info
      19. | `OpenCLGenericAddressSpaceAttr of attribute_info
      20. | `OpenCLGlobalAddressSpaceAttr of attribute_info
      21. | `OpenCLGlobalDeviceAddressSpaceAttr of attribute_info
      22. | `OpenCLGlobalHostAddressSpaceAttr of attribute_info
      23. | `OpenCLLocalAddressSpaceAttr of attribute_info
      24. | `OpenCLPrivateAddressSpaceAttr of attribute_info
      25. | `Ptr32Attr of attribute_info
      26. | `Ptr64Attr of attribute_info
      27. | `SPtrAttr of attribute_info
      28. | `TypeNonNullAttr of attribute_info
      29. | `TypeNullUnspecifiedAttr of attribute_info
      30. | `TypeNullableAttr of attribute_info
      31. | `TypeNullableResultAttr of attribute_info
      32. | `UPtrAttr of attribute_info
      33. | `WebAssemblyFuncrefAttr of attribute_info
      34. | `CodeAlignAttr of attribute_info
      35. | `FallThroughAttr of attribute_info
      36. | `LikelyAttr of attribute_info
      37. | `MustTailAttr of attribute_info
      38. | `OpenCLUnrollHintAttr of attribute_info
      39. | `UnlikelyAttr of attribute_info
      40. | `AlwaysInlineAttr of attribute_info
      41. | `NoInlineAttr of attribute_info
      42. | `NoMergeAttr of attribute_info
      43. | `SuppressAttr of attribute_info
      44. | `AArch64SVEPcsAttr of attribute_info
      45. | `AArch64VectorPcsAttr of attribute_info
      46. | `AMDGPUKernelCallAttr of attribute_info
      47. | `AcquireHandleAttr of attribute_info
      48. | `AnyX86NoCfCheckAttr of attribute_info
      49. | `CDeclAttr of attribute_info
      50. | `FastCallAttr of attribute_info
      51. | `IntelOclBiccAttr of attribute_info
      52. | `LifetimeBoundAttr of attribute_info
      53. | `M68kRTDAttr of attribute_info
      54. | `MSABIAttr of attribute_info
      55. | `NSReturnsRetainedAttr of attribute_info
      56. | `ObjCOwnershipAttr of attribute_info
      57. | `PascalAttr of attribute_info
      58. | `PcsAttr of attribute_info
      59. | `PreserveAllAttr of attribute_info
      60. | `PreserveMostAttr of attribute_info
      61. | `RegCallAttr of attribute_info
      62. | `StdCallAttr of attribute_info
      63. | `SwiftAsyncCallAttr of attribute_info
      64. | `SwiftCallAttr of attribute_info
      65. | `SysVABIAttr of attribute_info
      66. | `ThisCallAttr of attribute_info
      67. | `VectorCallAttr of attribute_info
      68. | `SwiftAsyncContextAttr of attribute_info
      69. | `SwiftContextAttr of attribute_info
      70. | `SwiftErrorResultAttr of attribute_info
      71. | `SwiftIndirectResultAttr of attribute_info
      72. | `AnnotateAttr of attr_tuple * string
      73. | `CFConsumedAttr of attribute_info
      74. | `CarriesDependencyAttr of attribute_info
      75. | `NSConsumedAttr of attribute_info
      76. | `NonNullAttr of attribute_info
      77. | `OSConsumedAttr of attribute_info
      78. | `PassObjectSizeAttr of attribute_info
      79. | `ReleaseHandleAttr of attribute_info
      80. | `UseHandleAttr of attribute_info
      81. | `HLSLSV_DispatchThreadIDAttr of attribute_info
      82. | `HLSLSV_GroupIndexAttr of attribute_info
      83. | `AMDGPUFlatWorkGroupSizeAttr of attribute_info
      84. | `AMDGPUNumSGPRAttr of attribute_info
      85. | `AMDGPUNumVGPRAttr of attribute_info
      86. | `AMDGPUWavesPerEUAttr of attribute_info
      87. | `ARMInterruptAttr of attribute_info
      88. | `AVRInterruptAttr of attribute_info
      89. | `AVRSignalAttr of attribute_info
      90. | `AcquireCapabilityAttr of attribute_info
      91. | `AcquiredAfterAttr of attribute_info
      92. | `AcquiredBeforeAttr of attribute_info
      93. | `AlignMac68kAttr of attribute_info
      94. | `AlignNaturalAttr of attribute_info
      95. | `AlignedAttr of attribute_info
      96. | `AllocAlignAttr of attribute_info
      97. | `AllocSizeAttr of attribute_info
      98. | `AlwaysDestroyAttr of attribute_info
      99. | `AnalyzerNoReturnAttr of attribute_info
      100. | `AnyX86InterruptAttr of attribute_info
      101. | `AnyX86NoCallerSavedRegistersAttr of attribute_info
      102. | `ArcWeakrefUnavailableAttr of attribute_info
      103. | `ArgumentWithTypeTagAttr of attribute_info
      104. | `ArmBuiltinAliasAttr of attribute_info
      105. | `ArmLocallyStreamingAttr of attribute_info
      106. | `ArmNewAttr of attribute_info
      107. | `ArtificialAttr of attribute_info
      108. | `AsmLabelAttr of attribute_info
      109. | `AssertCapabilityAttr of attribute_info
      110. | `AssertExclusiveLockAttr of attribute_info
      111. | `AssertSharedLockAttr of attribute_info
      112. | `AssumeAlignedAttr of attribute_info
      113. | `AssumptionAttr of attribute_info
      114. | `AvailabilityAttr of attr_tuple * availability_attr_info
      115. | `AvailableOnlyInDefaultEvalMethodAttr of attribute_info
      116. | `BPFPreserveAccessIndexAttr of attribute_info
      117. | `BPFPreserveStaticOffsetAttr of attribute_info
      118. | `BTFDeclTagAttr of attribute_info
      119. | `BlocksAttr of attribute_info
      120. | `BuiltinAttr of attribute_info
      121. | `C11NoReturnAttr of attribute_info
      122. | `CFAuditedTransferAttr of attribute_info
      123. | `CFGuardAttr of attribute_info
      124. | `CFICanonicalJumpTableAttr of attribute_info
      125. | `CFReturnsNotRetainedAttr of attribute_info
      126. | `CFReturnsRetainedAttr of attribute_info
      127. | `CFUnknownTransferAttr of attribute_info
      128. | `CPUDispatchAttr of attribute_info
      129. | `CPUSpecificAttr of attribute_info
      130. | `CUDAConstantAttr of attribute_info
      131. | `CUDADeviceAttr of attribute_info
      132. | `CUDADeviceBuiltinSurfaceTypeAttr of attribute_info
      133. | `CUDADeviceBuiltinTextureTypeAttr of attribute_info
      134. | `CUDAGlobalAttr of attribute_info
      135. | `CUDAHostAttr of attribute_info
      136. | `CUDAInvalidTargetAttr of attribute_info
      137. | `CUDALaunchBoundsAttr of attribute_info
      138. | `CUDASharedAttr of attribute_info
      139. | `CXX11NoReturnAttr of attribute_info
      140. | `CallableWhenAttr of attribute_info
      141. | `CallbackAttr of attribute_info
      142. | `CapabilityAttr of attribute_info
      143. | `CapturedRecordAttr of attribute_info
      144. | `CleanupAttr of attribute_info
      145. | `CmseNSEntryAttr of attribute_info
      146. | `CodeModelAttr of attribute_info
      147. | `CodeSegAttr of attribute_info
      148. | `ColdAttr of attribute_info
      149. | `CommonAttr of attribute_info
      150. | `ConstAttr of attribute_info
      151. | `ConstInitAttr of attribute_info
      152. | `ConstructorAttr of attribute_info
      153. | `ConsumableAttr of attribute_info
      154. | `ConsumableAutoCastAttr of attribute_info
      155. | `ConsumableSetOnReadAttr of attribute_info
      156. | `ConvergentAttr of attribute_info
      157. | `CoroDisableLifetimeBoundAttr of attribute_info
      158. | `CoroLifetimeBoundAttr of attribute_info
      159. | `CoroOnlyDestroyWhenCompleteAttr of attribute_info
      160. | `CoroReturnTypeAttr of attribute_info
      161. | `CoroWrapperAttr of attribute_info
      162. | `CountedByAttr of attribute_info
      163. | `DLLExportAttr of attribute_info
      164. | `DLLExportStaticLocalAttr of attribute_info
      165. | `DLLImportAttr of attribute_info
      166. | `DLLImportStaticLocalAttr of attribute_info
      167. | `DeprecatedAttr of attribute_info
      168. | `DestructorAttr of attribute_info
      169. | `DiagnoseAsBuiltinAttr of attribute_info
      170. | `DiagnoseIfAttr of attribute_info
      171. | `DisableSanitizerInstrumentationAttr of attribute_info
      172. | `DisableTailCallsAttr of attribute_info
      173. | `EmptyBasesAttr of attribute_info
      174. | `EnableIfAttr of attribute_info
      175. | `EnforceTCBAttr of attribute_info
      176. | `EnforceTCBLeafAttr of attribute_info
      177. | `EnumExtensibilityAttr of attribute_info
      178. | `ErrorAttr of attribute_info
      179. | `ExcludeFromExplicitInstantiationAttr of attribute_info
      180. | `ExclusiveTrylockFunctionAttr of attribute_info
      181. | `ExternalSourceSymbolAttr of attribute_info
      182. | `FinalAttr of attribute_info
      183. | `FlagEnumAttr of attribute_info
      184. | `FlattenAttr of attribute_info
      185. | `FormatAttr of attribute_info
      186. | `FormatArgAttr of attribute_info
      187. | `FunctionReturnThunksAttr of attribute_info
      188. | `GNUInlineAttr of attribute_info
      189. | `GuardedByAttr of attribute_info
      190. | `GuardedVarAttr of attribute_info
      191. | `HIPManagedAttr of attribute_info
      192. | `HLSLNumThreadsAttr of attribute_info
      193. | `HLSLResourceAttr of attribute_info
      194. | `HLSLResourceBindingAttr of attribute_info
      195. | `HLSLShaderAttr of attribute_info
      196. | `HotAttr of attribute_info
      197. | `IBActionAttr of attribute_info
      198. | `IBOutletAttr of attribute_info
      199. | `IBOutletCollectionAttr of attribute_info
      200. | `InitPriorityAttr of attribute_info
      201. | `InternalLinkageAttr of attribute_info
      202. | `LTOVisibilityPublicAttr of attribute_info
      203. | `LayoutVersionAttr of attribute_info
      204. | `LeafAttr of attribute_info
      205. | `LockReturnedAttr of attribute_info
      206. | `LocksExcludedAttr of attribute_info
      207. | `M68kInterruptAttr of attribute_info
      208. | `MIGServerRoutineAttr of attribute_info
      209. | `MSAllocatorAttr of attribute_info
      210. | `MSConstexprAttr of attribute_info
      211. | `MSInheritanceAttr of attribute_info
      212. | `MSNoVTableAttr of attribute_info
      213. | `MSP430InterruptAttr of attribute_info
      214. | `MSStructAttr of attribute_info
      215. | `MSVtorDispAttr of attribute_info
      216. | `MaxFieldAlignmentAttr of attribute_info
      217. | `MayAliasAttr of attribute_info
      218. | `MaybeUndefAttr of attribute_info
      219. | `MicroMipsAttr of attribute_info
      220. | `MinSizeAttr of attribute_info
      221. | `MinVectorWidthAttr of attribute_info
      222. | `Mips16Attr of attribute_info
      223. | `MipsInterruptAttr of attribute_info
      224. | `MipsLongCallAttr of attribute_info
      225. | `MipsShortCallAttr of attribute_info
      226. | `NSConsumesSelfAttr of attribute_info
      227. | `NSErrorDomainAttr of attribute_info
      228. | `NSReturnsAutoreleasedAttr of attribute_info
      229. | `NSReturnsNotRetainedAttr of attribute_info
      230. | `NVPTXKernelAttr of attribute_info
      231. | `NakedAttr of attribute_info
      232. | `NoAliasAttr of attribute_info
      233. | `NoCommonAttr of attribute_info
      234. | `NoDebugAttr of attribute_info
      235. | `NoDestroyAttr of attribute_info
      236. | `NoDuplicateAttr of attribute_info
      237. | `NoInstrumentFunctionAttr of attribute_info
      238. | `NoMicroMipsAttr of attribute_info
      239. | `NoMips16Attr of attribute_info
      240. | `NoProfileFunctionAttr of attribute_info
      241. | `NoRandomizeLayoutAttr of attribute_info
      242. | `NoReturnAttr of attribute_info
      243. | `NoSanitizeAttr of attribute_info
      244. | `NoSpeculativeLoadHardeningAttr of attribute_info
      245. | `NoSplitStackAttr of attribute_info
      246. | `NoStackProtectorAttr of attribute_info
      247. | `NoThreadSafetyAnalysisAttr of attribute_info
      248. | `NoThrowAttr of attribute_info
      249. | `NoUniqueAddressAttr of attribute_info
      250. | `NoUwtableAttr of attribute_info
      251. | `NotTailCalledAttr of attribute_info
      252. | `OMPAllocateDeclAttr of attribute_info
      253. | `OMPCaptureNoInitAttr of attribute_info
      254. | `OMPDeclareTargetDeclAttr of attribute_info
      255. | `OMPDeclareVariantAttr of attribute_info
      256. | `OMPThreadPrivateDeclAttr of attribute_info
      257. | `OSConsumesThisAttr of attribute_info
      258. | `OSReturnsNotRetainedAttr of attribute_info
      259. | `OSReturnsRetainedAttr of attribute_info
      260. | `OSReturnsRetainedOnNonZeroAttr of attribute_info
      261. | `OSReturnsRetainedOnZeroAttr of attribute_info
      262. | `ObjCBridgeAttr of attribute_info
      263. | `ObjCBridgeMutableAttr of attribute_info
      264. | `ObjCBridgeRelatedAttr of attribute_info
      265. | `ObjCExceptionAttr of attribute_info
      266. | `ObjCExplicitProtocolImplAttr of attribute_info
      267. | `ObjCExternallyRetainedAttr of attribute_info
      268. | `ObjCIndependentClassAttr of attribute_info
      269. | `ObjCMethodFamilyAttr of attribute_info
      270. | `ObjCNSObjectAttr of attribute_info
      271. | `ObjCPreciseLifetimeAttr of attribute_info
      272. | `ObjCRequiresPropertyDefsAttr of attribute_info
      273. | `ObjCRequiresSuperAttr of attribute_info
      274. | `ObjCReturnsInnerPointerAttr of attribute_info
      275. | `ObjCRootClassAttr of attribute_info
      276. | `ObjCSubclassingRestrictedAttr of attribute_info
      277. | `OpenCLIntelReqdSubGroupSizeAttr of attribute_info
      278. | `OpenCLKernelAttr of attribute_info
      279. | `OptimizeNoneAttr of attribute_info
      280. | `OverrideAttr of attribute_info
      281. | `OwnerAttr of attribute_info
      282. | `OwnershipAttr of attribute_info
      283. | `PackedAttr of attribute_info
      284. | `ParamTypestateAttr of attribute_info
      285. | `PatchableFunctionEntryAttr of attribute_info
      286. | `PointerAttr of attribute_info
      287. | `PragmaClangBSSSectionAttr of attribute_info
      288. | `PragmaClangDataSectionAttr of attribute_info
      289. | `PragmaClangRelroSectionAttr of attribute_info
      290. | `PragmaClangRodataSectionAttr of attribute_info
      291. | `PragmaClangTextSectionAttr of attribute_info
      292. | `PreferredNameAttr of attribute_info
      293. | `PreferredTypeAttr of attribute_info
      294. | `PtGuardedByAttr of attribute_info
      295. | `PtGuardedVarAttr of attribute_info
      296. | `PureAttr of attribute_info
      297. | `RISCVInterruptAttr of attribute_info
      298. | `RandomizeLayoutAttr of attribute_info
      299. | `ReadOnlyPlacementAttr of attribute_info
      300. | `ReinitializesAttr of attribute_info
      301. | `ReleaseCapabilityAttr of attribute_info
      302. | `ReqdWorkGroupSizeAttr of attribute_info
      303. | `RequiresCapabilityAttr of attribute_info
      304. | `RestrictAttr of attribute_info
      305. | `RetainAttr of attribute_info
      306. | `ReturnTypestateAttr of attribute_info
      307. | `ReturnsNonNullAttr of attribute_info
      308. | `ReturnsTwiceAttr of attribute_info
      309. | `SYCLKernelAttr of attribute_info
      310. | `SYCLSpecialClassAttr of attribute_info
      311. | `ScopedLockableAttr of attribute_info
      312. | `SectionAttr of attribute_info
      313. | `SelectAnyAttr of attribute_info
      314. | `SentinelAttr of attr_tuple * sentinel_attr_info
      315. | `SetTypestateAttr of attribute_info
      316. | `SharedTrylockFunctionAttr of attribute_info
      317. | `SpeculativeLoadHardeningAttr of attribute_info
      318. | `StandaloneDebugAttr of attribute_info
      319. | `StrictFPAttr of attribute_info
      320. | `StrictGuardStackCheckAttr of attribute_info
      321. | `SwiftAsyncAttr of attribute_info
      322. | `SwiftAsyncErrorAttr of attribute_info
      323. | `SwiftAsyncNameAttr of attribute_info
      324. | `SwiftAttrAttr of attribute_info
      325. | `SwiftBridgeAttr of attribute_info
      326. | `SwiftBridgedTypedefAttr of attribute_info
      327. | `SwiftErrorAttr of attribute_info
      328. | `SwiftImportAsNonGenericAttr of attribute_info
      329. | `SwiftImportPropertyAsAccessorsAttr of attribute_info
      330. | `SwiftNameAttr of attribute_info
      331. | `SwiftNewTypeAttr of attribute_info
      332. | `SwiftPrivateAttr of attribute_info
      333. | `TLSModelAttr of attribute_info
      334. | `TargetAttr of attribute_info
      335. | `TargetClonesAttr of attribute_info
      336. | `TargetVersionAttr of attribute_info
      337. | `TestTypestateAttr of attribute_info
      338. | `TransparentUnionAttr of attribute_info
      339. | `TrivialABIAttr of attribute_info
      340. | `TryAcquireCapabilityAttr of attribute_info
      341. | `TypeTagForDatatypeAttr of attribute_info
      342. | `TypeVisibilityAttr of attribute_info
      343. | `UnavailableAttr of attribute_info
      344. | `UninitializedAttr of attribute_info
      345. | `UnsafeBufferUsageAttr of attribute_info
      346. | `UnusedAttr of attribute_info
      347. | `UsedAttr of attribute_info
      348. | `UsingIfExistsAttr of attribute_info
      349. | `UuidAttr of attribute_info
      350. | `VecReturnAttr of attribute_info
      351. | `VecTypeHintAttr of attribute_info
      352. | `VisibilityAttr of attr_tuple * visibility_attr
      353. | `WarnUnusedAttr of attribute_info
      354. | `WarnUnusedResultAttr of attribute_info
      355. | `WeakAttr of attribute_info
      356. | `WeakImportAttr of attribute_info
      357. | `WeakRefAttr of attribute_info
      358. | `WebAssemblyExportNameAttr of attribute_info
      359. | `WebAssemblyImportModuleAttr of attribute_info
      360. | `WebAssemblyImportNameAttr of attribute_info
      361. | `WorkGroupSizeHintAttr of attribute_info
      362. | `X86ForceAlignArgPointerAttr of attribute_info
      363. | `XRayInstrumentAttr of attribute_info
      364. | `XRayLogArgsAttr of attribute_info
      365. | `ZeroCallUsedRegsAttr of attribute_info
      366. | `AbiTagAttr of attribute_info
      367. | `AliasAttr of attribute_info
      368. | `AlignValueAttr of attribute_info
      369. | `BuiltinAliasAttr of attribute_info
      370. | `CalledOnceAttr of attribute_info
      371. | `IFuncAttr of attribute_info
      372. | `InitSegAttr of attribute_info
      373. | `LoaderUninitializedAttr of attribute_info
      374. | `LoopHintAttr of attribute_info
      375. | `ModeAttr of attribute_info
      376. | `NoBuiltinAttr of attribute_info
      377. | `NoEscapeAttr of attribute_info
      378. | `OMPCaptureKindAttr of attribute_info
      379. | `OMPDeclareSimdDeclAttr of attribute_info
      380. | `OMPReferencedVarAttr of attribute_info
      381. | `ObjCBoxableAttr of attribute_info
      382. | `ObjCClassStubAttr of attribute_info
      383. | `ObjCDesignatedInitializerAttr of attribute_info
      384. | `ObjCDirectAttr of attribute_info
      385. | `ObjCDirectMembersAttr of attribute_info
      386. | `ObjCNonLazyClassAttr of attribute_info
      387. | `ObjCNonRuntimeProtocolAttr of attribute_info
      388. | `ObjCRuntimeNameAttr of attribute_info
      389. | `ObjCRuntimeVisibleAttr of attribute_info
      390. | `OpenCLAccessAttr of attribute_info
      391. | `OverloadableAttr of attribute_info
      392. | `RenderScriptKernelAttr of attribute_info
      393. | `SwiftObjCMembersAttr of attribute_info
      394. | `SwiftVersionedAdditionAttr of attribute_info
      395. | `SwiftVersionedRemovalAttr of attribute_info
      396. | `ThreadAttr of attribute_info
      ]
      type template_instantiation_arg_info = [
      1. | `Null
      2. | `Type of qual_type
      3. | `Declaration of pointer
      4. | `NullPtr
      5. | `Integral of string
      6. | `Template
      7. | `TemplateExpansion
      8. | `Expression
      9. | `Pack of template_instantiation_arg_info list
      ]
      type comment =
      1. | VerbatimBlockLineComment of comment_info * comment list
      2. | TextComment of comment_info * comment list
      3. | InlineCommandComment of comment_info * comment list
      4. | HTMLStartTagComment of comment_info * comment list
      5. | HTMLEndTagComment of comment_info * comment list
      6. | FullComment of comment_info * comment list
      7. | ParagraphComment of comment_info * comment list
      8. | BlockCommandComment of comment_info * comment list
      9. | VerbatimLineComment of comment_info * comment list
      10. | VerbatimBlockComment of comment_info * comment list
      11. | TParamCommandComment of comment_info * comment list
      12. | ParamCommandComment of comment_info * comment list
      type template_specialization_info = {
      1. tsi_template_decl : pointer;
      2. tsi_specialization_args : template_instantiation_arg_info list;
      }
      type decl_info = {
      1. di_pointer : pointer;
      2. di_parent_pointer : pointer option;
      3. di_source_range : source_range;
      4. di_owning_module : string option;
      5. di_is_hidden : bool;
      6. di_is_implicit : bool;
      7. di_is_used : bool;
      8. di_is_this_declaration_referenced : bool;
      9. di_is_invalid_decl : bool;
      10. di_attributes : attribute list;
      11. di_full_comment : comment option;
      12. di_access : access_specifier;
      }
      type block_captured_variable = {
      1. bcv_is_by_ref : bool;
      2. bcv_is_nested : bool;
      3. bcv_variable : decl_ref option;
      4. bcv_copy_expr : stmt option;
      }
      and block_decl_info = {
      1. bdi_parameters : decl list;
      2. bdi_is_variadic : bool;
      3. bdi_captures_cxx_this : bool;
      4. bdi_captured_variables : block_captured_variable list;
      5. bdi_body : stmt option;
      6. bdi_mangled_name : string;
      }
      and coreturn_stmt_info = {
      1. coret_operand : stmt option;
      2. coret_promise_call : stmt option;
      }
      and coro_body_stmt_info = {
      1. cbs_body : pointer;
      2. cbs_promise_decl_stmt : pointer;
      3. cbs_return_value : stmt;
      }
      and cxx_catch_stmt_info = {
      1. xcsi_variable : decl option;
      }
      and cxx_ctor_initializer = {
      1. xci_subject : cxx_ctor_initializer_subject;
      2. xci_source_range : source_range;
      3. xci_init_expr : stmt option;
      }
      and cxx_default_expr_info = {
      1. xdaei_init_expr : stmt option;
      }
      and cxx_method_decl_info = {
      1. xmdi_is_virtual : bool;
      2. xmdi_is_static : bool;
      3. xmdi_is_const : bool;
      4. xmdi_is_copy_assignment : bool;
      5. xmdi_is_copy_constructor : bool;
      6. xmdi_is_move_constructor : bool;
      7. xmdi_cxx_ctor_initializers : cxx_ctor_initializer list;
      8. xmdi_overriden_methods : decl_ref list;
      }
      and cxx_record_decl_info = {
      1. xrdi_bases : type_ptr list;
      2. xrdi_vbases : type_ptr list;
      3. xrdi_transitive_vbases : type_ptr list;
      4. xrdi_is_pod : bool;
      5. xrdi_is_trivially_copyable : bool;
      6. xrdi_destructor : decl_ref option;
      7. xrdi_lambda_call_operator : decl_ref option;
      8. xrdi_lambda_captures : lambda_capture_info list;
      }
      and decl =
      1. | TranslationUnitDecl of decl_info * decl list * decl_context_info * translation_unit_decl_info
      2. | RequiresExprBodyDecl of decl_info
      3. | LinkageSpecDecl of decl_info * decl list * decl_context_info
      4. | ExternCContextDecl of decl_info
      5. | ExportDecl of decl_info
      6. | CapturedDecl of decl_info * decl list * decl_context_info
      7. | BlockDecl of decl_info * block_decl_info
      8. | TopLevelStmtDecl of decl_info
      9. | StaticAssertDecl of decl_info
      10. | PragmaDetectMismatchDecl of decl_info
      11. | PragmaCommentDecl of decl_info
      12. | ObjCPropertyImplDecl of decl_info * obj_c_property_impl_decl_info
      13. | OMPThreadPrivateDecl of decl_info
      14. | OMPRequiresDecl of decl_info
      15. | OMPAllocateDecl of decl_info
      16. | ObjCMethodDecl of decl_info * named_decl_info * obj_c_method_decl_info
      17. | ObjCProtocolDecl of decl_info @@ -108,7 +108,7 @@ * tag_kind * enum_decl_info
      18. | UnresolvedUsingTypenameDecl of decl_info * named_decl_info * type_ptr
      19. | TypedefDecl of decl_info * named_decl_info * type_ptr * typedef_decl_info
      20. | TypeAliasDecl of decl_info * named_decl_info * type_ptr
      21. | ObjCTypeParamDecl of decl_info * named_decl_info * type_ptr
      22. | TemplateTypeParmDecl of decl_info * named_decl_info * type_ptr
      23. | TemplateTemplateParmDecl of decl_info * named_decl_info
      24. | VarTemplateDecl of decl_info * named_decl_info
      25. | TypeAliasTemplateDecl of decl_info * named_decl_info
      26. | FunctionTemplateDecl of decl_info * named_decl_info * template_decl_info
      27. | ClassTemplateDecl of decl_info * named_decl_info * template_decl_info
      28. | ConceptDecl of decl_info * named_decl_info
      29. | BuiltinTemplateDecl of decl_info * named_decl_info
      30. | ObjCPropertyDecl of decl_info * named_decl_info * obj_c_property_decl_info
      31. | ObjCCompatibleAliasDecl of decl_info * named_decl_info - * obj_c_compatible_alias_decl_info
      32. | NamespaceAliasDecl of decl_info * named_decl_info * namespace_alias_decl_info
      33. | LabelDecl of decl_info * named_decl_info
      34. | UsingEnumDecl of decl_info * named_decl_info
      35. | UsingDecl of decl_info * named_decl_info
      36. | LifetimeExtendedTemporaryDecl of decl_info
      37. | ImportDecl of decl_info * string
      38. | ImplicitConceptSpecializationDecl of decl_info
      39. | FriendTemplateDecl of decl_info
      40. | FriendDecl of decl_info * friend_info
      41. | FileScopeAsmDecl of decl_info
      42. | EmptyDecl of decl_info
      43. | AccessSpecDecl of decl_info
      and enum_constant_decl_info = {
      1. ecdi_init_expr : stmt option;
      }
      and field_decl_info = {
      1. fldi_is_mutable : bool;
      2. fldi_is_module_private : bool;
      3. fldi_init_expr : stmt option;
      4. fldi_bit_width_expr : stmt option;
      }
      and friend_info = [
      1. | `Type of type_ptr
      2. | `Decl of decl
      ]
      and function_decl_info = {
      1. fdi_mangled_name : string option;
      2. fdi_is_cpp : bool;
      3. fdi_is_inline : bool;
      4. fdi_is_module_private : bool;
      5. fdi_is_pure : bool;
      6. fdi_is_deleted : bool;
      7. fdi_is_no_return : bool;
      8. fdi_is_constexpr : bool;
      9. fdi_is_variadic : bool;
      10. fdi_is_static : bool;
      11. fdi_parameters : decl list;
      12. fdi_decl_ptr_with_body : pointer option;
      13. fdi_body : stmt option;
      14. fdi_template_specialization : template_specialization_info option;
      15. fdi_point_of_instantiation : source_location option;
      }
      and generic_selection_info = {
      1. gse_value : stmt option;
      }
      and holding_var_decl_info = {
      1. hvdi_binding_var : var_decl_info option;
      }
      and if_stmt_info = {
      1. isi_init : pointer option;
      2. isi_cond_var : stmt option;
      3. isi_cond : pointer;
      4. isi_then : pointer;
      5. isi_else : (pointer * source_location) option;
      }
      and lambda_capture_info = {
      1. lci_capture_kind : lambda_capture_kind;
      2. lci_capture_this : bool;
      3. lci_capture_variable : bool;
      4. lci_capture_VLAtype : bool;
      5. lci_init_captured_vardecl : decl option;
      6. lci_captured_var : decl_ref option;
      7. lci_is_implicit : bool;
      8. lci_location : source_range;
      9. lci_is_pack_expansion : bool;
      }
      and lambda_expr_info = {
      1. lei_lambda_decl : decl;
      }
      and obj_c_implementation_decl_info = {
      1. oidi_super : decl_ref option;
      2. oidi_class_interface : decl_ref option;
      3. oidi_ivar_initializers : cxx_ctor_initializer list;
      }
      and obj_c_message_expr_kind = [
      1. | `CatchParam of decl
      2. | `CatchAll
      ]
      and obj_c_method_decl_info = {
      1. omdi_is_instance_method : bool;
      2. omdi_result_type : qual_type;
      3. omdi_is_property_accessor : bool;
      4. omdi_property_decl : decl_ref option;
      5. omdi_parameters : decl list;
      6. omdi_implicit_parameters : decl list;
      7. omdi_is_variadic : bool;
      8. omdi_is_overriding : bool;
      9. omdi_is_optional : bool;
      10. omdi_body : stmt option;
      11. omdi_mangled_name : string;
      }
      and opaque_value_expr_info = {
      1. ovei_source_expr : stmt option;
      }
      and stmt =
      1. | WhileStmt of stmt_info * stmt list
      2. | LabelStmt of stmt_info * stmt list * string
      3. | VAArgExpr of stmt_info * stmt list * expr_info
      4. | UnaryOperator of stmt_info * stmt list * expr_info * unary_operator_info
      5. | UnaryExprOrTypeTraitExpr of stmt_info + * obj_c_compatible_alias_decl_info
      6. | NamespaceAliasDecl of decl_info * named_decl_info * namespace_alias_decl_info
      7. | LabelDecl of decl_info * named_decl_info
      8. | UsingEnumDecl of decl_info * named_decl_info
      9. | UsingDecl of decl_info * named_decl_info
      10. | LifetimeExtendedTemporaryDecl of decl_info
      11. | ImportDecl of decl_info * string
      12. | ImplicitConceptSpecializationDecl of decl_info
      13. | FriendTemplateDecl of decl_info
      14. | FriendDecl of decl_info * friend_info
      15. | FileScopeAsmDecl of decl_info
      16. | EmptyDecl of decl_info
      17. | AccessSpecDecl of decl_info
      and enum_constant_decl_info = {
      1. ecdi_init_expr : stmt option;
      }
      and field_decl_info = {
      1. fldi_is_mutable : bool;
      2. fldi_is_module_private : bool;
      3. fldi_init_expr : stmt option;
      4. fldi_bit_width_expr : stmt option;
      }
      and friend_info = [
      1. | `Type of type_ptr
      2. | `Decl of decl
      ]
      and function_decl_info = {
      1. fdi_mangled_name : string option;
      2. fdi_is_cpp : bool;
      3. fdi_is_inline : bool;
      4. fdi_is_module_private : bool;
      5. fdi_is_pure : bool;
      6. fdi_is_deleted : bool;
      7. fdi_is_no_return : bool;
      8. fdi_is_constexpr : bool;
      9. fdi_is_variadic : bool;
      10. fdi_is_static : bool;
      11. fdi_parameters : decl list;
      12. fdi_decl_ptr_with_body : pointer option;
      13. fdi_body : stmt option;
      14. fdi_template_specialization : template_specialization_info option;
      15. fdi_point_of_instantiation : source_location option;
      }
      and generic_selection_info = {
      1. gse_value : stmt option;
      }
      and holding_var_decl_info = {
      1. hvdi_binding_var : var_decl_info option;
      }
      and if_stmt_info = {
      1. isi_init : pointer option;
      2. isi_cond_var : stmt option;
      3. isi_cond : pointer;
      4. isi_then : pointer;
      5. isi_else : (pointer * source_location) option;
      }
      and lambda_capture_info = {
      1. lci_capture_kind : lambda_capture_kind;
      2. lci_capture_this : bool;
      3. lci_capture_variable : bool;
      4. lci_capture_VLAtype : bool;
      5. lci_init_captured_vardecl : decl option;
      6. lci_captured_var : decl_ref option;
      7. lci_is_implicit : bool;
      8. lci_location : source_range;
      9. lci_is_pack_expansion : bool;
      }
      and lambda_expr_info = {
      1. lei_lambda_decl : decl;
      }
      and obj_c_implementation_decl_info = {
      1. oidi_super : decl_ref option;
      2. oidi_class_interface : decl_ref option;
      3. oidi_ivar_initializers : cxx_ctor_initializer list;
      }
      and obj_c_message_expr_kind = [
      1. | `CatchParam of decl
      2. | `CatchAll
      ]
      and obj_c_method_decl_info = {
      1. omdi_is_instance_method : bool;
      2. omdi_result_type : qual_type;
      3. omdi_is_property_accessor : bool;
      4. omdi_property_decl : decl_ref option;
      5. omdi_parameters : decl list;
      6. omdi_implicit_parameters : decl list;
      7. omdi_is_variadic : bool;
      8. omdi_is_overriding : bool;
      9. omdi_is_optional : bool;
      10. omdi_body : stmt option;
      11. omdi_mangled_name : string;
      }
      and opaque_value_expr_info = {
      1. ovei_source_expr : stmt option;
      }
      and stmt =
      1. | WhileStmt of stmt_info * stmt list
      2. | LabelStmt of stmt_info * stmt list * string
      3. | VAArgExpr of stmt_info * stmt list * expr_info
      4. | UnaryOperator of stmt_info * stmt list * expr_info * unary_operator_info
      5. | UnaryExprOrTypeTraitExpr of stmt_info * stmt list * expr_info * unary_expr_or_type_trait_expr_info
      6. | TypoExpr of stmt_info * stmt list * expr_info
      7. | TypeTraitExpr of stmt_info * stmt list * expr_info * type_trait_info
      8. | SubstNonTypeTemplateParmPackExpr of stmt_info * stmt list * expr_info
      9. | SubstNonTypeTemplateParmExpr of stmt_info * stmt list * expr_info
      10. | StringLiteral of stmt_info * stmt list * expr_info * string list
      11. | StmtExpr of stmt_info * stmt list * expr_info
      12. | SourceLocExpr of stmt_info * stmt list * expr_info
      13. | SizeOfPackExpr of stmt_info * stmt list * expr_info
      14. | ShuffleVectorExpr of stmt_info * stmt list * expr_info
      15. | SYCLUniqueStableNameExpr of stmt_info * stmt list * expr_info
      16. | RequiresExpr of stmt_info * stmt list * expr_info
      17. | RecoveryExpr of stmt_info * stmt list * expr_info
      18. | PseudoObjectExpr of stmt_info * stmt list * expr_info
      19. | PredefinedExpr of stmt_info * stmt list * expr_info * predefined_expr_type
      20. | ParenListExpr of stmt_info * stmt list * expr_info
      21. | ParenExpr of stmt_info * stmt list * expr_info
      22. | PackExpansionExpr of stmt_info * stmt list * expr_info
      23. | UnresolvedMemberExpr of stmt_info * stmt list * expr_info * overload_expr_info
      24. | UnresolvedLookupExpr of stmt_info @@ -191,4 +191,4 @@ * stmt list * expr_info * binary_operator_info - * compound_assign_operator_info
      25. | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
      26. | AsTypeExpr of stmt_info * stmt list * expr_info
      27. | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
      28. | ArraySubscriptExpr of stmt_info * stmt list * expr_info
      29. | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
      30. | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
      31. | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
      32. | ConditionalOperator of stmt_info * stmt list * expr_info
      33. | BinaryConditionalOperator of stmt_info * stmt list * expr_info
      34. | AttributedStmt of stmt_info * stmt list * attribute list
      35. | SwitchStmt of stmt_info * stmt list * switch_stmt_info
      36. | DefaultStmt of stmt_info * stmt list
      37. | CaseStmt of stmt_info * stmt list
      38. | SEHTryStmt of stmt_info * stmt list
      39. | SEHLeaveStmt of stmt_info * stmt list
      40. | SEHFinallyStmt of stmt_info * stmt list
      41. | SEHExceptStmt of stmt_info * stmt list
      42. | ReturnStmt of stmt_info * stmt list
      43. | ObjCForCollectionStmt of stmt_info * stmt list
      44. | ObjCAutoreleasePoolStmt of stmt_info * stmt list
      45. | ObjCAtTryStmt of stmt_info * stmt list
      46. | ObjCAtThrowStmt of stmt_info * stmt list
      47. | ObjCAtSynchronizedStmt of stmt_info * stmt list
      48. | ObjCAtFinallyStmt of stmt_info * stmt list
      49. | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
      50. | OMPTeamsDirective of stmt_info * stmt list
      51. | OMPTaskyieldDirective of stmt_info * stmt list
      52. | OMPTaskwaitDirective of stmt_info * stmt list
      53. | OMPTaskgroupDirective of stmt_info * stmt list
      54. | OMPTaskDirective of stmt_info * stmt list
      55. | OMPTargetUpdateDirective of stmt_info * stmt list
      56. | OMPTargetTeamsDirective of stmt_info * stmt list
      57. | OMPTargetParallelForDirective of stmt_info * stmt list
      58. | OMPTargetParallelDirective of stmt_info * stmt list
      59. | OMPTargetExitDataDirective of stmt_info * stmt list
      60. | OMPTargetEnterDataDirective of stmt_info * stmt list
      61. | OMPTargetDirective of stmt_info * stmt list
      62. | OMPTargetDataDirective of stmt_info * stmt list
      63. | OMPSingleDirective of stmt_info * stmt list
      64. | OMPSectionsDirective of stmt_info * stmt list
      65. | OMPSectionDirective of stmt_info * stmt list
      66. | OMPScopeDirective of stmt_info * stmt list
      67. | OMPScanDirective of stmt_info * stmt list
      68. | OMPParallelSectionsDirective of stmt_info * stmt list
      69. | OMPParallelMasterDirective of stmt_info * stmt list
      70. | OMPParallelMaskedDirective of stmt_info * stmt list
      71. | OMPParallelDirective of stmt_info * stmt list
      72. | OMPOrderedDirective of stmt_info * stmt list
      73. | OMPMetaDirective of stmt_info * stmt list
      74. | OMPMasterDirective of stmt_info * stmt list
      75. | OMPMaskedDirective of stmt_info * stmt list
      76. | OMPUnrollDirective of stmt_info * stmt list
      77. | OMPTileDirective of stmt_info * stmt list
      78. | OMPTeamsGenericLoopDirective of stmt_info * stmt list
      79. | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
      80. | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
      81. | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
      82. | OMPTeamsDistributeDirective of stmt_info * stmt list
      83. | OMPTaskLoopSimdDirective of stmt_info * stmt list
      84. | OMPTaskLoopDirective of stmt_info * stmt list
      85. | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
      86. | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
      87. | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
      88. | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
      89. | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
      90. | OMPTargetSimdDirective of stmt_info * stmt list
      91. | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
      92. | OMPTargetParallelForSimdDirective of stmt_info * stmt list
      93. | OMPSimdDirective of stmt_info * stmt list
      94. | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
      95. | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
      96. | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
      97. | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
      98. | OMPParallelGenericLoopDirective of stmt_info * stmt list
      99. | OMPParallelForSimdDirective of stmt_info * stmt list
      100. | OMPParallelForDirective of stmt_info * stmt list
      101. | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
      102. | OMPMasterTaskLoopDirective of stmt_info * stmt list
      103. | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
      104. | OMPMaskedTaskLoopDirective of stmt_info * stmt list
      105. | OMPGenericLoopDirective of stmt_info * stmt list
      106. | OMPForSimdDirective of stmt_info * stmt list
      107. | OMPForDirective of stmt_info * stmt list
      108. | OMPDistributeSimdDirective of stmt_info * stmt list
      109. | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
      110. | OMPDistributeParallelForDirective of stmt_info * stmt list
      111. | OMPDistributeDirective of stmt_info * stmt list
      112. | OMPInteropDirective of stmt_info * stmt list
      113. | OMPFlushDirective of stmt_info * stmt list
      114. | OMPErrorDirective of stmt_info * stmt list
      115. | OMPDispatchDirective of stmt_info * stmt list
      116. | OMPDepobjDirective of stmt_info * stmt list
      117. | OMPCriticalDirective of stmt_info * stmt list
      118. | OMPCancellationPointDirective of stmt_info * stmt list
      119. | OMPCancelDirective of stmt_info * stmt list
      120. | OMPBarrierDirective of stmt_info * stmt list
      121. | OMPAtomicDirective of stmt_info * stmt list
      122. | OMPCanonicalLoop of stmt_info * stmt list
      123. | NullStmt of stmt_info * stmt list
      124. | MSDependentExistsStmt of stmt_info * stmt list
      125. | IndirectGotoStmt of stmt_info * stmt list
      126. | IfStmt of stmt_info * stmt list * if_stmt_info
      127. | GotoStmt of stmt_info * stmt list * goto_stmt_info
      128. | ForStmt of stmt_info * stmt list
      129. | DoStmt of stmt_info * stmt list
      130. | DeclStmt of stmt_info * stmt list * decl list
      131. | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
      132. | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
      133. | ContinueStmt of stmt_info * stmt list
      134. | CompoundStmt of stmt_info * stmt list
      135. | CapturedStmt of stmt_info * stmt list
      136. | CXXTryStmt of stmt_info * stmt list
      137. | CXXForRangeStmt of stmt_info * stmt list
      138. | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
      139. | BreakStmt of stmt_info * stmt list
      140. | MSAsmStmt of stmt_info * stmt list
      141. | GCCAsmStmt of stmt_info * stmt list
      and switch_stmt_info = {
      1. ssi_init : pointer option;
      2. ssi_cond_var : stmt option;
      3. ssi_cond : pointer;
      4. ssi_body : pointer;
      5. ssi_is_all_enum_cases_covered : bool;
      }
      and template_decl_info = {
      1. tdi_specializations : decl list;
      }
      and var_decl_info = {
      1. vdi_is_global : bool;
      2. vdi_is_extern : bool;
      3. vdi_is_static : bool;
      4. vdi_is_static_local : bool;
      5. vdi_is_static_data_member : bool;
      6. vdi_is_constexpr : bool;
      7. vdi_is_init_ice : bool;
      8. vdi_init_expr : stmt option;
      9. vdi_is_init_expr_cxx11_constant : bool;
      10. vdi_parm_index_in_function : int option;
      }
      type lookup = {
      1. lup_decl_name : string;
      2. lup_decl_refs : decl_ref list;
      }
      type lookups = {
      1. lups_decl_ref : decl_ref;
      2. lups_primary_context_pointer : pointer option;
      3. lups_lookups : lookup list;
      4. lups_has_undeserialized_decls : bool;
      }
      \ No newline at end of file + * compound_assign_operator_info
    2. | AtomicExpr of stmt_info * stmt list * expr_info * atomic_expr_info
    3. | AsTypeExpr of stmt_info * stmt list * expr_info
    4. | ArrayTypeTraitExpr of stmt_info * stmt list * expr_info
    5. | ArraySubscriptExpr of stmt_info * stmt list * expr_info
    6. | ArrayInitLoopExpr of stmt_info * stmt list * expr_info
    7. | ArrayInitIndexExpr of stmt_info * stmt list * expr_info
    8. | AddrLabelExpr of stmt_info * stmt list * expr_info * addr_label_expr_info
    9. | ConditionalOperator of stmt_info * stmt list * expr_info
    10. | BinaryConditionalOperator of stmt_info * stmt list * expr_info
    11. | AttributedStmt of stmt_info * stmt list * attribute list
    12. | SwitchStmt of stmt_info * stmt list * switch_stmt_info
    13. | DefaultStmt of stmt_info * stmt list
    14. | CaseStmt of stmt_info * stmt list
    15. | SEHTryStmt of stmt_info * stmt list
    16. | SEHLeaveStmt of stmt_info * stmt list
    17. | SEHFinallyStmt of stmt_info * stmt list
    18. | SEHExceptStmt of stmt_info * stmt list
    19. | ReturnStmt of stmt_info * stmt list
    20. | ObjCForCollectionStmt of stmt_info * stmt list
    21. | ObjCAutoreleasePoolStmt of stmt_info * stmt list
    22. | ObjCAtTryStmt of stmt_info * stmt list
    23. | ObjCAtThrowStmt of stmt_info * stmt list
    24. | ObjCAtSynchronizedStmt of stmt_info * stmt list
    25. | ObjCAtFinallyStmt of stmt_info * stmt list
    26. | ObjCAtCatchStmt of stmt_info * stmt list * obj_c_message_expr_kind
    27. | OMPTeamsDirective of stmt_info * stmt list
    28. | OMPTaskyieldDirective of stmt_info * stmt list
    29. | OMPTaskwaitDirective of stmt_info * stmt list
    30. | OMPTaskgroupDirective of stmt_info * stmt list
    31. | OMPTaskDirective of stmt_info * stmt list
    32. | OMPTargetUpdateDirective of stmt_info * stmt list
    33. | OMPTargetTeamsDirective of stmt_info * stmt list
    34. | OMPTargetParallelForDirective of stmt_info * stmt list
    35. | OMPTargetParallelDirective of stmt_info * stmt list
    36. | OMPTargetExitDataDirective of stmt_info * stmt list
    37. | OMPTargetEnterDataDirective of stmt_info * stmt list
    38. | OMPTargetDirective of stmt_info * stmt list
    39. | OMPTargetDataDirective of stmt_info * stmt list
    40. | OMPSingleDirective of stmt_info * stmt list
    41. | OMPSectionsDirective of stmt_info * stmt list
    42. | OMPSectionDirective of stmt_info * stmt list
    43. | OMPScopeDirective of stmt_info * stmt list
    44. | OMPScanDirective of stmt_info * stmt list
    45. | OMPParallelSectionsDirective of stmt_info * stmt list
    46. | OMPParallelMasterDirective of stmt_info * stmt list
    47. | OMPParallelMaskedDirective of stmt_info * stmt list
    48. | OMPParallelDirective of stmt_info * stmt list
    49. | OMPOrderedDirective of stmt_info * stmt list
    50. | OMPMetaDirective of stmt_info * stmt list
    51. | OMPMasterDirective of stmt_info * stmt list
    52. | OMPMaskedDirective of stmt_info * stmt list
    53. | OMPUnrollDirective of stmt_info * stmt list
    54. | OMPTileDirective of stmt_info * stmt list
    55. | OMPTeamsGenericLoopDirective of stmt_info * stmt list
    56. | OMPTeamsDistributeSimdDirective of stmt_info * stmt list
    57. | OMPTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
    58. | OMPTeamsDistributeParallelForDirective of stmt_info * stmt list
    59. | OMPTeamsDistributeDirective of stmt_info * stmt list
    60. | OMPTaskLoopSimdDirective of stmt_info * stmt list
    61. | OMPTaskLoopDirective of stmt_info * stmt list
    62. | OMPTargetTeamsGenericLoopDirective of stmt_info * stmt list
    63. | OMPTargetTeamsDistributeSimdDirective of stmt_info * stmt list
    64. | OMPTargetTeamsDistributeParallelForSimdDirective of stmt_info * stmt list
    65. | OMPTargetTeamsDistributeParallelForDirective of stmt_info * stmt list
    66. | OMPTargetTeamsDistributeDirective of stmt_info * stmt list
    67. | OMPTargetSimdDirective of stmt_info * stmt list
    68. | OMPTargetParallelGenericLoopDirective of stmt_info * stmt list
    69. | OMPTargetParallelForSimdDirective of stmt_info * stmt list
    70. | OMPSimdDirective of stmt_info * stmt list
    71. | OMPParallelMasterTaskLoopSimdDirective of stmt_info * stmt list
    72. | OMPParallelMasterTaskLoopDirective of stmt_info * stmt list
    73. | OMPParallelMaskedTaskLoopSimdDirective of stmt_info * stmt list
    74. | OMPParallelMaskedTaskLoopDirective of stmt_info * stmt list
    75. | OMPParallelGenericLoopDirective of stmt_info * stmt list
    76. | OMPParallelForSimdDirective of stmt_info * stmt list
    77. | OMPParallelForDirective of stmt_info * stmt list
    78. | OMPMasterTaskLoopSimdDirective of stmt_info * stmt list
    79. | OMPMasterTaskLoopDirective of stmt_info * stmt list
    80. | OMPMaskedTaskLoopSimdDirective of stmt_info * stmt list
    81. | OMPMaskedTaskLoopDirective of stmt_info * stmt list
    82. | OMPGenericLoopDirective of stmt_info * stmt list
    83. | OMPForSimdDirective of stmt_info * stmt list
    84. | OMPForDirective of stmt_info * stmt list
    85. | OMPDistributeSimdDirective of stmt_info * stmt list
    86. | OMPDistributeParallelForSimdDirective of stmt_info * stmt list
    87. | OMPDistributeParallelForDirective of stmt_info * stmt list
    88. | OMPDistributeDirective of stmt_info * stmt list
    89. | OMPInteropDirective of stmt_info * stmt list
    90. | OMPFlushDirective of stmt_info * stmt list
    91. | OMPErrorDirective of stmt_info * stmt list
    92. | OMPDispatchDirective of stmt_info * stmt list
    93. | OMPDepobjDirective of stmt_info * stmt list
    94. | OMPCriticalDirective of stmt_info * stmt list
    95. | OMPCancellationPointDirective of stmt_info * stmt list
    96. | OMPCancelDirective of stmt_info * stmt list
    97. | OMPBarrierDirective of stmt_info * stmt list
    98. | OMPAtomicDirective of stmt_info * stmt list
    99. | OMPCanonicalLoop of stmt_info * stmt list
    100. | NullStmt of stmt_info * stmt list
    101. | MSDependentExistsStmt of stmt_info * stmt list
    102. | IndirectGotoStmt of stmt_info * stmt list
    103. | IfStmt of stmt_info * stmt list * if_stmt_info
    104. | GotoStmt of stmt_info * stmt list * goto_stmt_info
    105. | ForStmt of stmt_info * stmt list
    106. | DoStmt of stmt_info * stmt list
    107. | DeclStmt of stmt_info * stmt list * decl list
    108. | CoroutineBodyStmt of stmt_info * stmt list * coro_body_stmt_info
    109. | CoreturnStmt of stmt_info * stmt list * coreturn_stmt_info
    110. | ContinueStmt of stmt_info * stmt list
    111. | CompoundStmt of stmt_info * stmt list
    112. | CapturedStmt of stmt_info * stmt list
    113. | CXXTryStmt of stmt_info * stmt list
    114. | CXXForRangeStmt of stmt_info * stmt list
    115. | CXXCatchStmt of stmt_info * stmt list * cxx_catch_stmt_info
    116. | BreakStmt of stmt_info * stmt list
    117. | MSAsmStmt of stmt_info * stmt list
    118. | GCCAsmStmt of stmt_info * stmt list
    and switch_stmt_info = {
    1. ssi_init : pointer option;
    2. ssi_cond_var : stmt option;
    3. ssi_cond : pointer;
    4. ssi_body : pointer;
    5. ssi_is_all_enum_cases_covered : bool;
    }
    and template_decl_info = {
    1. tdi_specializations : decl list;
    }
    and var_decl_info = {
    1. vdi_is_global : bool;
    2. vdi_is_extern : bool;
    3. vdi_is_static : bool;
    4. vdi_is_static_local : bool;
    5. vdi_is_static_data_member : bool;
    6. vdi_is_constexpr : bool;
    7. vdi_is_init_ice : bool;
    8. vdi_init_expr : stmt option;
    9. vdi_is_init_expr_cxx11_constant : bool;
    10. vdi_parm_index_in_function : int option;
    }
    type lookup = {
    1. lup_decl_name : string;
    2. lup_decl_refs : decl_ref list;
    }
    type lookups = {
    1. lups_decl_ref : decl_ref;
    2. lups_primary_context_pointer : pointer option;
    3. lups_lookups : lookup list;
    4. lups_has_undeserialized_decls : bool;
    }
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/TypePtr/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/TypePtr/index.html index 9ac13940fe3..0e50ab6e63f 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/TypePtr/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/TypePtr/index.html @@ -1,2 +1,2 @@ -TypePtr (infer.ATDGenerated.Clang_ast_types.TypePtr)

    Module Clang_ast_types.TypePtr

    type t = ..
    type t +=
    1. | Ptr of int
    val wrap : int -> t
    val unwrap : t -> int
    \ No newline at end of file +TypePtr (infer.ATDGenerated.Clang_ast_types.TypePtr)

    Module Clang_ast_types.TypePtr

    type t = ..
    type t +=
    1. | Ptr of int
    val wrap : int -> t
    val unwrap : t -> int
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/index.html index b5e9a5caa21..0c5be268b4e 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_types/index.html @@ -1,2 +1,2 @@ -Clang_ast_types (infer.ATDGenerated.Clang_ast_types)

    Module ATDGenerated.Clang_ast_types

    module TypePtr : sig ... end
    \ No newline at end of file +Clang_ast_types (infer.ATDGenerated.Clang_ast_types)

    Module ATDGenerated.Clang_ast_types

    module TypePtr : sig ... end
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_v/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_v/index.html index 5585ec206c8..e64057859b5 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_v/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_v/index.html @@ -1,5 +1,5 @@ -Clang_ast_v (infer.ATDGenerated.Clang_ast_v)

    Module ATDGenerated.Clang_ast_v

    type access_specifier = Clang_ast_t.access_specifier
    type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
    type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
    1. aei_kind : atomic_expr_kind;
    }
    type attribute_kind = Clang_ast_t.attribute_kind =
    1. | AddressSpaceAttrKind
    2. | AnnotateTypeAttrKind
    3. | ArmInAttrKind
    4. | ArmInOutAttrKind
    5. | ArmMveStrictPolymorphismAttrKind
    6. | ArmOutAttrKind
    7. | ArmPreservesAttrKind
    8. | ArmStreamingAttrKind
    9. | ArmStreamingCompatibleAttrKind
    10. | BTFTypeTagAttrKind
    11. | CmseNSCallAttrKind
    12. | HLSLGroupSharedAddressSpaceAttrKind
    13. | HLSLParamModifierAttrKind
    14. | NoDerefAttrKind
    15. | ObjCGCAttrKind
    16. | ObjCInertUnsafeUnretainedAttrKind
    17. | ObjCKindOfAttrKind
    18. | OpenCLConstantAddressSpaceAttrKind
    19. | OpenCLGenericAddressSpaceAttrKind
    20. | OpenCLGlobalAddressSpaceAttrKind
    21. | OpenCLGlobalDeviceAddressSpaceAttrKind
    22. | OpenCLGlobalHostAddressSpaceAttrKind
    23. | OpenCLLocalAddressSpaceAttrKind
    24. | OpenCLPrivateAddressSpaceAttrKind
    25. | Ptr32AttrKind
    26. | Ptr64AttrKind
    27. | SPtrAttrKind
    28. | TypeNonNullAttrKind
    29. | TypeNullUnspecifiedAttrKind
    30. | TypeNullableAttrKind
    31. | TypeNullableResultAttrKind
    32. | UPtrAttrKind
    33. | WebAssemblyFuncrefAttrKind
    34. | CodeAlignAttrKind
    35. | FallThroughAttrKind
    36. | LikelyAttrKind
    37. | MustTailAttrKind
    38. | OpenCLUnrollHintAttrKind
    39. | UnlikelyAttrKind
    40. | AlwaysInlineAttrKind
    41. | NoInlineAttrKind
    42. | NoMergeAttrKind
    43. | SuppressAttrKind
    44. | AArch64SVEPcsAttrKind
    45. | AArch64VectorPcsAttrKind
    46. | AMDGPUKernelCallAttrKind
    47. | AcquireHandleAttrKind
    48. | AnyX86NoCfCheckAttrKind
    49. | CDeclAttrKind
    50. | FastCallAttrKind
    51. | IntelOclBiccAttrKind
    52. | LifetimeBoundAttrKind
    53. | M68kRTDAttrKind
    54. | MSABIAttrKind
    55. | NSReturnsRetainedAttrKind
    56. | ObjCOwnershipAttrKind
    57. | PascalAttrKind
    58. | PcsAttrKind
    59. | PreserveAllAttrKind
    60. | PreserveMostAttrKind
    61. | RegCallAttrKind
    62. | StdCallAttrKind
    63. | SwiftAsyncCallAttrKind
    64. | SwiftCallAttrKind
    65. | SysVABIAttrKind
    66. | ThisCallAttrKind
    67. | VectorCallAttrKind
    68. | SwiftAsyncContextAttrKind
    69. | SwiftContextAttrKind
    70. | SwiftErrorResultAttrKind
    71. | SwiftIndirectResultAttrKind
    72. | AnnotateAttrKind
    73. | CFConsumedAttrKind
    74. | CarriesDependencyAttrKind
    75. | NSConsumedAttrKind
    76. | NonNullAttrKind
    77. | OSConsumedAttrKind
    78. | PassObjectSizeAttrKind
    79. | ReleaseHandleAttrKind
    80. | UseHandleAttrKind
    81. | HLSLSV_DispatchThreadIDAttrKind
    82. | HLSLSV_GroupIndexAttrKind
    83. | AMDGPUFlatWorkGroupSizeAttrKind
    84. | AMDGPUNumSGPRAttrKind
    85. | AMDGPUNumVGPRAttrKind
    86. | AMDGPUWavesPerEUAttrKind
    87. | ARMInterruptAttrKind
    88. | AVRInterruptAttrKind
    89. | AVRSignalAttrKind
    90. | AcquireCapabilityAttrKind
    91. | AcquiredAfterAttrKind
    92. | AcquiredBeforeAttrKind
    93. | AlignMac68kAttrKind
    94. | AlignNaturalAttrKind
    95. | AlignedAttrKind
    96. | AllocAlignAttrKind
    97. | AllocSizeAttrKind
    98. | AlwaysDestroyAttrKind
    99. | AnalyzerNoReturnAttrKind
    100. | AnyX86InterruptAttrKind
    101. | AnyX86NoCallerSavedRegistersAttrKind
    102. | ArcWeakrefUnavailableAttrKind
    103. | ArgumentWithTypeTagAttrKind
    104. | ArmBuiltinAliasAttrKind
    105. | ArmLocallyStreamingAttrKind
    106. | ArmNewAttrKind
    107. | ArtificialAttrKind
    108. | AsmLabelAttrKind
    109. | AssertCapabilityAttrKind
    110. | AssertExclusiveLockAttrKind
    111. | AssertSharedLockAttrKind
    112. | AssumeAlignedAttrKind
    113. | AssumptionAttrKind
    114. | AvailabilityAttrKind
    115. | AvailableOnlyInDefaultEvalMethodAttrKind
    116. | BPFPreserveAccessIndexAttrKind
    117. | BPFPreserveStaticOffsetAttrKind
    118. | BTFDeclTagAttrKind
    119. | BlocksAttrKind
    120. | BuiltinAttrKind
    121. | C11NoReturnAttrKind
    122. | CFAuditedTransferAttrKind
    123. | CFGuardAttrKind
    124. | CFICanonicalJumpTableAttrKind
    125. | CFReturnsNotRetainedAttrKind
    126. | CFReturnsRetainedAttrKind
    127. | CFUnknownTransferAttrKind
    128. | CPUDispatchAttrKind
    129. | CPUSpecificAttrKind
    130. | CUDAConstantAttrKind
    131. | CUDADeviceAttrKind
    132. | CUDADeviceBuiltinSurfaceTypeAttrKind
    133. | CUDADeviceBuiltinTextureTypeAttrKind
    134. | CUDAGlobalAttrKind
    135. | CUDAHostAttrKind
    136. | CUDAInvalidTargetAttrKind
    137. | CUDALaunchBoundsAttrKind
    138. | CUDASharedAttrKind
    139. | CXX11NoReturnAttrKind
    140. | CallableWhenAttrKind
    141. | CallbackAttrKind
    142. | CapabilityAttrKind
    143. | CapturedRecordAttrKind
    144. | CleanupAttrKind
    145. | CmseNSEntryAttrKind
    146. | CodeModelAttrKind
    147. | CodeSegAttrKind
    148. | ColdAttrKind
    149. | CommonAttrKind
    150. | ConstAttrKind
    151. | ConstInitAttrKind
    152. | ConstructorAttrKind
    153. | ConsumableAttrKind
    154. | ConsumableAutoCastAttrKind
    155. | ConsumableSetOnReadAttrKind
    156. | ConvergentAttrKind
    157. | CoroDisableLifetimeBoundAttrKind
    158. | CoroLifetimeBoundAttrKind
    159. | CoroOnlyDestroyWhenCompleteAttrKind
    160. | CoroReturnTypeAttrKind
    161. | CoroWrapperAttrKind
    162. | CountedByAttrKind
    163. | DLLExportAttrKind
    164. | DLLExportStaticLocalAttrKind
    165. | DLLImportAttrKind
    166. | DLLImportStaticLocalAttrKind
    167. | DeprecatedAttrKind
    168. | DestructorAttrKind
    169. | DiagnoseAsBuiltinAttrKind
    170. | DiagnoseIfAttrKind
    171. | DisableSanitizerInstrumentationAttrKind
    172. | DisableTailCallsAttrKind
    173. | EmptyBasesAttrKind
    174. | EnableIfAttrKind
    175. | EnforceTCBAttrKind
    176. | EnforceTCBLeafAttrKind
    177. | EnumExtensibilityAttrKind
    178. | ErrorAttrKind
    179. | ExcludeFromExplicitInstantiationAttrKind
    180. | ExclusiveTrylockFunctionAttrKind
    181. | ExternalSourceSymbolAttrKind
    182. | FinalAttrKind
    183. | FlagEnumAttrKind
    184. | FlattenAttrKind
    185. | FormatAttrKind
    186. | FormatArgAttrKind
    187. | FunctionReturnThunksAttrKind
    188. | GNUInlineAttrKind
    189. | GuardedByAttrKind
    190. | GuardedVarAttrKind
    191. | HIPManagedAttrKind
    192. | HLSLNumThreadsAttrKind
    193. | HLSLResourceAttrKind
    194. | HLSLResourceBindingAttrKind
    195. | HLSLShaderAttrKind
    196. | HotAttrKind
    197. | IBActionAttrKind
    198. | IBOutletAttrKind
    199. | IBOutletCollectionAttrKind
    200. | InitPriorityAttrKind
    201. | InternalLinkageAttrKind
    202. | LTOVisibilityPublicAttrKind
    203. | LayoutVersionAttrKind
    204. | LeafAttrKind
    205. | LockReturnedAttrKind
    206. | LocksExcludedAttrKind
    207. | M68kInterruptAttrKind
    208. | MIGServerRoutineAttrKind
    209. | MSAllocatorAttrKind
    210. | MSConstexprAttrKind
    211. | MSInheritanceAttrKind
    212. | MSNoVTableAttrKind
    213. | MSP430InterruptAttrKind
    214. | MSStructAttrKind
    215. | MSVtorDispAttrKind
    216. | MaxFieldAlignmentAttrKind
    217. | MayAliasAttrKind
    218. | MaybeUndefAttrKind
    219. | MicroMipsAttrKind
    220. | MinSizeAttrKind
    221. | MinVectorWidthAttrKind
    222. | Mips16AttrKind
    223. | MipsInterruptAttrKind
    224. | MipsLongCallAttrKind
    225. | MipsShortCallAttrKind
    226. | NSConsumesSelfAttrKind
    227. | NSErrorDomainAttrKind
    228. | NSReturnsAutoreleasedAttrKind
    229. | NSReturnsNotRetainedAttrKind
    230. | NVPTXKernelAttrKind
    231. | NakedAttrKind
    232. | NoAliasAttrKind
    233. | NoCommonAttrKind
    234. | NoDebugAttrKind
    235. | NoDestroyAttrKind
    236. | NoDuplicateAttrKind
    237. | NoInstrumentFunctionAttrKind
    238. | NoMicroMipsAttrKind
    239. | NoMips16AttrKind
    240. | NoProfileFunctionAttrKind
    241. | NoRandomizeLayoutAttrKind
    242. | NoReturnAttrKind
    243. | NoSanitizeAttrKind
    244. | NoSpeculativeLoadHardeningAttrKind
    245. | NoSplitStackAttrKind
    246. | NoStackProtectorAttrKind
    247. | NoThreadSafetyAnalysisAttrKind
    248. | NoThrowAttrKind
    249. | NoUniqueAddressAttrKind
    250. | NoUwtableAttrKind
    251. | NotTailCalledAttrKind
    252. | OMPAllocateDeclAttrKind
    253. | OMPCaptureNoInitAttrKind
    254. | OMPDeclareTargetDeclAttrKind
    255. | OMPDeclareVariantAttrKind
    256. | OMPThreadPrivateDeclAttrKind
    257. | OSConsumesThisAttrKind
    258. | OSReturnsNotRetainedAttrKind
    259. | OSReturnsRetainedAttrKind
    260. | OSReturnsRetainedOnNonZeroAttrKind
    261. | OSReturnsRetainedOnZeroAttrKind
    262. | ObjCBridgeAttrKind
    263. | ObjCBridgeMutableAttrKind
    264. | ObjCBridgeRelatedAttrKind
    265. | ObjCExceptionAttrKind
    266. | ObjCExplicitProtocolImplAttrKind
    267. | ObjCExternallyRetainedAttrKind
    268. | ObjCIndependentClassAttrKind
    269. | ObjCMethodFamilyAttrKind
    270. | ObjCNSObjectAttrKind
    271. | ObjCPreciseLifetimeAttrKind
    272. | ObjCRequiresPropertyDefsAttrKind
    273. | ObjCRequiresSuperAttrKind
    274. | ObjCReturnsInnerPointerAttrKind
    275. | ObjCRootClassAttrKind
    276. | ObjCSubclassingRestrictedAttrKind
    277. | OpenCLIntelReqdSubGroupSizeAttrKind
    278. | OpenCLKernelAttrKind
    279. | OptimizeNoneAttrKind
    280. | OverrideAttrKind
    281. | OwnerAttrKind
    282. | OwnershipAttrKind
    283. | PackedAttrKind
    284. | ParamTypestateAttrKind
    285. | PatchableFunctionEntryAttrKind
    286. | PointerAttrKind
    287. | PragmaClangBSSSectionAttrKind
    288. | PragmaClangDataSectionAttrKind
    289. | PragmaClangRelroSectionAttrKind
    290. | PragmaClangRodataSectionAttrKind
    291. | PragmaClangTextSectionAttrKind
    292. | PreferredNameAttrKind
    293. | PreferredTypeAttrKind
    294. | PtGuardedByAttrKind
    295. | PtGuardedVarAttrKind
    296. | PureAttrKind
    297. | RISCVInterruptAttrKind
    298. | RandomizeLayoutAttrKind
    299. | ReadOnlyPlacementAttrKind
    300. | ReinitializesAttrKind
    301. | ReleaseCapabilityAttrKind
    302. | ReqdWorkGroupSizeAttrKind
    303. | RequiresCapabilityAttrKind
    304. | RestrictAttrKind
    305. | RetainAttrKind
    306. | ReturnTypestateAttrKind
    307. | ReturnsNonNullAttrKind
    308. | ReturnsTwiceAttrKind
    309. | SYCLKernelAttrKind
    310. | SYCLSpecialClassAttrKind
    311. | ScopedLockableAttrKind
    312. | SectionAttrKind
    313. | SelectAnyAttrKind
    314. | SentinelAttrKind
    315. | SetTypestateAttrKind
    316. | SharedTrylockFunctionAttrKind
    317. | SpeculativeLoadHardeningAttrKind
    318. | StandaloneDebugAttrKind
    319. | StrictFPAttrKind
    320. | StrictGuardStackCheckAttrKind
    321. | SwiftAsyncAttrKind
    322. | SwiftAsyncErrorAttrKind
    323. | SwiftAsyncNameAttrKind
    324. | SwiftAttrAttrKind
    325. | SwiftBridgeAttrKind
    326. | SwiftBridgedTypedefAttrKind
    327. | SwiftErrorAttrKind
    328. | SwiftImportAsNonGenericAttrKind
    329. | SwiftImportPropertyAsAccessorsAttrKind
    330. | SwiftNameAttrKind
    331. | SwiftNewTypeAttrKind
    332. | SwiftPrivateAttrKind
    333. | TLSModelAttrKind
    334. | TargetAttrKind
    335. | TargetClonesAttrKind
    336. | TargetVersionAttrKind
    337. | TestTypestateAttrKind
    338. | TransparentUnionAttrKind
    339. | TrivialABIAttrKind
    340. | TryAcquireCapabilityAttrKind
    341. | TypeTagForDatatypeAttrKind
    342. | TypeVisibilityAttrKind
    343. | UnavailableAttrKind
    344. | UninitializedAttrKind
    345. | UnsafeBufferUsageAttrKind
    346. | UnusedAttrKind
    347. | UsedAttrKind
    348. | UsingIfExistsAttrKind
    349. | UuidAttrKind
    350. | VecReturnAttrKind
    351. | VecTypeHintAttrKind
    352. | VisibilityAttrKind
    353. | WarnUnusedAttrKind
    354. | WarnUnusedResultAttrKind
    355. | WeakAttrKind
    356. | WeakImportAttrKind
    357. | WeakRefAttrKind
    358. | WebAssemblyExportNameAttrKind
    359. | WebAssemblyImportModuleAttrKind
    360. | WebAssemblyImportNameAttrKind
    361. | WorkGroupSizeHintAttrKind
    362. | X86ForceAlignArgPointerAttrKind
    363. | XRayInstrumentAttrKind
    364. | XRayLogArgsAttrKind
    365. | ZeroCallUsedRegsAttrKind
    366. | AbiTagAttrKind
    367. | AliasAttrKind
    368. | AlignValueAttrKind
    369. | BuiltinAliasAttrKind
    370. | CalledOnceAttrKind
    371. | IFuncAttrKind
    372. | InitSegAttrKind
    373. | LoaderUninitializedAttrKind
    374. | LoopHintAttrKind
    375. | ModeAttrKind
    376. | NoBuiltinAttrKind
    377. | NoEscapeAttrKind
    378. | OMPCaptureKindAttrKind
    379. | OMPDeclareSimdDeclAttrKind
    380. | OMPReferencedVarAttrKind
    381. | ObjCBoxableAttrKind
    382. | ObjCClassStubAttrKind
    383. | ObjCDesignatedInitializerAttrKind
    384. | ObjCDirectAttrKind
    385. | ObjCDirectMembersAttrKind
    386. | ObjCNonLazyClassAttrKind
    387. | ObjCNonRuntimeProtocolAttrKind
    388. | ObjCRuntimeNameAttrKind
    389. | ObjCRuntimeVisibleAttrKind
    390. | OpenCLAccessAttrKind
    391. | OverloadableAttrKind
    392. | RenderScriptKernelAttrKind
    393. | SwiftObjCMembersAttrKind
    394. | SwiftVersionedAdditionAttrKind
    395. | SwiftVersionedRemovalAttrKind
    396. | ThreadAttrKind
    type binary_operator_kind = Clang_ast_t.binary_operator_kind
    type binary_operator_info = Clang_ast_t.binary_operator_info = {
    1. boi_kind : binary_operator_kind;
    }
    type builtin_type_kind = Clang_ast_t.builtin_type_kind
    type cast_kind = Clang_ast_t.cast_kind
    type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
    1. xbs_name : string;
    2. xbs_virtual : bool;
    }
    type cast_expr_info = Clang_ast_t.cast_expr_info = {
    1. cei_cast_kind : cast_kind;
    2. cei_base_path : cxx_base_specifier list;
    }
    type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
    1. xnee_value : bool;
    }
    type decl_context_info = Clang_ast_t.decl_context_info = {
    1. dci_has_external_lexical_storage : bool;
    2. dci_has_external_visible_storage : bool;
    }
    type decl_kind = Clang_ast_t.decl_kind
    type declaration_name_kind = Clang_ast_t.declaration_name_kind
    type declaration_name = Clang_ast_t.declaration_name = {
    1. dn_kind : declaration_name_kind;
    2. dn_name : string;
    }
    type enum_decl_scope = Clang_ast_t.enum_decl_scope
    type enum_decl_info = Clang_ast_t.enum_decl_info = {
    1. edi_scope : enum_decl_scope option;
    2. edi_is_module_private : bool;
    }
    type input_kind = Clang_ast_t.input_kind
    type integer_literal_info = Clang_ast_t.integer_literal_info = {
    1. ili_is_signed : bool;
    2. ili_bitwidth : int;
    3. ili_value : string;
    }
    type integer_type_widths = Clang_ast_t.integer_type_widths = {
    1. itw_char_type : int;
    2. itw_short_type : int;
    3. itw_int_type : int;
    4. itw_long_type : int;
    5. itw_longlong_type : int;
    }
    type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
    type named_decl_info = Clang_ast_t.named_decl_info = {
    1. ni_name : string;
    2. ni_qual_name : string list;
    }
    type obj_c_access_control = Clang_ast_t.obj_c_access_control
    type obj_c_availability_check_expr_info = +Clang_ast_v (infer.ATDGenerated.Clang_ast_v)

    Module ATDGenerated.Clang_ast_v

    type access_specifier = Clang_ast_t.access_specifier
    type atomic_expr_kind = Clang_ast_t.atomic_expr_kind
    type atomic_expr_info = Clang_ast_t.atomic_expr_info = {
    1. aei_kind : atomic_expr_kind;
    }
    type attribute_kind = Clang_ast_t.attribute_kind =
    1. | AddressSpaceAttrKind
    2. | AnnotateTypeAttrKind
    3. | ArmInAttrKind
    4. | ArmInOutAttrKind
    5. | ArmMveStrictPolymorphismAttrKind
    6. | ArmOutAttrKind
    7. | ArmPreservesAttrKind
    8. | ArmStreamingAttrKind
    9. | ArmStreamingCompatibleAttrKind
    10. | BTFTypeTagAttrKind
    11. | CmseNSCallAttrKind
    12. | HLSLGroupSharedAddressSpaceAttrKind
    13. | HLSLParamModifierAttrKind
    14. | NoDerefAttrKind
    15. | ObjCGCAttrKind
    16. | ObjCInertUnsafeUnretainedAttrKind
    17. | ObjCKindOfAttrKind
    18. | OpenCLConstantAddressSpaceAttrKind
    19. | OpenCLGenericAddressSpaceAttrKind
    20. | OpenCLGlobalAddressSpaceAttrKind
    21. | OpenCLGlobalDeviceAddressSpaceAttrKind
    22. | OpenCLGlobalHostAddressSpaceAttrKind
    23. | OpenCLLocalAddressSpaceAttrKind
    24. | OpenCLPrivateAddressSpaceAttrKind
    25. | Ptr32AttrKind
    26. | Ptr64AttrKind
    27. | SPtrAttrKind
    28. | TypeNonNullAttrKind
    29. | TypeNullUnspecifiedAttrKind
    30. | TypeNullableAttrKind
    31. | TypeNullableResultAttrKind
    32. | UPtrAttrKind
    33. | WebAssemblyFuncrefAttrKind
    34. | CodeAlignAttrKind
    35. | FallThroughAttrKind
    36. | LikelyAttrKind
    37. | MustTailAttrKind
    38. | OpenCLUnrollHintAttrKind
    39. | UnlikelyAttrKind
    40. | AlwaysInlineAttrKind
    41. | NoInlineAttrKind
    42. | NoMergeAttrKind
    43. | SuppressAttrKind
    44. | AArch64SVEPcsAttrKind
    45. | AArch64VectorPcsAttrKind
    46. | AMDGPUKernelCallAttrKind
    47. | AcquireHandleAttrKind
    48. | AnyX86NoCfCheckAttrKind
    49. | CDeclAttrKind
    50. | FastCallAttrKind
    51. | IntelOclBiccAttrKind
    52. | LifetimeBoundAttrKind
    53. | M68kRTDAttrKind
    54. | MSABIAttrKind
    55. | NSReturnsRetainedAttrKind
    56. | ObjCOwnershipAttrKind
    57. | PascalAttrKind
    58. | PcsAttrKind
    59. | PreserveAllAttrKind
    60. | PreserveMostAttrKind
    61. | RegCallAttrKind
    62. | StdCallAttrKind
    63. | SwiftAsyncCallAttrKind
    64. | SwiftCallAttrKind
    65. | SysVABIAttrKind
    66. | ThisCallAttrKind
    67. | VectorCallAttrKind
    68. | SwiftAsyncContextAttrKind
    69. | SwiftContextAttrKind
    70. | SwiftErrorResultAttrKind
    71. | SwiftIndirectResultAttrKind
    72. | AnnotateAttrKind
    73. | CFConsumedAttrKind
    74. | CarriesDependencyAttrKind
    75. | NSConsumedAttrKind
    76. | NonNullAttrKind
    77. | OSConsumedAttrKind
    78. | PassObjectSizeAttrKind
    79. | ReleaseHandleAttrKind
    80. | UseHandleAttrKind
    81. | HLSLSV_DispatchThreadIDAttrKind
    82. | HLSLSV_GroupIndexAttrKind
    83. | AMDGPUFlatWorkGroupSizeAttrKind
    84. | AMDGPUNumSGPRAttrKind
    85. | AMDGPUNumVGPRAttrKind
    86. | AMDGPUWavesPerEUAttrKind
    87. | ARMInterruptAttrKind
    88. | AVRInterruptAttrKind
    89. | AVRSignalAttrKind
    90. | AcquireCapabilityAttrKind
    91. | AcquiredAfterAttrKind
    92. | AcquiredBeforeAttrKind
    93. | AlignMac68kAttrKind
    94. | AlignNaturalAttrKind
    95. | AlignedAttrKind
    96. | AllocAlignAttrKind
    97. | AllocSizeAttrKind
    98. | AlwaysDestroyAttrKind
    99. | AnalyzerNoReturnAttrKind
    100. | AnyX86InterruptAttrKind
    101. | AnyX86NoCallerSavedRegistersAttrKind
    102. | ArcWeakrefUnavailableAttrKind
    103. | ArgumentWithTypeTagAttrKind
    104. | ArmBuiltinAliasAttrKind
    105. | ArmLocallyStreamingAttrKind
    106. | ArmNewAttrKind
    107. | ArtificialAttrKind
    108. | AsmLabelAttrKind
    109. | AssertCapabilityAttrKind
    110. | AssertExclusiveLockAttrKind
    111. | AssertSharedLockAttrKind
    112. | AssumeAlignedAttrKind
    113. | AssumptionAttrKind
    114. | AvailabilityAttrKind
    115. | AvailableOnlyInDefaultEvalMethodAttrKind
    116. | BPFPreserveAccessIndexAttrKind
    117. | BPFPreserveStaticOffsetAttrKind
    118. | BTFDeclTagAttrKind
    119. | BlocksAttrKind
    120. | BuiltinAttrKind
    121. | C11NoReturnAttrKind
    122. | CFAuditedTransferAttrKind
    123. | CFGuardAttrKind
    124. | CFICanonicalJumpTableAttrKind
    125. | CFReturnsNotRetainedAttrKind
    126. | CFReturnsRetainedAttrKind
    127. | CFUnknownTransferAttrKind
    128. | CPUDispatchAttrKind
    129. | CPUSpecificAttrKind
    130. | CUDAConstantAttrKind
    131. | CUDADeviceAttrKind
    132. | CUDADeviceBuiltinSurfaceTypeAttrKind
    133. | CUDADeviceBuiltinTextureTypeAttrKind
    134. | CUDAGlobalAttrKind
    135. | CUDAHostAttrKind
    136. | CUDAInvalidTargetAttrKind
    137. | CUDALaunchBoundsAttrKind
    138. | CUDASharedAttrKind
    139. | CXX11NoReturnAttrKind
    140. | CallableWhenAttrKind
    141. | CallbackAttrKind
    142. | CapabilityAttrKind
    143. | CapturedRecordAttrKind
    144. | CleanupAttrKind
    145. | CmseNSEntryAttrKind
    146. | CodeModelAttrKind
    147. | CodeSegAttrKind
    148. | ColdAttrKind
    149. | CommonAttrKind
    150. | ConstAttrKind
    151. | ConstInitAttrKind
    152. | ConstructorAttrKind
    153. | ConsumableAttrKind
    154. | ConsumableAutoCastAttrKind
    155. | ConsumableSetOnReadAttrKind
    156. | ConvergentAttrKind
    157. | CoroDisableLifetimeBoundAttrKind
    158. | CoroLifetimeBoundAttrKind
    159. | CoroOnlyDestroyWhenCompleteAttrKind
    160. | CoroReturnTypeAttrKind
    161. | CoroWrapperAttrKind
    162. | CountedByAttrKind
    163. | DLLExportAttrKind
    164. | DLLExportStaticLocalAttrKind
    165. | DLLImportAttrKind
    166. | DLLImportStaticLocalAttrKind
    167. | DeprecatedAttrKind
    168. | DestructorAttrKind
    169. | DiagnoseAsBuiltinAttrKind
    170. | DiagnoseIfAttrKind
    171. | DisableSanitizerInstrumentationAttrKind
    172. | DisableTailCallsAttrKind
    173. | EmptyBasesAttrKind
    174. | EnableIfAttrKind
    175. | EnforceTCBAttrKind
    176. | EnforceTCBLeafAttrKind
    177. | EnumExtensibilityAttrKind
    178. | ErrorAttrKind
    179. | ExcludeFromExplicitInstantiationAttrKind
    180. | ExclusiveTrylockFunctionAttrKind
    181. | ExternalSourceSymbolAttrKind
    182. | FinalAttrKind
    183. | FlagEnumAttrKind
    184. | FlattenAttrKind
    185. | FormatAttrKind
    186. | FormatArgAttrKind
    187. | FunctionReturnThunksAttrKind
    188. | GNUInlineAttrKind
    189. | GuardedByAttrKind
    190. | GuardedVarAttrKind
    191. | HIPManagedAttrKind
    192. | HLSLNumThreadsAttrKind
    193. | HLSLResourceAttrKind
    194. | HLSLResourceBindingAttrKind
    195. | HLSLShaderAttrKind
    196. | HotAttrKind
    197. | IBActionAttrKind
    198. | IBOutletAttrKind
    199. | IBOutletCollectionAttrKind
    200. | InitPriorityAttrKind
    201. | InternalLinkageAttrKind
    202. | LTOVisibilityPublicAttrKind
    203. | LayoutVersionAttrKind
    204. | LeafAttrKind
    205. | LockReturnedAttrKind
    206. | LocksExcludedAttrKind
    207. | M68kInterruptAttrKind
    208. | MIGServerRoutineAttrKind
    209. | MSAllocatorAttrKind
    210. | MSConstexprAttrKind
    211. | MSInheritanceAttrKind
    212. | MSNoVTableAttrKind
    213. | MSP430InterruptAttrKind
    214. | MSStructAttrKind
    215. | MSVtorDispAttrKind
    216. | MaxFieldAlignmentAttrKind
    217. | MayAliasAttrKind
    218. | MaybeUndefAttrKind
    219. | MicroMipsAttrKind
    220. | MinSizeAttrKind
    221. | MinVectorWidthAttrKind
    222. | Mips16AttrKind
    223. | MipsInterruptAttrKind
    224. | MipsLongCallAttrKind
    225. | MipsShortCallAttrKind
    226. | NSConsumesSelfAttrKind
    227. | NSErrorDomainAttrKind
    228. | NSReturnsAutoreleasedAttrKind
    229. | NSReturnsNotRetainedAttrKind
    230. | NVPTXKernelAttrKind
    231. | NakedAttrKind
    232. | NoAliasAttrKind
    233. | NoCommonAttrKind
    234. | NoDebugAttrKind
    235. | NoDestroyAttrKind
    236. | NoDuplicateAttrKind
    237. | NoInstrumentFunctionAttrKind
    238. | NoMicroMipsAttrKind
    239. | NoMips16AttrKind
    240. | NoProfileFunctionAttrKind
    241. | NoRandomizeLayoutAttrKind
    242. | NoReturnAttrKind
    243. | NoSanitizeAttrKind
    244. | NoSpeculativeLoadHardeningAttrKind
    245. | NoSplitStackAttrKind
    246. | NoStackProtectorAttrKind
    247. | NoThreadSafetyAnalysisAttrKind
    248. | NoThrowAttrKind
    249. | NoUniqueAddressAttrKind
    250. | NoUwtableAttrKind
    251. | NotTailCalledAttrKind
    252. | OMPAllocateDeclAttrKind
    253. | OMPCaptureNoInitAttrKind
    254. | OMPDeclareTargetDeclAttrKind
    255. | OMPDeclareVariantAttrKind
    256. | OMPThreadPrivateDeclAttrKind
    257. | OSConsumesThisAttrKind
    258. | OSReturnsNotRetainedAttrKind
    259. | OSReturnsRetainedAttrKind
    260. | OSReturnsRetainedOnNonZeroAttrKind
    261. | OSReturnsRetainedOnZeroAttrKind
    262. | ObjCBridgeAttrKind
    263. | ObjCBridgeMutableAttrKind
    264. | ObjCBridgeRelatedAttrKind
    265. | ObjCExceptionAttrKind
    266. | ObjCExplicitProtocolImplAttrKind
    267. | ObjCExternallyRetainedAttrKind
    268. | ObjCIndependentClassAttrKind
    269. | ObjCMethodFamilyAttrKind
    270. | ObjCNSObjectAttrKind
    271. | ObjCPreciseLifetimeAttrKind
    272. | ObjCRequiresPropertyDefsAttrKind
    273. | ObjCRequiresSuperAttrKind
    274. | ObjCReturnsInnerPointerAttrKind
    275. | ObjCRootClassAttrKind
    276. | ObjCSubclassingRestrictedAttrKind
    277. | OpenCLIntelReqdSubGroupSizeAttrKind
    278. | OpenCLKernelAttrKind
    279. | OptimizeNoneAttrKind
    280. | OverrideAttrKind
    281. | OwnerAttrKind
    282. | OwnershipAttrKind
    283. | PackedAttrKind
    284. | ParamTypestateAttrKind
    285. | PatchableFunctionEntryAttrKind
    286. | PointerAttrKind
    287. | PragmaClangBSSSectionAttrKind
    288. | PragmaClangDataSectionAttrKind
    289. | PragmaClangRelroSectionAttrKind
    290. | PragmaClangRodataSectionAttrKind
    291. | PragmaClangTextSectionAttrKind
    292. | PreferredNameAttrKind
    293. | PreferredTypeAttrKind
    294. | PtGuardedByAttrKind
    295. | PtGuardedVarAttrKind
    296. | PureAttrKind
    297. | RISCVInterruptAttrKind
    298. | RandomizeLayoutAttrKind
    299. | ReadOnlyPlacementAttrKind
    300. | ReinitializesAttrKind
    301. | ReleaseCapabilityAttrKind
    302. | ReqdWorkGroupSizeAttrKind
    303. | RequiresCapabilityAttrKind
    304. | RestrictAttrKind
    305. | RetainAttrKind
    306. | ReturnTypestateAttrKind
    307. | ReturnsNonNullAttrKind
    308. | ReturnsTwiceAttrKind
    309. | SYCLKernelAttrKind
    310. | SYCLSpecialClassAttrKind
    311. | ScopedLockableAttrKind
    312. | SectionAttrKind
    313. | SelectAnyAttrKind
    314. | SentinelAttrKind
    315. | SetTypestateAttrKind
    316. | SharedTrylockFunctionAttrKind
    317. | SpeculativeLoadHardeningAttrKind
    318. | StandaloneDebugAttrKind
    319. | StrictFPAttrKind
    320. | StrictGuardStackCheckAttrKind
    321. | SwiftAsyncAttrKind
    322. | SwiftAsyncErrorAttrKind
    323. | SwiftAsyncNameAttrKind
    324. | SwiftAttrAttrKind
    325. | SwiftBridgeAttrKind
    326. | SwiftBridgedTypedefAttrKind
    327. | SwiftErrorAttrKind
    328. | SwiftImportAsNonGenericAttrKind
    329. | SwiftImportPropertyAsAccessorsAttrKind
    330. | SwiftNameAttrKind
    331. | SwiftNewTypeAttrKind
    332. | SwiftPrivateAttrKind
    333. | TLSModelAttrKind
    334. | TargetAttrKind
    335. | TargetClonesAttrKind
    336. | TargetVersionAttrKind
    337. | TestTypestateAttrKind
    338. | TransparentUnionAttrKind
    339. | TrivialABIAttrKind
    340. | TryAcquireCapabilityAttrKind
    341. | TypeTagForDatatypeAttrKind
    342. | TypeVisibilityAttrKind
    343. | UnavailableAttrKind
    344. | UninitializedAttrKind
    345. | UnsafeBufferUsageAttrKind
    346. | UnusedAttrKind
    347. | UsedAttrKind
    348. | UsingIfExistsAttrKind
    349. | UuidAttrKind
    350. | VecReturnAttrKind
    351. | VecTypeHintAttrKind
    352. | VisibilityAttrKind
    353. | WarnUnusedAttrKind
    354. | WarnUnusedResultAttrKind
    355. | WeakAttrKind
    356. | WeakImportAttrKind
    357. | WeakRefAttrKind
    358. | WebAssemblyExportNameAttrKind
    359. | WebAssemblyImportModuleAttrKind
    360. | WebAssemblyImportNameAttrKind
    361. | WorkGroupSizeHintAttrKind
    362. | X86ForceAlignArgPointerAttrKind
    363. | XRayInstrumentAttrKind
    364. | XRayLogArgsAttrKind
    365. | ZeroCallUsedRegsAttrKind
    366. | AbiTagAttrKind
    367. | AliasAttrKind
    368. | AlignValueAttrKind
    369. | BuiltinAliasAttrKind
    370. | CalledOnceAttrKind
    371. | IFuncAttrKind
    372. | InitSegAttrKind
    373. | LoaderUninitializedAttrKind
    374. | LoopHintAttrKind
    375. | ModeAttrKind
    376. | NoBuiltinAttrKind
    377. | NoEscapeAttrKind
    378. | OMPCaptureKindAttrKind
    379. | OMPDeclareSimdDeclAttrKind
    380. | OMPReferencedVarAttrKind
    381. | ObjCBoxableAttrKind
    382. | ObjCClassStubAttrKind
    383. | ObjCDesignatedInitializerAttrKind
    384. | ObjCDirectAttrKind
    385. | ObjCDirectMembersAttrKind
    386. | ObjCNonLazyClassAttrKind
    387. | ObjCNonRuntimeProtocolAttrKind
    388. | ObjCRuntimeNameAttrKind
    389. | ObjCRuntimeVisibleAttrKind
    390. | OpenCLAccessAttrKind
    391. | OverloadableAttrKind
    392. | RenderScriptKernelAttrKind
    393. | SwiftObjCMembersAttrKind
    394. | SwiftVersionedAdditionAttrKind
    395. | SwiftVersionedRemovalAttrKind
    396. | ThreadAttrKind
    type binary_operator_kind = Clang_ast_t.binary_operator_kind
    type binary_operator_info = Clang_ast_t.binary_operator_info = {
    1. boi_kind : binary_operator_kind;
    }
    type builtin_type_kind = Clang_ast_t.builtin_type_kind
    type cast_kind = Clang_ast_t.cast_kind
    type cxx_base_specifier = Clang_ast_t.cxx_base_specifier = {
    1. xbs_name : string;
    2. xbs_virtual : bool;
    }
    type cast_expr_info = Clang_ast_t.cast_expr_info = {
    1. cei_cast_kind : cast_kind;
    2. cei_base_path : cxx_base_specifier list;
    }
    type cxx_noexcept_expr_info = Clang_ast_t.cxx_noexcept_expr_info = {
    1. xnee_value : bool;
    }
    type decl_context_info = Clang_ast_t.decl_context_info = {
    1. dci_has_external_lexical_storage : bool;
    2. dci_has_external_visible_storage : bool;
    }
    type decl_kind = Clang_ast_t.decl_kind
    type declaration_name_kind = Clang_ast_t.declaration_name_kind
    type declaration_name = Clang_ast_t.declaration_name = {
    1. dn_kind : declaration_name_kind;
    2. dn_name : string;
    }
    type enum_decl_scope = Clang_ast_t.enum_decl_scope
    type enum_decl_info = Clang_ast_t.enum_decl_info = {
    1. edi_scope : enum_decl_scope option;
    2. edi_is_module_private : bool;
    }
    type input_kind = Clang_ast_t.input_kind
    type integer_literal_info = Clang_ast_t.integer_literal_info = {
    1. ili_is_signed : bool;
    2. ili_bitwidth : int;
    3. ili_value : string;
    }
    type integer_type_widths = Clang_ast_t.integer_type_widths = {
    1. itw_char_type : int;
    2. itw_short_type : int;
    3. itw_int_type : int;
    4. itw_long_type : int;
    5. itw_longlong_type : int;
    }
    type lambda_capture_kind = Clang_ast_t.lambda_capture_kind
    type named_decl_info = Clang_ast_t.named_decl_info = {
    1. ni_name : string;
    2. ni_qual_name : string list;
    }
    type obj_c_access_control = Clang_ast_t.obj_c_access_control
    type obj_c_availability_check_expr_info = Clang_ast_t.obj_c_availability_check_expr_info = {
    1. oacei_version : string option;
    }
    type obj_c_bridge_cast_kind = Clang_ast_t.obj_c_bridge_cast_kind
    type obj_c_bridged_cast_expr_info = Clang_ast_t.obj_c_bridged_cast_expr_info = {
    1. obcei_cast_kind : obj_c_bridge_cast_kind;
    }
    type obj_c_ivar_decl_info = Clang_ast_t.obj_c_ivar_decl_info = {
    1. ovdi_is_synthesize : bool;
    2. ovdi_access_control : obj_c_access_control;
    }
    type obj_c_property_control = Clang_ast_t.obj_c_property_control
    type obj_c_subscript_kind = Clang_ast_t.obj_c_subscript_kind
    type objc_lifetime_attr = Clang_ast_t.objc_lifetime_attr
    type attr_type_info = Clang_ast_t.attr_type_info = {
    1. ati_attr_kind : attribute_kind;
    2. ati_lifetime : objc_lifetime_attr;
    }
    type object_kind = Clang_ast_t.object_kind
    type offset_of_expr_info = Clang_ast_t.offset_of_expr_info = {
    1. ooe_literal : integer_literal_info option;
    }
    type pointer = Clang_ast_t.pointer
    type addr_label_expr_info = Clang_ast_t.addr_label_expr_info = {
    1. alei_label : string;
    2. alei_pointer : pointer;
    }
    type cxx_new_expr_info = Clang_ast_t.cxx_new_expr_info = {
    1. xnei_is_array : bool;
    2. xnei_array_size_expr : pointer option;
    3. xnei_initializer_expr : pointer option;
    4. xnei_placement_args : pointer list;
    }
    type cxx_temporary = Clang_ast_t.cxx_temporary
    type cxx_bind_temporary_expr_info = Clang_ast_t.cxx_bind_temporary_expr_info = {
    1. xbtei_cxx_temporary : cxx_temporary;
    }
    type goto_stmt_info = Clang_ast_t.goto_stmt_info = {
    1. gsi_label : string;
    2. gsi_pointer : pointer;
    }
    type obj_c_array_literal_expr_info = Clang_ast_t.obj_c_array_literal_expr_info = {
    1. oalei_array_method : pointer option;
    }
    type obj_c_dictionary_literal_expr_info = @@ -215,7 +215,7 @@ Atdgen_runtime.Util.Validation.path -> atomic_expr_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type atomic_expr_kind.

    val create_atomic_expr_info : - aei_kind:atomic_expr_kind -> + aei_kind:atomic_expr_kind -> unit -> atomic_expr_info

    Create a record of type atomic_expr_info.

    val validate_atomic_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -227,7 +227,7 @@ Atdgen_runtime.Util.Validation.path -> binary_operator_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type binary_operator_kind.

    val create_binary_operator_info : - boi_kind:binary_operator_kind -> + boi_kind:binary_operator_kind -> unit -> binary_operator_info

    Create a record of type binary_operator_info.

    val validate_binary_operator_info : Atdgen_runtime.Util.Validation.path -> @@ -239,28 +239,28 @@ Atdgen_runtime.Util.Validation.path -> cast_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cast_kind.

    val create_cxx_base_specifier : - xbs_name:string -> - ?xbs_virtual:bool -> + xbs_name:string -> + ?xbs_virtual:bool -> unit -> cxx_base_specifier

    Create a record of type cxx_base_specifier.

    val validate_cxx_base_specifier : Atdgen_runtime.Util.Validation.path -> cxx_base_specifier -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_base_specifier.

    val create_cast_expr_info : - cei_cast_kind:cast_kind -> - cei_base_path:cxx_base_specifier list -> + cei_cast_kind:cast_kind -> + cei_base_path:cxx_base_specifier list -> unit -> cast_expr_info

    Create a record of type cast_expr_info.

    val validate_cast_expr_info : Atdgen_runtime.Util.Validation.path -> cast_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cast_expr_info.

    val create_cxx_noexcept_expr_info : - ?xnee_value:bool -> + ?xnee_value:bool -> unit -> cxx_noexcept_expr_info

    Create a record of type cxx_noexcept_expr_info.

    val validate_cxx_noexcept_expr_info : Atdgen_runtime.Util.Validation.path -> cxx_noexcept_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_noexcept_expr_info.

    val create_decl_context_info : - ?dci_has_external_lexical_storage:bool -> - ?dci_has_external_visible_storage:bool -> + ?dci_has_external_lexical_storage:bool -> + ?dci_has_external_visible_storage:bool -> unit -> decl_context_info

    Create a record of type decl_context_info.

    val validate_decl_context_info : Atdgen_runtime.Util.Validation.path -> @@ -272,8 +272,8 @@ Atdgen_runtime.Util.Validation.path -> declaration_name_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type declaration_name_kind.

    val create_declaration_name : - dn_kind:declaration_name_kind -> - dn_name:string -> + dn_kind:declaration_name_kind -> + dn_name:string -> unit -> declaration_name

    Create a record of type declaration_name.

    val validate_declaration_name : Atdgen_runtime.Util.Validation.path -> @@ -282,8 +282,8 @@ Atdgen_runtime.Util.Validation.path -> enum_decl_scope -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type enum_decl_scope.

    val create_enum_decl_info : - ?edi_scope:enum_decl_scope -> - ?edi_is_module_private:bool -> + ?edi_scope:enum_decl_scope -> + ?edi_is_module_private:bool -> unit -> enum_decl_info

    Create a record of type enum_decl_info.

    val validate_enum_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -292,19 +292,19 @@ Atdgen_runtime.Util.Validation.path -> input_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type input_kind.

    val create_integer_literal_info : - ?ili_is_signed:bool -> - ili_bitwidth:int -> - ili_value:string -> + ?ili_is_signed:bool -> + ili_bitwidth:int -> + ili_value:string -> unit -> integer_literal_info

    Create a record of type integer_literal_info.

    val validate_integer_literal_info : Atdgen_runtime.Util.Validation.path -> integer_literal_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type integer_literal_info.

    val create_integer_type_widths : - itw_char_type:int -> - itw_short_type:int -> - itw_int_type:int -> - itw_long_type:int -> - itw_longlong_type:int -> + itw_char_type:int -> + itw_short_type:int -> + itw_int_type:int -> + itw_long_type:int -> + itw_longlong_type:int -> unit -> integer_type_widths

    Create a record of type integer_type_widths.

    val validate_integer_type_widths : Atdgen_runtime.Util.Validation.path -> @@ -313,8 +313,8 @@ Atdgen_runtime.Util.Validation.path -> lambda_capture_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type lambda_capture_kind.

    val create_named_decl_info : - ni_name:string -> - ni_qual_name:string list -> + ni_name:string -> + ni_qual_name:string list -> unit -> named_decl_info

    Create a record of type named_decl_info.

    val validate_named_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -323,7 +323,7 @@ Atdgen_runtime.Util.Validation.path -> obj_c_access_control -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_access_control.

    val create_obj_c_availability_check_expr_info : - ?oacei_version:string -> + ?oacei_version:string -> unit -> obj_c_availability_check_expr_info

    Create a record of type obj_c_availability_check_expr_info.

    val validate_obj_c_availability_check_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -332,14 +332,14 @@ Atdgen_runtime.Util.Validation.path -> obj_c_bridge_cast_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_bridge_cast_kind.

    val create_obj_c_bridged_cast_expr_info : - obcei_cast_kind:obj_c_bridge_cast_kind -> + obcei_cast_kind:obj_c_bridge_cast_kind -> unit -> obj_c_bridged_cast_expr_info

    Create a record of type obj_c_bridged_cast_expr_info.

    val validate_obj_c_bridged_cast_expr_info : Atdgen_runtime.Util.Validation.path -> obj_c_bridged_cast_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_bridged_cast_expr_info.

    val create_obj_c_ivar_decl_info : - ?ovdi_is_synthesize:bool -> - ?ovdi_access_control:obj_c_access_control -> + ?ovdi_is_synthesize:bool -> + ?ovdi_access_control:obj_c_access_control -> unit -> obj_c_ivar_decl_info

    Create a record of type obj_c_ivar_decl_info.

    val validate_obj_c_ivar_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -354,8 +354,8 @@ Atdgen_runtime.Util.Validation.path -> objc_lifetime_attr -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type objc_lifetime_attr.

    val create_attr_type_info : - ati_attr_kind:attribute_kind -> - ?ati_lifetime:objc_lifetime_attr -> + ati_attr_kind:attribute_kind -> + ?ati_lifetime:objc_lifetime_attr -> unit -> attr_type_info

    Create a record of type attr_type_info.

    val validate_attr_type_info : Atdgen_runtime.Util.Validation.path -> @@ -364,7 +364,7 @@ Atdgen_runtime.Util.Validation.path -> object_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type object_kind.

    val create_offset_of_expr_info : - ?ooe_literal:integer_literal_info -> + ?ooe_literal:integer_literal_info -> unit -> offset_of_expr_info

    Create a record of type offset_of_expr_info.

    val validate_offset_of_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -373,17 +373,17 @@ Atdgen_runtime.Util.Validation.path -> pointer -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type pointer.

    val create_addr_label_expr_info : - alei_label:string -> - alei_pointer:pointer -> + alei_label:string -> + alei_pointer:pointer -> unit -> addr_label_expr_info

    Create a record of type addr_label_expr_info.

    val validate_addr_label_expr_info : Atdgen_runtime.Util.Validation.path -> addr_label_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type addr_label_expr_info.

    val create_cxx_new_expr_info : - ?xnei_is_array:bool -> - ?xnei_array_size_expr:pointer -> - ?xnei_initializer_expr:pointer -> - ?xnei_placement_args:pointer list -> + ?xnei_is_array:bool -> + ?xnei_array_size_expr:pointer -> + ?xnei_initializer_expr:pointer -> + ?xnei_placement_args:pointer list -> unit -> cxx_new_expr_info

    Create a record of type cxx_new_expr_info.

    val validate_cxx_new_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -392,26 +392,26 @@ Atdgen_runtime.Util.Validation.path -> cxx_temporary -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_temporary.

    val create_cxx_bind_temporary_expr_info : - xbtei_cxx_temporary:cxx_temporary -> + xbtei_cxx_temporary:cxx_temporary -> unit -> cxx_bind_temporary_expr_info

    Create a record of type cxx_bind_temporary_expr_info.

    val validate_cxx_bind_temporary_expr_info : Atdgen_runtime.Util.Validation.path -> cxx_bind_temporary_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_bind_temporary_expr_info.

    val create_goto_stmt_info : - gsi_label:string -> - gsi_pointer:pointer -> + gsi_label:string -> + gsi_pointer:pointer -> unit -> goto_stmt_info

    Create a record of type goto_stmt_info.

    val validate_goto_stmt_info : Atdgen_runtime.Util.Validation.path -> goto_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type goto_stmt_info.

    val create_obj_c_array_literal_expr_info : - ?oalei_array_method:pointer -> + ?oalei_array_method:pointer -> unit -> obj_c_array_literal_expr_info

    Create a record of type obj_c_array_literal_expr_info.

    val validate_obj_c_array_literal_expr_info : Atdgen_runtime.Util.Validation.path -> obj_c_array_literal_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_array_literal_expr_info.

    val create_obj_c_dictionary_literal_expr_info : - ?odlei_dict_method:pointer -> + ?odlei_dict_method:pointer -> unit -> obj_c_dictionary_literal_expr_info

    Create a record of type obj_c_dictionary_literal_expr_info.

    val validate_obj_c_dictionary_literal_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -426,10 +426,10 @@ Atdgen_runtime.Util.Validation.path -> property_implementation -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type property_implementation.

    val create_record_decl_info : - rdi_definition_ptr:pointer -> - ?rdi_is_module_private:bool -> - ?rdi_is_complete_definition:bool -> - ?rdi_is_dependent_type:bool -> + rdi_definition_ptr:pointer -> + ?rdi_is_module_private:bool -> + ?rdi_is_complete_definition:bool -> + ?rdi_is_dependent_type:bool -> unit -> record_decl_info

    Create a record of type record_decl_info.

    val validate_record_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -438,29 +438,29 @@ Atdgen_runtime.Util.Validation.path -> selector -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type selector.

    val create_obj_c_method_ref_info : - ?mri_getter:selector -> - ?mri_setter:selector -> + ?mri_getter:selector -> + ?mri_setter:selector -> unit -> obj_c_method_ref_info

    Create a record of type obj_c_method_ref_info.

    val validate_obj_c_method_ref_info : Atdgen_runtime.Util.Validation.path -> obj_c_method_ref_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_method_ref_info.

    val create_obj_c_subscript_ref_expr_info : - osrei_kind:obj_c_subscript_kind -> - ?osrei_getter:selector -> - ?osrei_setter:selector -> + osrei_kind:obj_c_subscript_kind -> + ?osrei_getter:selector -> + ?osrei_setter:selector -> unit -> obj_c_subscript_ref_expr_info

    Create a record of type obj_c_subscript_ref_expr_info.

    val validate_obj_c_subscript_ref_expr_info : Atdgen_runtime.Util.Validation.path -> obj_c_subscript_ref_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_subscript_ref_expr_info.

    val create_objc_boxed_expr_info : - ?obei_boxing_method:selector -> + ?obei_boxing_method:selector -> unit -> objc_boxed_expr_info

    Create a record of type objc_boxed_expr_info.

    val validate_objc_boxed_expr_info : Atdgen_runtime.Util.Validation.path -> objc_boxed_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type objc_boxed_expr_info.

    val create_sentinel_attr_info : - sai_sentinel:int -> - sai_null_pos:int -> + sai_sentinel:int -> + sai_null_pos:int -> unit -> sentinel_attr_info

    Create a record of type sentinel_attr_info.

    val validate_sentinel_attr_info : Atdgen_runtime.Util.Validation.path -> @@ -469,12 +469,12 @@ Atdgen_runtime.Util.Validation.path -> source_file -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type source_file.

    val create_source_location : - ?sl_file:source_file -> - ?sl_line:int -> - ?sl_column:int -> - ?sl_is_macro:bool -> - ?sl_macro_file:source_file -> - ?sl_macro_line:int -> + ?sl_file:source_file -> + ?sl_line:int -> + ?sl_column:int -> + ?sl_is_macro:bool -> + ?sl_macro_file:source_file -> + ?sl_macro_line:int -> unit -> source_location

    Create a record of type source_location.

    val validate_source_location : Atdgen_runtime.Util.Validation.path -> @@ -483,8 +483,8 @@ Atdgen_runtime.Util.Validation.path -> source_range -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type source_range.

    val create_attribute_info : - ai_pointer:pointer -> - ai_source_range:source_range -> + ai_pointer:pointer -> + ai_source_range:source_range -> unit -> attribute_info

    Create a record of type attribute_info.

    val validate_attribute_info : Atdgen_runtime.Util.Validation.path -> @@ -493,8 +493,8 @@ Atdgen_runtime.Util.Validation.path -> attr_tuple -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type attr_tuple.

    val create_comment_info : - ci_parent_pointer:pointer -> - ci_source_range:source_range -> + ci_parent_pointer:pointer -> + ci_source_range:source_range -> unit -> comment_info

    Create a record of type comment_info.

    val validate_comment_info : Atdgen_runtime.Util.Validation.path -> @@ -503,8 +503,8 @@ Atdgen_runtime.Util.Validation.path -> specifier_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type specifier_kind.

    val create_stmt_info : - si_pointer:pointer -> - si_source_range:source_range -> + si_pointer:pointer -> + si_source_range:source_range -> unit -> stmt_info

    Create a record of type stmt_info.

    val validate_stmt_info : Atdgen_runtime.Util.Validation.path -> @@ -516,50 +516,50 @@ Atdgen_runtime.Util.Validation.path -> type_ptr -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type type_ptr.

    val create_qual_type : - qt_type_ptr:type_ptr -> - ?qt_is_const:bool -> - ?qt_is_restrict:bool -> - ?qt_is_volatile:bool -> + qt_type_ptr:type_ptr -> + ?qt_is_const:bool -> + ?qt_is_restrict:bool -> + ?qt_is_volatile:bool -> unit -> qual_type

    Create a record of type qual_type.

    val validate_qual_type : Atdgen_runtime.Util.Validation.path -> qual_type -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type qual_type.

    val create_array_type_info : - arti_element_type:qual_type -> - ?arti_stride:int -> + arti_element_type:qual_type -> + ?arti_stride:int -> unit -> array_type_info

    Create a record of type array_type_info.

    val validate_array_type_info : Atdgen_runtime.Util.Validation.path -> array_type_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type array_type_info.

    val create_compound_assign_operator_info : - caoi_lhs_type:qual_type -> - caoi_result_type:qual_type -> + caoi_lhs_type:qual_type -> + caoi_result_type:qual_type -> unit -> compound_assign_operator_info

    Create a record of type compound_assign_operator_info.

    val validate_compound_assign_operator_info : Atdgen_runtime.Util.Validation.path -> compound_assign_operator_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type compound_assign_operator_info.

    val create_cxx_delete_expr_info : - ?xdei_is_array:bool -> - xdei_destroyed_type:qual_type -> + ?xdei_is_array:bool -> + xdei_destroyed_type:qual_type -> unit -> cxx_delete_expr_info

    Create a record of type cxx_delete_expr_info.

    val validate_cxx_delete_expr_info : Atdgen_runtime.Util.Validation.path -> cxx_delete_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_delete_expr_info.

    val create_decl_ref : - dr_kind:decl_kind -> - dr_decl_pointer:pointer -> - ?dr_name:named_decl_info -> - ?dr_is_hidden:bool -> - ?dr_qual_type:qual_type -> + dr_kind:decl_kind -> + dr_decl_pointer:pointer -> + ?dr_name:named_decl_info -> + ?dr_is_hidden:bool -> + ?dr_qual_type:qual_type -> unit -> decl_ref

    Create a record of type decl_ref.

    val validate_decl_ref : Atdgen_runtime.Util.Validation.path -> decl_ref -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type decl_ref.

    val create_cxx_construct_expr_info : - xcei_decl_ref:decl_ref -> - ?xcei_is_elidable:bool -> - ?xcei_requires_zero_initialization:bool -> - ?xcei_is_copy_constructor:bool -> + xcei_decl_ref:decl_ref -> + ?xcei_is_elidable:bool -> + ?xcei_requires_zero_initialization:bool -> + ?xcei_is_copy_constructor:bool -> unit -> cxx_construct_expr_info

    Create a record of type cxx_construct_expr_info.

    val validate_cxx_construct_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -568,149 +568,149 @@ Atdgen_runtime.Util.Validation.path -> cxx_ctor_initializer_subject -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_ctor_initializer_subject.

    val create_decl_ref_expr_info : - ?drti_decl_ref:decl_ref -> - ?drti_found_decl_ref:decl_ref -> + ?drti_decl_ref:decl_ref -> + ?drti_found_decl_ref:decl_ref -> unit -> decl_ref_expr_info

    Create a record of type decl_ref_expr_info.

    val validate_decl_ref_expr_info : Atdgen_runtime.Util.Validation.path -> decl_ref_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type decl_ref_expr_info.

    val create_expr_with_cleanups_info : - ?ewci_decl_refs:decl_ref list -> + ?ewci_decl_refs:decl_ref list -> unit -> expr_with_cleanups_info

    Create a record of type expr_with_cleanups_info.

    val validate_expr_with_cleanups_info : Atdgen_runtime.Util.Validation.path -> expr_with_cleanups_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type expr_with_cleanups_info.

    val create_function_type_info : - fti_return_type:qual_type -> + fti_return_type:qual_type -> unit -> function_type_info

    Create a record of type function_type_info.

    val validate_function_type_info : Atdgen_runtime.Util.Validation.path -> function_type_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type function_type_info.

    val create_materialize_temporary_expr_info : - ?mtei_decl_ref:decl_ref -> + ?mtei_decl_ref:decl_ref -> unit -> materialize_temporary_expr_info

    Create a record of type materialize_temporary_expr_info.

    val validate_materialize_temporary_expr_info : Atdgen_runtime.Util.Validation.path -> materialize_temporary_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type materialize_temporary_expr_info.

    val create_member_expr_info : - ?mei_is_arrow:bool -> - ?mei_performs_virtual_dispatch:bool -> - mei_name:named_decl_info -> - mei_decl_ref:decl_ref -> + ?mei_is_arrow:bool -> + ?mei_performs_virtual_dispatch:bool -> + mei_name:named_decl_info -> + mei_decl_ref:decl_ref -> unit -> member_expr_info

    Create a record of type member_expr_info.

    val validate_member_expr_info : Atdgen_runtime.Util.Validation.path -> member_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type member_expr_info.

    val create_namespace_decl_info : - ?ndi_is_inline:bool -> - ?ndi_original_namespace:decl_ref -> + ?ndi_is_inline:bool -> + ?ndi_original_namespace:decl_ref -> unit -> namespace_decl_info

    Create a record of type namespace_decl_info.

    val validate_namespace_decl_info : Atdgen_runtime.Util.Validation.path -> namespace_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type namespace_decl_info.

    val create_nested_name_specifier_loc : - nnsl_kind:specifier_kind -> - ?nnsl_ref:decl_ref -> + nnsl_kind:specifier_kind -> + ?nnsl_ref:decl_ref -> unit -> nested_name_specifier_loc

    Create a record of type nested_name_specifier_loc.

    val validate_nested_name_specifier_loc : Atdgen_runtime.Util.Validation.path -> nested_name_specifier_loc -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type nested_name_specifier_loc.

    val create_namespace_alias_decl_info : - nadi_namespace_loc:source_location -> - nadi_target_name_loc:source_location -> - nadi_nested_name_specifier_locs:nested_name_specifier_loc list -> - nadi_namespace:decl_ref -> + nadi_namespace_loc:source_location -> + nadi_target_name_loc:source_location -> + nadi_nested_name_specifier_locs:nested_name_specifier_loc list -> + nadi_namespace:decl_ref -> unit -> namespace_alias_decl_info

    Create a record of type namespace_alias_decl_info.

    val validate_namespace_alias_decl_info : Atdgen_runtime.Util.Validation.path -> namespace_alias_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type namespace_alias_decl_info.

    val create_obj_c_category_decl_info : - ?odi_class_interface:decl_ref -> - ?odi_implementation:decl_ref -> - ?odi_protocols:decl_ref list -> + ?odi_class_interface:decl_ref -> + ?odi_implementation:decl_ref -> + ?odi_protocols:decl_ref list -> unit -> obj_c_category_decl_info

    Create a record of type obj_c_category_decl_info.

    val validate_obj_c_category_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_category_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_category_decl_info.

    val create_obj_c_category_impl_decl_info : - ?ocidi_class_interface:decl_ref -> - ?ocidi_category_decl:decl_ref -> + ?ocidi_class_interface:decl_ref -> + ?ocidi_category_decl:decl_ref -> unit -> obj_c_category_impl_decl_info

    Create a record of type obj_c_category_impl_decl_info.

    val validate_obj_c_category_impl_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_category_impl_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_category_impl_decl_info.

    val create_obj_c_compatible_alias_decl_info : - ?ocadi_class_interface:decl_ref -> + ?ocadi_class_interface:decl_ref -> unit -> obj_c_compatible_alias_decl_info

    Create a record of type obj_c_compatible_alias_decl_info.

    val validate_obj_c_compatible_alias_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_compatible_alias_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_compatible_alias_decl_info.

    val create_obj_c_interface_decl_info : - ?otdi_super:decl_ref -> - ?otdi_implementation:decl_ref -> - ?otdi_protocols:decl_ref list -> - ?otdi_known_categories:decl_ref list -> + ?otdi_super:decl_ref -> + ?otdi_implementation:decl_ref -> + ?otdi_protocols:decl_ref list -> + ?otdi_known_categories:decl_ref list -> unit -> obj_c_interface_decl_info

    Create a record of type obj_c_interface_decl_info.

    val validate_obj_c_interface_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_interface_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_interface_decl_info.

    val create_obj_c_ivar_ref_expr_info : - ovrei_decl_ref:decl_ref -> - ovrei_pointer:pointer -> - ?ovrei_is_free_ivar:bool -> + ovrei_decl_ref:decl_ref -> + ovrei_pointer:pointer -> + ?ovrei_is_free_ivar:bool -> unit -> obj_c_ivar_ref_expr_info

    Create a record of type obj_c_ivar_ref_expr_info.

    val validate_obj_c_ivar_ref_expr_info : Atdgen_runtime.Util.Validation.path -> obj_c_ivar_ref_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_ivar_ref_expr_info.

    val create_obj_c_property_decl_info : - opdi_qual_type:qual_type -> - ?opdi_getter_method:decl_ref -> - ?opdi_setter_method:decl_ref -> - ?opdi_ivar_decl:decl_ref -> - ?opdi_property_control:obj_c_property_control -> - ?opdi_property_attributes:property_attribute list -> + opdi_qual_type:qual_type -> + ?opdi_getter_method:decl_ref -> + ?opdi_setter_method:decl_ref -> + ?opdi_ivar_decl:decl_ref -> + ?opdi_property_control:obj_c_property_control -> + ?opdi_property_attributes:property_attribute list -> unit -> obj_c_property_decl_info

    Create a record of type obj_c_property_decl_info.

    val validate_obj_c_property_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_property_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_property_decl_info.

    val create_obj_c_property_impl_decl_info : - opidi_implementation:property_implementation -> - ?opidi_property_decl:decl_ref -> - ?opidi_ivar_decl:decl_ref -> + opidi_implementation:property_implementation -> + ?opidi_property_decl:decl_ref -> + ?opidi_ivar_decl:decl_ref -> unit -> obj_c_property_impl_decl_info

    Create a record of type obj_c_property_impl_decl_info.

    val validate_obj_c_property_impl_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_property_impl_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_property_impl_decl_info.

    val create_obj_c_protocol_decl_info : - ?opcdi_protocols:decl_ref list -> + ?opcdi_protocols:decl_ref list -> unit -> obj_c_protocol_decl_info

    Create a record of type obj_c_protocol_decl_info.

    val validate_obj_c_protocol_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_protocol_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_protocol_decl_info.

    val create_objc_encode_expr_info : - oeei_qual_type:qual_type -> - oeei_raw:string -> + oeei_qual_type:qual_type -> + oeei_raw:string -> unit -> objc_encode_expr_info

    Create a record of type objc_encode_expr_info.

    val validate_objc_encode_expr_info : Atdgen_runtime.Util.Validation.path -> objc_encode_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type objc_encode_expr_info.

    val create_objc_object_type_info : - ooti_base_type:type_ptr -> - ?ooti_protocol_decls_ptr:pointer list -> - ?ooti_type_args:qual_type list -> + ooti_base_type:type_ptr -> + ?ooti_protocol_decls_ptr:pointer list -> + ?ooti_type_args:qual_type list -> unit -> objc_object_type_info

    Create a record of type objc_object_type_info.

    val validate_objc_object_type_info : Atdgen_runtime.Util.Validation.path -> objc_object_type_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type objc_object_type_info.

    val create_overload_expr_info : - ?oei_decls:decl_ref list -> - oei_name:declaration_name -> + ?oei_decls:decl_ref list -> + oei_name:declaration_name -> unit -> overload_expr_info

    Create a record of type overload_expr_info.

    val validate_overload_expr_info : Atdgen_runtime.Util.Validation.path -> overload_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type overload_expr_info.

    val create_params_type_info : - ?pti_params_type:qual_type list -> + ?pti_params_type:qual_type list -> unit -> params_type_info

    Create a record of type params_type_info.

    val validate_params_type_info : Atdgen_runtime.Util.Validation.path -> @@ -719,10 +719,10 @@ Atdgen_runtime.Util.Validation.path -> property_ref_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type property_ref_kind.

    val create_obj_c_property_ref_expr_info : - oprei_kind:property_ref_kind -> - ?oprei_is_super_receiver:bool -> - ?oprei_is_messaging_getter:bool -> - ?oprei_is_messaging_setter:bool -> + oprei_kind:property_ref_kind -> + ?oprei_is_super_receiver:bool -> + ?oprei_is_messaging_getter:bool -> + ?oprei_is_messaging_setter:bool -> unit -> obj_c_property_ref_expr_info

    Create a record of type obj_c_property_ref_expr_info.

    val validate_obj_c_property_ref_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -731,33 +731,33 @@ Atdgen_runtime.Util.Validation.path -> receiver_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type receiver_kind.

    val create_obj_c_message_expr_info : - omei_selector:string -> - ?omei_is_definition_found:bool -> - ?omei_decl_pointer:pointer -> - ?omei_receiver_kind:receiver_kind -> + omei_selector:string -> + ?omei_is_definition_found:bool -> + ?omei_decl_pointer:pointer -> + ?omei_receiver_kind:receiver_kind -> unit -> obj_c_message_expr_info

    Create a record of type obj_c_message_expr_info.

    val validate_obj_c_message_expr_info : Atdgen_runtime.Util.Validation.path -> obj_c_message_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_message_expr_info.

    val create_type_info : - ti_pointer:pointer -> - ?ti_desugared_type:type_ptr -> + ti_pointer:pointer -> + ?ti_desugared_type:type_ptr -> unit -> type_info

    Create a record of type type_info.

    val validate_type_info : Atdgen_runtime.Util.Validation.path -> type_info -> - Atdgen_runtime.Util.Validation.error option

    Validate a value of type type_info.

    val create_type_trait_info : ?xtti_value:bool -> unit -> type_trait_info

    Create a record of type type_trait_info.

    val validate_type_trait_info : + Atdgen_runtime.Util.Validation.error option

    Validate a value of type type_info.

    val create_type_trait_info : ?xtti_value:bool -> unit -> type_trait_info

    Create a record of type type_trait_info.

    val validate_type_trait_info : Atdgen_runtime.Util.Validation.path -> type_trait_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type type_trait_info.

    val create_typedef_decl_info : - ?tdi_is_module_private:bool -> + ?tdi_is_module_private:bool -> unit -> typedef_decl_info

    Create a record of type typedef_decl_info.

    val validate_typedef_decl_info : Atdgen_runtime.Util.Validation.path -> typedef_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type typedef_decl_info.

    val create_typedef_type_info : - tti_child_type:qual_type -> - tti_decl_ptr:pointer -> + tti_child_type:qual_type -> + tti_decl_ptr:pointer -> unit -> typedef_type_info

    Create a record of type typedef_type_info.

    val validate_typedef_type_info : Atdgen_runtime.Util.Validation.path -> @@ -766,11 +766,11 @@ Atdgen_runtime.Util.Validation.path -> c_type -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type c_type.

    val create_translation_unit_decl_info : - tudi_input_path:source_file -> - tudi_input_kind:input_kind -> - tudi_integer_type_widths:integer_type_widths -> - ?tudi_is_objc_arc_on:bool -> - tudi_types:c_type list -> + tudi_input_path:source_file -> + tudi_input_kind:input_kind -> + tudi_integer_type_widths:integer_type_widths -> + ?tudi_is_objc_arc_on:bool -> + tudi_types:c_type list -> unit -> translation_unit_decl_info

    Create a record of type translation_unit_decl_info.

    val validate_translation_unit_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -779,8 +779,8 @@ Atdgen_runtime.Util.Validation.path -> unary_expr_or_type_trait_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type unary_expr_or_type_trait_kind.

    val create_unary_expr_or_type_trait_expr_info : - uttei_kind:unary_expr_or_type_trait_kind -> - uttei_qual_type:qual_type -> + uttei_kind:unary_expr_or_type_trait_kind -> + uttei_qual_type:qual_type -> unit -> unary_expr_or_type_trait_expr_info

    Create a record of type unary_expr_or_type_trait_expr_info.

    val validate_unary_expr_or_type_trait_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -789,25 +789,25 @@ Atdgen_runtime.Util.Validation.path -> unary_operator_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type unary_operator_kind.

    val create_unary_operator_info : - uoi_kind:unary_operator_kind -> - ?uoi_is_postfix:bool -> + uoi_kind:unary_operator_kind -> + ?uoi_is_postfix:bool -> unit -> unary_operator_info

    Create a record of type unary_operator_info.

    val validate_unary_operator_info : Atdgen_runtime.Util.Validation.path -> unary_operator_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type unary_operator_info.

    val create_unresolved_lookup_expr_info : - ?ulei_requires_ADL:bool -> - ?ulei_is_overloaded:bool -> - ?ulei_naming_class:decl_ref -> + ?ulei_requires_ADL:bool -> + ?ulei_is_overloaded:bool -> + ?ulei_naming_class:decl_ref -> unit -> unresolved_lookup_expr_info

    Create a record of type unresolved_lookup_expr_info.

    val validate_unresolved_lookup_expr_info : Atdgen_runtime.Util.Validation.path -> unresolved_lookup_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type unresolved_lookup_expr_info.

    val create_using_directive_decl_info : - uddi_using_location:source_location -> - uddi_namespace_key_location:source_location -> - uddi_nested_name_specifier_locs:nested_name_specifier_loc list -> - ?uddi_nominated_namespace:decl_ref -> + uddi_using_location:source_location -> + uddi_namespace_key_location:source_location -> + uddi_nested_name_specifier_locs:nested_name_specifier_loc list -> + ?uddi_nominated_namespace:decl_ref -> unit -> using_directive_decl_info

    Create a record of type using_directive_decl_info.

    val validate_using_directive_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -816,25 +816,25 @@ Atdgen_runtime.Util.Validation.path -> value_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type value_kind.

    val create_expr_info : - ei_qual_type:qual_type -> - ?ei_value_kind:value_kind -> - ?ei_object_kind:object_kind -> + ei_qual_type:qual_type -> + ?ei_value_kind:value_kind -> + ?ei_object_kind:object_kind -> unit -> expr_info

    Create a record of type expr_info.

    val validate_expr_info : Atdgen_runtime.Util.Validation.path -> expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type expr_info.

    val create_version_tuple : - vt_major:int -> - ?vt_minor:int -> - ?vt_subminor:int -> - ?vt_build:int -> + vt_major:int -> + ?vt_minor:int -> + ?vt_subminor:int -> + ?vt_build:int -> unit -> version_tuple

    Create a record of type version_tuple.

    val validate_version_tuple : Atdgen_runtime.Util.Validation.path -> version_tuple -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type version_tuple.

    val create_availability_attr_info : - ?aai_platform:string -> - aai_introduced:version_tuple -> + ?aai_platform:string -> + aai_introduced:version_tuple -> unit -> availability_attr_info

    Create a record of type availability_attr_info.

    val validate_availability_attr_info : Atdgen_runtime.Util.Validation.path -> @@ -852,106 +852,106 @@ Atdgen_runtime.Util.Validation.path -> comment -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type comment.

    val create_template_specialization_info : - tsi_template_decl:pointer -> - ?tsi_specialization_args:template_instantiation_arg_info list -> + tsi_template_decl:pointer -> + ?tsi_specialization_args:template_instantiation_arg_info list -> unit -> template_specialization_info

    Create a record of type template_specialization_info.

    val validate_template_specialization_info : Atdgen_runtime.Util.Validation.path -> template_specialization_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type template_specialization_info.

    val create_decl_info : - di_pointer:pointer -> - ?di_parent_pointer:pointer -> - di_source_range:source_range -> - ?di_owning_module:string -> - ?di_is_hidden:bool -> - ?di_is_implicit:bool -> - ?di_is_used:bool -> - ?di_is_this_declaration_referenced:bool -> - ?di_is_invalid_decl:bool -> - ?di_attributes:attribute list -> - ?di_full_comment:comment -> - ?di_access:access_specifier -> + di_pointer:pointer -> + ?di_parent_pointer:pointer -> + di_source_range:source_range -> + ?di_owning_module:string -> + ?di_is_hidden:bool -> + ?di_is_implicit:bool -> + ?di_is_used:bool -> + ?di_is_this_declaration_referenced:bool -> + ?di_is_invalid_decl:bool -> + ?di_attributes:attribute list -> + ?di_full_comment:comment -> + ?di_access:access_specifier -> unit -> decl_info

    Create a record of type decl_info.

    val validate_decl_info : Atdgen_runtime.Util.Validation.path -> decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type decl_info.

    val create_block_captured_variable : - ?bcv_is_by_ref:bool -> - ?bcv_is_nested:bool -> - ?bcv_variable:decl_ref -> - ?bcv_copy_expr:stmt -> + ?bcv_is_by_ref:bool -> + ?bcv_is_nested:bool -> + ?bcv_variable:decl_ref -> + ?bcv_copy_expr:stmt -> unit -> block_captured_variable

    Create a record of type block_captured_variable.

    val validate_block_captured_variable : Atdgen_runtime.Util.Validation.path -> block_captured_variable -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type block_captured_variable.

    val create_block_decl_info : - ?bdi_parameters:decl list -> - ?bdi_is_variadic:bool -> - ?bdi_captures_cxx_this:bool -> - ?bdi_captured_variables:block_captured_variable list -> - ?bdi_body:stmt -> - ?bdi_mangled_name:string -> + ?bdi_parameters:decl list -> + ?bdi_is_variadic:bool -> + ?bdi_captures_cxx_this:bool -> + ?bdi_captured_variables:block_captured_variable list -> + ?bdi_body:stmt -> + ?bdi_mangled_name:string -> unit -> block_decl_info

    Create a record of type block_decl_info.

    val validate_block_decl_info : Atdgen_runtime.Util.Validation.path -> block_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type block_decl_info.

    val create_coreturn_stmt_info : - ?coret_operand:stmt -> - ?coret_promise_call:stmt -> + ?coret_operand:stmt -> + ?coret_promise_call:stmt -> unit -> coreturn_stmt_info

    Create a record of type coreturn_stmt_info.

    val validate_coreturn_stmt_info : Atdgen_runtime.Util.Validation.path -> coreturn_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type coreturn_stmt_info.

    val create_coro_body_stmt_info : - cbs_body:pointer -> - cbs_promise_decl_stmt:pointer -> - cbs_return_value:stmt -> + cbs_body:pointer -> + cbs_promise_decl_stmt:pointer -> + cbs_return_value:stmt -> unit -> coro_body_stmt_info

    Create a record of type coro_body_stmt_info.

    val validate_coro_body_stmt_info : Atdgen_runtime.Util.Validation.path -> coro_body_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type coro_body_stmt_info.

    val create_cxx_catch_stmt_info : - ?xcsi_variable:decl -> + ?xcsi_variable:decl -> unit -> cxx_catch_stmt_info

    Create a record of type cxx_catch_stmt_info.

    val validate_cxx_catch_stmt_info : Atdgen_runtime.Util.Validation.path -> cxx_catch_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_catch_stmt_info.

    val create_cxx_ctor_initializer : - xci_subject:cxx_ctor_initializer_subject -> - xci_source_range:source_range -> - ?xci_init_expr:stmt -> + xci_subject:cxx_ctor_initializer_subject -> + xci_source_range:source_range -> + ?xci_init_expr:stmt -> unit -> cxx_ctor_initializer

    Create a record of type cxx_ctor_initializer.

    val validate_cxx_ctor_initializer : Atdgen_runtime.Util.Validation.path -> cxx_ctor_initializer -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_ctor_initializer.

    val create_cxx_default_expr_info : - ?xdaei_init_expr:stmt -> + ?xdaei_init_expr:stmt -> unit -> cxx_default_expr_info

    Create a record of type cxx_default_expr_info.

    val validate_cxx_default_expr_info : Atdgen_runtime.Util.Validation.path -> cxx_default_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_default_expr_info.

    val create_cxx_method_decl_info : - ?xmdi_is_virtual:bool -> - ?xmdi_is_static:bool -> - ?xmdi_is_const:bool -> - ?xmdi_is_copy_assignment:bool -> - ?xmdi_is_copy_constructor:bool -> - ?xmdi_is_move_constructor:bool -> - ?xmdi_cxx_ctor_initializers:cxx_ctor_initializer list -> - ?xmdi_overriden_methods:decl_ref list -> + ?xmdi_is_virtual:bool -> + ?xmdi_is_static:bool -> + ?xmdi_is_const:bool -> + ?xmdi_is_copy_assignment:bool -> + ?xmdi_is_copy_constructor:bool -> + ?xmdi_is_move_constructor:bool -> + ?xmdi_cxx_ctor_initializers:cxx_ctor_initializer list -> + ?xmdi_overriden_methods:decl_ref list -> unit -> cxx_method_decl_info

    Create a record of type cxx_method_decl_info.

    val validate_cxx_method_decl_info : Atdgen_runtime.Util.Validation.path -> cxx_method_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type cxx_method_decl_info.

    val create_cxx_record_decl_info : - ?xrdi_bases:type_ptr list -> - ?xrdi_vbases:type_ptr list -> - ?xrdi_transitive_vbases:type_ptr list -> - ?xrdi_is_pod:bool -> - ?xrdi_is_trivially_copyable:bool -> - ?xrdi_destructor:decl_ref -> - ?xrdi_lambda_call_operator:decl_ref -> - ?xrdi_lambda_captures:lambda_capture_info list -> + ?xrdi_bases:type_ptr list -> + ?xrdi_vbases:type_ptr list -> + ?xrdi_transitive_vbases:type_ptr list -> + ?xrdi_is_pod:bool -> + ?xrdi_is_trivially_copyable:bool -> + ?xrdi_destructor:decl_ref -> + ?xrdi_lambda_call_operator:decl_ref -> + ?xrdi_lambda_captures:lambda_capture_info list -> unit -> cxx_record_decl_info

    Create a record of type cxx_record_decl_info.

    val validate_cxx_record_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -960,16 +960,16 @@ Atdgen_runtime.Util.Validation.path -> decl -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type decl.

    val create_enum_constant_decl_info : - ?ecdi_init_expr:stmt -> + ?ecdi_init_expr:stmt -> unit -> enum_constant_decl_info

    Create a record of type enum_constant_decl_info.

    val validate_enum_constant_decl_info : Atdgen_runtime.Util.Validation.path -> enum_constant_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type enum_constant_decl_info.

    val create_field_decl_info : - ?fldi_is_mutable:bool -> - ?fldi_is_module_private:bool -> - ?fldi_init_expr:stmt -> - ?fldi_bit_width_expr:stmt -> + ?fldi_is_mutable:bool -> + ?fldi_is_module_private:bool -> + ?fldi_init_expr:stmt -> + ?fldi_bit_width_expr:stmt -> unit -> field_decl_info

    Create a record of type field_decl_info.

    val validate_field_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -978,68 +978,68 @@ Atdgen_runtime.Util.Validation.path -> friend_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type friend_info.

    val create_function_decl_info : - ?fdi_mangled_name:string -> - ?fdi_is_cpp:bool -> - ?fdi_is_inline:bool -> - ?fdi_is_module_private:bool -> - ?fdi_is_pure:bool -> - ?fdi_is_deleted:bool -> - ?fdi_is_no_return:bool -> - ?fdi_is_constexpr:bool -> - ?fdi_is_variadic:bool -> - ?fdi_is_static:bool -> - ?fdi_parameters:decl list -> - ?fdi_decl_ptr_with_body:pointer -> - ?fdi_body:stmt -> - ?fdi_template_specialization:template_specialization_info -> - ?fdi_point_of_instantiation:source_location -> + ?fdi_mangled_name:string -> + ?fdi_is_cpp:bool -> + ?fdi_is_inline:bool -> + ?fdi_is_module_private:bool -> + ?fdi_is_pure:bool -> + ?fdi_is_deleted:bool -> + ?fdi_is_no_return:bool -> + ?fdi_is_constexpr:bool -> + ?fdi_is_variadic:bool -> + ?fdi_is_static:bool -> + ?fdi_parameters:decl list -> + ?fdi_decl_ptr_with_body:pointer -> + ?fdi_body:stmt -> + ?fdi_template_specialization:template_specialization_info -> + ?fdi_point_of_instantiation:source_location -> unit -> function_decl_info

    Create a record of type function_decl_info.

    val validate_function_decl_info : Atdgen_runtime.Util.Validation.path -> function_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type function_decl_info.

    val create_generic_selection_info : - ?gse_value:stmt -> + ?gse_value:stmt -> unit -> generic_selection_info

    Create a record of type generic_selection_info.

    val validate_generic_selection_info : Atdgen_runtime.Util.Validation.path -> generic_selection_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type generic_selection_info.

    val create_holding_var_decl_info : - ?hvdi_binding_var:var_decl_info -> + ?hvdi_binding_var:var_decl_info -> unit -> holding_var_decl_info

    Create a record of type holding_var_decl_info.

    val validate_holding_var_decl_info : Atdgen_runtime.Util.Validation.path -> holding_var_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type holding_var_decl_info.

    val create_if_stmt_info : - ?isi_init:pointer -> - ?isi_cond_var:stmt -> - isi_cond:pointer -> - isi_then:pointer -> - ?isi_else:(pointer * source_location) -> + ?isi_init:pointer -> + ?isi_cond_var:stmt -> + isi_cond:pointer -> + isi_then:pointer -> + ?isi_else:(pointer * source_location) -> unit -> if_stmt_info

    Create a record of type if_stmt_info.

    val validate_if_stmt_info : Atdgen_runtime.Util.Validation.path -> if_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type if_stmt_info.

    val create_lambda_capture_info : - lci_capture_kind:lambda_capture_kind -> - ?lci_capture_this:bool -> - ?lci_capture_variable:bool -> - ?lci_capture_VLAtype:bool -> - ?lci_init_captured_vardecl:decl -> - ?lci_captured_var:decl_ref -> - ?lci_is_implicit:bool -> - lci_location:source_range -> - ?lci_is_pack_expansion:bool -> + lci_capture_kind:lambda_capture_kind -> + ?lci_capture_this:bool -> + ?lci_capture_variable:bool -> + ?lci_capture_VLAtype:bool -> + ?lci_init_captured_vardecl:decl -> + ?lci_captured_var:decl_ref -> + ?lci_is_implicit:bool -> + lci_location:source_range -> + ?lci_is_pack_expansion:bool -> unit -> lambda_capture_info

    Create a record of type lambda_capture_info.

    val validate_lambda_capture_info : Atdgen_runtime.Util.Validation.path -> lambda_capture_info -> - Atdgen_runtime.Util.Validation.error option

    Validate a value of type lambda_capture_info.

    val create_lambda_expr_info : lei_lambda_decl:decl -> unit -> lambda_expr_info

    Create a record of type lambda_expr_info.

    val validate_lambda_expr_info : + Atdgen_runtime.Util.Validation.error option

    Validate a value of type lambda_capture_info.

    val create_lambda_expr_info : lei_lambda_decl:decl -> unit -> lambda_expr_info

    Create a record of type lambda_expr_info.

    val validate_lambda_expr_info : Atdgen_runtime.Util.Validation.path -> lambda_expr_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type lambda_expr_info.

    val create_obj_c_implementation_decl_info : - ?oidi_super:decl_ref -> - ?oidi_class_interface:decl_ref -> - ?oidi_ivar_initializers:cxx_ctor_initializer list -> + ?oidi_super:decl_ref -> + ?oidi_class_interface:decl_ref -> + ?oidi_ivar_initializers:cxx_ctor_initializer list -> unit -> obj_c_implementation_decl_info

    Create a record of type obj_c_implementation_decl_info.

    val validate_obj_c_implementation_decl_info : Atdgen_runtime.Util.Validation.path -> @@ -1048,23 +1048,23 @@ Atdgen_runtime.Util.Validation.path -> obj_c_message_expr_kind -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_message_expr_kind.

    val create_obj_c_method_decl_info : - ?omdi_is_instance_method:bool -> - omdi_result_type:qual_type -> - ?omdi_is_property_accessor:bool -> - ?omdi_property_decl:decl_ref -> - ?omdi_parameters:decl list -> - ?omdi_implicit_parameters:decl list -> - ?omdi_is_variadic:bool -> - ?omdi_is_overriding:bool -> - ?omdi_is_optional:bool -> - ?omdi_body:stmt -> - ?omdi_mangled_name:string -> + ?omdi_is_instance_method:bool -> + omdi_result_type:qual_type -> + ?omdi_is_property_accessor:bool -> + ?omdi_property_decl:decl_ref -> + ?omdi_parameters:decl list -> + ?omdi_implicit_parameters:decl list -> + ?omdi_is_variadic:bool -> + ?omdi_is_overriding:bool -> + ?omdi_is_optional:bool -> + ?omdi_body:stmt -> + ?omdi_mangled_name:string -> unit -> obj_c_method_decl_info

    Create a record of type obj_c_method_decl_info.

    val validate_obj_c_method_decl_info : Atdgen_runtime.Util.Validation.path -> obj_c_method_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type obj_c_method_decl_info.

    val create_opaque_value_expr_info : - ?ovei_source_expr:stmt -> + ?ovei_source_expr:stmt -> unit -> opaque_value_expr_info

    Create a record of type opaque_value_expr_info.

    val validate_opaque_value_expr_info : Atdgen_runtime.Util.Validation.path -> @@ -1073,50 +1073,50 @@ Atdgen_runtime.Util.Validation.path -> stmt -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type stmt.

    val create_switch_stmt_info : - ?ssi_init:pointer -> - ?ssi_cond_var:stmt -> - ssi_cond:pointer -> - ssi_body:pointer -> - ?ssi_is_all_enum_cases_covered:bool -> + ?ssi_init:pointer -> + ?ssi_cond_var:stmt -> + ssi_cond:pointer -> + ssi_body:pointer -> + ?ssi_is_all_enum_cases_covered:bool -> unit -> switch_stmt_info

    Create a record of type switch_stmt_info.

    val validate_switch_stmt_info : Atdgen_runtime.Util.Validation.path -> switch_stmt_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type switch_stmt_info.

    val create_template_decl_info : - ?tdi_specializations:decl list -> + ?tdi_specializations:decl list -> unit -> template_decl_info

    Create a record of type template_decl_info.

    val validate_template_decl_info : Atdgen_runtime.Util.Validation.path -> template_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type template_decl_info.

    val create_var_decl_info : - ?vdi_is_global:bool -> - ?vdi_is_extern:bool -> - ?vdi_is_static:bool -> - ?vdi_is_static_local:bool -> - ?vdi_is_static_data_member:bool -> - ?vdi_is_constexpr:bool -> - ?vdi_is_init_ice:bool -> - ?vdi_init_expr:stmt -> - ?vdi_is_init_expr_cxx11_constant:bool -> - ?vdi_parm_index_in_function:int -> + ?vdi_is_global:bool -> + ?vdi_is_extern:bool -> + ?vdi_is_static:bool -> + ?vdi_is_static_local:bool -> + ?vdi_is_static_data_member:bool -> + ?vdi_is_constexpr:bool -> + ?vdi_is_init_ice:bool -> + ?vdi_init_expr:stmt -> + ?vdi_is_init_expr_cxx11_constant:bool -> + ?vdi_parm_index_in_function:int -> unit -> var_decl_info

    Create a record of type var_decl_info.

    val validate_var_decl_info : Atdgen_runtime.Util.Validation.path -> var_decl_info -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type var_decl_info.

    val create_lookup : - lup_decl_name:string -> - lup_decl_refs:decl_ref list -> + lup_decl_name:string -> + lup_decl_refs:decl_ref list -> unit -> lookup

    Create a record of type lookup.

    val validate_lookup : Atdgen_runtime.Util.Validation.path -> lookup -> Atdgen_runtime.Util.Validation.error option

    Validate a value of type lookup.

    val create_lookups : - lups_decl_ref:decl_ref -> - ?lups_primary_context_pointer:pointer -> - lups_lookups:lookup list -> - ?lups_has_undeserialized_decls:bool -> + lups_decl_ref:decl_ref -> + ?lups_primary_context_pointer:pointer -> + lups_lookups:lookup list -> + ?lups_has_undeserialized_decls:bool -> unit -> lookups

    Create a record of type lookups.

    val validate_lookups : Atdgen_runtime.Util.Validation.path -> lookups -> - Atdgen_runtime.Util.Validation.error option

    Validate a value of type lookups.

    \ No newline at end of file + Atdgen_runtime.Util.Validation.error option

    Validate a value of type lookups.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_visit/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_visit/index.html index 9dc5fe1f5e8..70a7cd65a4c 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_ast_visit/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_ast_visit/index.html @@ -1,5 +1,5 @@ -Clang_ast_visit (infer.ATDGenerated.Clang_ast_visit)

    Module ATDGenerated.Clang_ast_visit

    type visit_decl_t = +Clang_ast_visit (infer.ATDGenerated.Clang_ast_visit)

    Module ATDGenerated.Clang_ast_visit

    type visit_decl_t = Atdgen_runtime.Util.Validation.path -> Clang_ast_t.decl -> unit
    type visit_stmt_t = @@ -23,4 +23,4 @@ 'a option
    val visit_source_loc : Atdgen_runtime.Util.Validation.path -> Clang_ast_t.source_location -> - 'a option
    \ No newline at end of file + 'a option
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_j/index.html index 2ec19d5a519..ed631507cf4 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_j/index.html @@ -1,11 +1,11 @@ -Clang_profiler_samples_j (infer.ATDGenerated.Clang_profiler_samples_j)

    Module ATDGenerated.Clang_profiler_samples_j

    type native_symbol = Clang_profiler_samples_t.native_symbol = {
    1. name : string;
    2. mangled_name : string option;
    3. hashed_mangled_name : string option;
    }
    type profiler_sample = Clang_profiler_samples_t.profiler_sample = {
    1. test : string;
    2. native_symbols : native_symbol list;
    }
    val write_native_symbol : Stdlib.Buffer.t -> native_symbol -> unit

    Output a JSON value of type native_symbol.

    val string_of_native_symbol : ?len:int -> native_symbol -> string

    Serialize a value of type native_symbol into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_native_symbol : +Clang_profiler_samples_j (infer.ATDGenerated.Clang_profiler_samples_j)

    Module ATDGenerated.Clang_profiler_samples_j

    type native_symbol = Clang_profiler_samples_t.native_symbol = {
    1. name : string;
    2. mangled_name : string option;
    3. hashed_mangled_name : string option;
    }
    type profiler_sample = Clang_profiler_samples_t.profiler_sample = {
    1. test : string;
    2. native_symbols : native_symbol list;
    }
    val write_native_symbol : Stdlib.Buffer.t -> native_symbol -> unit

    Output a JSON value of type native_symbol.

    val string_of_native_symbol : ?len:int -> native_symbol -> string

    Serialize a value of type native_symbol into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_native_symbol : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - native_symbol

    Input JSON data of type native_symbol.

    val native_symbol_of_string : string -> native_symbol

    Deserialize JSON data of type native_symbol.

    val write_profiler_sample : Stdlib.Buffer.t -> profiler_sample -> unit

    Output a JSON value of type profiler_sample.

    val string_of_profiler_sample : ?len:int -> profiler_sample -> string

    Serialize a value of type profiler_sample into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_profiler_sample : + native_symbol

    Input JSON data of type native_symbol.

    val native_symbol_of_string : string -> native_symbol

    Deserialize JSON data of type native_symbol.

    val write_profiler_sample : Stdlib.Buffer.t -> profiler_sample -> unit

    Output a JSON value of type profiler_sample.

    val string_of_profiler_sample : ?len:int -> profiler_sample -> string

    Serialize a value of type profiler_sample into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_profiler_sample : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - profiler_sample

    Input JSON data of type profiler_sample.

    val profiler_sample_of_string : string -> profiler_sample

    Deserialize JSON data of type profiler_sample.

    val write_profiler_samples : Stdlib.Buffer.t -> profiler_samples -> unit

    Output a JSON value of type profiler_samples.

    val string_of_profiler_samples : ?len:int -> profiler_samples -> string

    Serialize a value of type profiler_samples into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_profiler_samples : + profiler_sample

    Input JSON data of type profiler_sample.

    val profiler_sample_of_string : string -> profiler_sample

    Deserialize JSON data of type profiler_sample.

    val write_profiler_samples : Stdlib.Buffer.t -> profiler_samples -> unit

    Output a JSON value of type profiler_samples.

    val string_of_profiler_samples : ?len:int -> profiler_samples -> string

    Serialize a value of type profiler_samples into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_profiler_samples : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - profiler_samples

    Input JSON data of type profiler_samples.

    val profiler_samples_of_string : string -> profiler_samples

    Deserialize JSON data of type profiler_samples.

    \ No newline at end of file + profiler_samples

    Input JSON data of type profiler_samples.

    val profiler_samples_of_string : string -> profiler_samples

    Deserialize JSON data of type profiler_samples.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_t/index.html index 1c963a09ee9..765da907c8f 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Clang_profiler_samples_t/index.html @@ -1,2 +1,2 @@ -Clang_profiler_samples_t (infer.ATDGenerated.Clang_profiler_samples_t)

    Module ATDGenerated.Clang_profiler_samples_t

    type native_symbol = {
    1. name : string;
    2. mangled_name : string option;
    3. hashed_mangled_name : string option;
    }
    type profiler_sample = {
    1. test : string;
    2. native_symbols : native_symbol list;
    }
    type profiler_samples = profiler_sample list
    \ No newline at end of file +Clang_profiler_samples_t (infer.ATDGenerated.Clang_profiler_samples_t)

    Module ATDGenerated.Clang_profiler_samples_t

    type native_symbol = {
    1. name : string;
    2. mangled_name : string option;
    3. hashed_mangled_name : string option;
    }
    type profiler_sample = {
    1. test : string;
    2. native_symbols : native_symbol list;
    }
    type profiler_samples = profiler_sample list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_j/index.html index def658c4ddf..fad7c2f2334 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_j/index.html @@ -1,8 +1,8 @@ -Config_impact_data_j (infer.ATDGenerated.Config_impact_data_j)

    Module ATDGenerated.Config_impact_data_j

    type config_item = Config_impact_data_t.config_item = {
    1. method_name : string;
    2. class_name : string;
    }
    val write_config_item : Stdlib.Buffer.t -> config_item -> unit

    Output a JSON value of type config_item.

    val string_of_config_item : ?len:int -> config_item -> string

    Serialize a value of type config_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_item : +Config_impact_data_j (infer.ATDGenerated.Config_impact_data_j)

    Module ATDGenerated.Config_impact_data_j

    type config_item = Config_impact_data_t.config_item = {
    1. method_name : string;
    2. class_name : string;
    }
    val write_config_item : Stdlib.Buffer.t -> config_item -> unit

    Output a JSON value of type config_item.

    val string_of_config_item : ?len:int -> config_item -> string

    Serialize a value of type config_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - config_item

    Input JSON data of type config_item.

    val config_item_of_string : string -> config_item

    Deserialize JSON data of type config_item.

    val write_config_data : Stdlib.Buffer.t -> config_data -> unit

    Output a JSON value of type config_data.

    val string_of_config_data : ?len:int -> config_data -> string

    Serialize a value of type config_data into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_data : + config_item

    Input JSON data of type config_item.

    val config_item_of_string : string -> config_item

    Deserialize JSON data of type config_item.

    val write_config_data : Stdlib.Buffer.t -> config_data -> unit

    Output a JSON value of type config_data.

    val string_of_config_data : ?len:int -> config_data -> string

    Serialize a value of type config_data into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_data : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - config_data

    Input JSON data of type config_data.

    val config_data_of_string : string -> config_data

    Deserialize JSON data of type config_data.

    \ No newline at end of file + config_data

    Input JSON data of type config_data.

    val config_data_of_string : string -> config_data

    Deserialize JSON data of type config_data.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_t/index.html index 6ae43e53614..dfece9316de 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Config_impact_data_t/index.html @@ -1,2 +1,2 @@ -Config_impact_data_t (infer.ATDGenerated.Config_impact_data_t)

    Module ATDGenerated.Config_impact_data_t

    type config_item = {
    1. method_name : string;
    2. class_name : string;
    }
    type config_data = config_item list
    \ No newline at end of file +Config_impact_data_t (infer.ATDGenerated.Config_impact_data_t)

    Module ATDGenerated.Config_impact_data_t

    type config_item = {
    1. method_name : string;
    2. class_name : string;
    }
    type config_data = config_item list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/InferCommand/index.html b/website/static/odoc/next/infer/ATDGenerated/InferCommand/index.html index 0a6c5188c2b..75e26ae86ce 100644 --- a/website/static/odoc/next/infer/ATDGenerated/InferCommand/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/InferCommand/index.html @@ -1,2 +1,2 @@ -InferCommand (infer.ATDGenerated.InferCommand)

    Module ATDGenerated.InferCommand

    type t =
    1. | Analyze
      (*

      analyze previously captured source files

      *)
    2. | Capture
      (*

      capture compilation commands and translate source files into infer's intermediate language

      *)
    3. | Compile
      (*

      set up the infer environment then run the compilation commands without capturing the source files

      *)
    4. | Debug
      (*

      print information about internal structures

      *)
    5. | Explore
      (*

      explore infer reports

      *)
    6. | Help
      (*

      documentation about various aspects of infer

      *)
    7. | Report
      (*

      post-process infer results and reports

      *)
    8. | ReportDiff
      (*

      compute the difference of two infer reports

      *)
    9. | Run
      (*

      orchestrate the capture, analysis, and reporting of a compilation command

      *)

    Main modes of operation for infer

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val of_string : string -> t
    val to_string : t -> string
    val equal : t -> t -> bool
    val all_commands : t list
    val infer_exe_name : string
    val to_exe_name : t -> string
    val of_exe_name : string -> t option
    \ No newline at end of file +InferCommand (infer.ATDGenerated.InferCommand)

    Module ATDGenerated.InferCommand

    type t =
    1. | Analyze
      (*

      analyze previously captured source files

      *)
    2. | Capture
      (*

      capture compilation commands and translate source files into infer's intermediate language

      *)
    3. | Compile
      (*

      set up the infer environment then run the compilation commands without capturing the source files

      *)
    4. | Debug
      (*

      print information about internal structures

      *)
    5. | Explore
      (*

      explore infer reports

      *)
    6. | Help
      (*

      documentation about various aspects of infer

      *)
    7. | Report
      (*

      post-process infer results and reports

      *)
    8. | ReportDiff
      (*

      compute the difference of two infer reports

      *)
    9. | Run
      (*

      orchestrate the capture, analysis, and reporting of a compilation command

      *)

    Main modes of operation for infer

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val of_string : string -> t
    val to_string : t -> string
    val equal : t -> t -> bool
    val all_commands : t list
    val infer_exe_name : string
    val to_exe_name : t -> string
    val of_exe_name : string -> t option
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_j/index.html index 89a85765fb3..18d68ff3570 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_j/index.html @@ -1,8 +1,8 @@ -Java_method_decl_j (infer.ATDGenerated.Java_method_decl_j)

    Module ATDGenerated.Java_method_decl_j

    type java_method_decl = Java_method_decl_t.java_method_decl = {
    1. signature : string option;
    2. unresolved_signature : bool;
    3. method_name : string;
    4. source_file : string;
    5. start_line : int;
    6. end_line : int;
    }
    type java_method_decls = Java_method_decl_t.java_method_decls
    val write_java_method_decl : Stdlib.Buffer.t -> java_method_decl -> unit

    Output a JSON value of type java_method_decl.

    val string_of_java_method_decl : ?len:int -> java_method_decl -> string

    Serialize a value of type java_method_decl into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_method_decl : +Java_method_decl_j (infer.ATDGenerated.Java_method_decl_j)

    Module ATDGenerated.Java_method_decl_j

    type java_method_decl = Java_method_decl_t.java_method_decl = {
    1. signature : string option;
    2. unresolved_signature : bool;
    3. method_name : string;
    4. source_file : string;
    5. start_line : int;
    6. end_line : int;
    }
    type java_method_decls = Java_method_decl_t.java_method_decls
    val write_java_method_decl : Stdlib.Buffer.t -> java_method_decl -> unit

    Output a JSON value of type java_method_decl.

    val string_of_java_method_decl : ?len:int -> java_method_decl -> string

    Serialize a value of type java_method_decl into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_method_decl : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - java_method_decl

    Input JSON data of type java_method_decl.

    val java_method_decl_of_string : string -> java_method_decl

    Deserialize JSON data of type java_method_decl.

    val write_java_method_decls : Stdlib.Buffer.t -> java_method_decls -> unit

    Output a JSON value of type java_method_decls.

    val string_of_java_method_decls : ?len:int -> java_method_decls -> string

    Serialize a value of type java_method_decls into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_method_decls : + java_method_decl

    Input JSON data of type java_method_decl.

    val java_method_decl_of_string : string -> java_method_decl

    Deserialize JSON data of type java_method_decl.

    val write_java_method_decls : Stdlib.Buffer.t -> java_method_decls -> unit

    Output a JSON value of type java_method_decls.

    val string_of_java_method_decls : ?len:int -> java_method_decls -> string

    Serialize a value of type java_method_decls into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_method_decls : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - java_method_decls

    Input JSON data of type java_method_decls.

    val java_method_decls_of_string : string -> java_method_decls

    Deserialize JSON data of type java_method_decls.

    \ No newline at end of file + java_method_decls

    Input JSON data of type java_method_decls.

    val java_method_decls_of_string : string -> java_method_decls

    Deserialize JSON data of type java_method_decls.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_t/index.html index 17c2c21bc14..4df759c5cd1 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Java_method_decl_t/index.html @@ -1,2 +1,2 @@ -Java_method_decl_t (infer.ATDGenerated.Java_method_decl_t)

    Module ATDGenerated.Java_method_decl_t

    type java_method_decl = {
    1. signature : string option;
    2. unresolved_signature : bool;
    3. method_name : string;
    4. source_file : string;
    5. start_line : int;
    6. end_line : int;
    }
    type java_method_decls = java_method_decl list
    \ No newline at end of file +Java_method_decl_t (infer.ATDGenerated.Java_method_decl_t)

    Module ATDGenerated.Java_method_decl_t

    type java_method_decl = {
    1. signature : string option;
    2. unresolved_signature : bool;
    3. method_name : string;
    4. source_file : string;
    5. start_line : int;
    6. end_line : int;
    }
    type java_method_decls = java_method_decl list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_j/index.html index 6ec43b6d6ac..45dd598b045 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_j/index.html @@ -1,20 +1,20 @@ -Java_profiler_samples_j (infer.ATDGenerated.Java_profiler_samples_j)

    Module ATDGenerated.Java_profiler_samples_j

    type sampled_method = Java_profiler_samples_t.sampled_method = {
    1. classname : string;
    2. methodname : string;
    3. signature : string;
    }
    type java_profiler_sample = Java_profiler_samples_t.java_profiler_sample = {
    1. test : string;
    2. methods : sampled_method list;
    }
    val write_sampled_method : Stdlib.Buffer.t -> sampled_method -> unit

    Output a JSON value of type sampled_method.

    val string_of_sampled_method : ?len:int -> sampled_method -> string

    Serialize a value of type sampled_method into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sampled_method : +Java_profiler_samples_j (infer.ATDGenerated.Java_profiler_samples_j)

    Module ATDGenerated.Java_profiler_samples_j

    type sampled_method = Java_profiler_samples_t.sampled_method = {
    1. classname : string;
    2. methodname : string;
    3. signature : string;
    }
    type java_profiler_sample = Java_profiler_samples_t.java_profiler_sample = {
    1. test : string;
    2. methods : sampled_method list;
    }
    val write_sampled_method : Stdlib.Buffer.t -> sampled_method -> unit

    Output a JSON value of type sampled_method.

    val string_of_sampled_method : ?len:int -> sampled_method -> string

    Serialize a value of type sampled_method into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sampled_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sampled_method

    Input JSON data of type sampled_method.

    val sampled_method_of_string : string -> sampled_method

    Deserialize JSON data of type sampled_method.

    val write_java_profiler_sample : Stdlib.Buffer.t -> java_profiler_sample -> - unit

    Output a JSON value of type java_profiler_sample.

    val string_of_java_profiler_sample : ?len:int -> java_profiler_sample -> string

    Serialize a value of type java_profiler_sample into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_profiler_sample : + unit

    Output a JSON value of type java_profiler_sample.

    val string_of_java_profiler_sample : ?len:int -> java_profiler_sample -> string

    Serialize a value of type java_profiler_sample into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_profiler_sample : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> java_profiler_sample

    Input JSON data of type java_profiler_sample.

    val java_profiler_sample_of_string : string -> java_profiler_sample

    Deserialize JSON data of type java_profiler_sample.

    val write_java_profiler_samples : Stdlib.Buffer.t -> java_profiler_samples -> unit

    Output a JSON value of type java_profiler_samples.

    val string_of_java_profiler_samples : - ?len:int -> + ?len:int -> java_profiler_samples -> string

    Serialize a value of type java_profiler_samples into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_java_profiler_samples : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - java_profiler_samples

    Input JSON data of type java_profiler_samples.

    val java_profiler_samples_of_string : string -> java_profiler_samples

    Deserialize JSON data of type java_profiler_samples.

    \ No newline at end of file + java_profiler_samples

    Input JSON data of type java_profiler_samples.

    val java_profiler_samples_of_string : string -> java_profiler_samples

    Deserialize JSON data of type java_profiler_samples.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_t/index.html index 34d814cfd3a..455afc90c34 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Java_profiler_samples_t/index.html @@ -1,2 +1,2 @@ -Java_profiler_samples_t (infer.ATDGenerated.Java_profiler_samples_t)

    Module ATDGenerated.Java_profiler_samples_t

    type sampled_method = {
    1. classname : string;
    2. methodname : string;
    3. signature : string;
    }
    type java_profiler_sample = {
    1. test : string;
    2. methods : sampled_method list;
    }
    type java_profiler_samples = java_profiler_sample list
    \ No newline at end of file +Java_profiler_samples_t (infer.ATDGenerated.Java_profiler_samples_t)

    Module ATDGenerated.Java_profiler_samples_t

    type sampled_method = {
    1. classname : string;
    2. methodname : string;
    3. signature : string;
    }
    type java_profiler_sample = {
    1. test : string;
    2. methods : sampled_method list;
    }
    type java_profiler_samples = java_profiler_sample list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html index b4d66194829..917eaf98880 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html @@ -1,5 +1,5 @@ -Jsonbug_j (infer.ATDGenerated.Jsonbug_j)

    Module ATDGenerated.Jsonbug_j

    type transitive_callee_resolution = Jsonbug_t.transitive_callee_resolution
    val equal_transitive_callee_resolution : +Jsonbug_j (infer.ATDGenerated.Jsonbug_j)

    Module ATDGenerated.Jsonbug_j

    type transitive_callee_resolution = Jsonbug_t.transitive_callee_resolution
    val equal_transitive_callee_resolution : transitive_callee_resolution -> transitive_callee_resolution -> bool
    type transitive_callee_kind = Jsonbug_t.transitive_callee_kind
    val equal_transitive_callee_kind : @@ -24,7 +24,7 @@ Stdlib.Buffer.t -> transitive_callee_resolution -> unit

    Output a JSON value of type transitive_callee_resolution.

    val string_of_transitive_callee_resolution : - ?len:int -> + ?len:int -> transitive_callee_resolution -> string

    Serialize a value of type transitive_callee_resolution into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_transitive_callee_resolution : Yojson.Safe.lexer_state -> @@ -35,63 +35,63 @@ Stdlib.Buffer.t -> transitive_callee_kind -> unit

    Output a JSON value of type transitive_callee_kind.

    val string_of_transitive_callee_kind : - ?len:int -> + ?len:int -> transitive_callee_kind -> string

    Serialize a value of type transitive_callee_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_transitive_callee_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - transitive_callee_kind

    Input JSON data of type transitive_callee_kind.

    val transitive_callee_kind_of_string : string -> transitive_callee_kind

    Deserialize JSON data of type transitive_callee_kind.

    val write_transitive_callee : Stdlib.Buffer.t -> transitive_callee -> unit

    Output a JSON value of type transitive_callee.

    val string_of_transitive_callee : ?len:int -> transitive_callee -> string

    Serialize a value of type transitive_callee into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_transitive_callee : + transitive_callee_kind

    Input JSON data of type transitive_callee_kind.

    val transitive_callee_kind_of_string : string -> transitive_callee_kind

    Deserialize JSON data of type transitive_callee_kind.

    val write_transitive_callee : Stdlib.Buffer.t -> transitive_callee -> unit

    Output a JSON value of type transitive_callee.

    val string_of_transitive_callee : ?len:int -> transitive_callee -> string

    Serialize a value of type transitive_callee into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_transitive_callee : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - transitive_callee

    Input JSON data of type transitive_callee.

    val transitive_callee_of_string : string -> transitive_callee

    Deserialize JSON data of type transitive_callee.

    val write_taint_extra : Stdlib.Buffer.t -> taint_extra -> unit

    Output a JSON value of type taint_extra.

    val string_of_taint_extra : ?len:int -> taint_extra -> string

    Serialize a value of type taint_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_extra : + transitive_callee

    Input JSON data of type transitive_callee.

    val transitive_callee_of_string : string -> transitive_callee

    Deserialize JSON data of type transitive_callee.

    val write_taint_extra : Stdlib.Buffer.t -> taint_extra -> unit

    Output a JSON value of type taint_extra.

    val string_of_taint_extra : ?len:int -> taint_extra -> string

    Serialize a value of type taint_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> taint_extra

    Input JSON data of type taint_extra.

    val taint_extra_of_string : string -> taint_extra

    Deserialize JSON data of type taint_extra.

    val write_redundant_fixme_info : Stdlib.Buffer.t -> redundant_fixme_info -> - unit

    Output a JSON value of type redundant_fixme_info.

    val string_of_redundant_fixme_info : ?len:int -> redundant_fixme_info -> string

    Serialize a value of type redundant_fixme_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_redundant_fixme_info : + unit

    Output a JSON value of type redundant_fixme_info.

    val string_of_redundant_fixme_info : ?len:int -> redundant_fixme_info -> string

    Serialize a value of type redundant_fixme_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_redundant_fixme_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - redundant_fixme_info

    Input JSON data of type redundant_fixme_info.

    val redundant_fixme_info_of_string : string -> redundant_fixme_info

    Deserialize JSON data of type redundant_fixme_info.

    val write_issue_method : Stdlib.Buffer.t -> issue_method -> unit

    Output a JSON value of type issue_method.

    val string_of_issue_method : ?len:int -> issue_method -> string

    Serialize a value of type issue_method into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_issue_method : + redundant_fixme_info

    Input JSON data of type redundant_fixme_info.

    val redundant_fixme_info_of_string : string -> redundant_fixme_info

    Deserialize JSON data of type redundant_fixme_info.

    val write_issue_method : Stdlib.Buffer.t -> issue_method -> unit

    Output a JSON value of type issue_method.

    val string_of_issue_method : ?len:int -> issue_method -> string

    Serialize a value of type issue_method into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_issue_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> issue_method

    Input JSON data of type issue_method.

    val issue_method_of_string : string -> issue_method

    Deserialize JSON data of type issue_method.

    val write_parameter_not_nullable_info : Stdlib.Buffer.t -> parameter_not_nullable_info -> unit

    Output a JSON value of type parameter_not_nullable_info.

    val string_of_parameter_not_nullable_info : - ?len:int -> + ?len:int -> parameter_not_nullable_info -> string

    Serialize a value of type parameter_not_nullable_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_parameter_not_nullable_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> parameter_not_nullable_info

    Input JSON data of type parameter_not_nullable_info.

    val parameter_not_nullable_info_of_string : string -> - parameter_not_nullable_info

    Deserialize JSON data of type parameter_not_nullable_info.

    val write_nullsafe_mode : Stdlib.Buffer.t -> nullsafe_mode -> unit

    Output a JSON value of type nullsafe_mode.

    val string_of_nullsafe_mode : ?len:int -> nullsafe_mode -> string

    Serialize a value of type nullsafe_mode into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nullsafe_mode : + parameter_not_nullable_info

    Deserialize JSON data of type parameter_not_nullable_info.

    val write_nullsafe_mode : Stdlib.Buffer.t -> nullsafe_mode -> unit

    Output a JSON value of type nullsafe_mode.

    val string_of_nullsafe_mode : ?len:int -> nullsafe_mode -> string

    Serialize a value of type nullsafe_mode into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nullsafe_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_mode

    Input JSON data of type nullsafe_mode.

    val nullsafe_mode_of_string : string -> nullsafe_mode

    Deserialize JSON data of type nullsafe_mode.

    val write_nullsafe_meta_issue_info : Stdlib.Buffer.t -> nullsafe_meta_issue_info -> unit

    Output a JSON value of type nullsafe_meta_issue_info.

    val string_of_nullsafe_meta_issue_info : - ?len:int -> + ?len:int -> nullsafe_meta_issue_info -> string

    Serialize a value of type nullsafe_meta_issue_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nullsafe_meta_issue_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - nullsafe_meta_issue_info

    Input JSON data of type nullsafe_meta_issue_info.

    val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

    Deserialize JSON data of type nullsafe_meta_issue_info.

    val write_method_info : Stdlib.Buffer.t -> method_info -> unit

    Output a JSON value of type method_info.

    val string_of_method_info : ?len:int -> method_info -> string

    Serialize a value of type method_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_method_info : + nullsafe_meta_issue_info

    Input JSON data of type nullsafe_meta_issue_info.

    val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

    Deserialize JSON data of type nullsafe_meta_issue_info.

    val write_method_info : Stdlib.Buffer.t -> method_info -> unit

    Output a JSON value of type method_info.

    val string_of_method_info : ?len:int -> method_info -> string

    Serialize a value of type method_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_method_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - method_info

    Input JSON data of type method_info.

    val method_info_of_string : string -> method_info

    Deserialize JSON data of type method_info.

    val write_field_name : Stdlib.Buffer.t -> field_name -> unit

    Output a JSON value of type field_name.

    val string_of_field_name : ?len:int -> field_name -> string

    Serialize a value of type field_name into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_field_name : + method_info

    Input JSON data of type method_info.

    val method_info_of_string : string -> method_info

    Deserialize JSON data of type method_info.

    val write_field_name : Stdlib.Buffer.t -> field_name -> unit

    Output a JSON value of type field_name.

    val string_of_field_name : ?len:int -> field_name -> string

    Serialize a value of type field_name into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_field_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - field_name

    Input JSON data of type field_name.

    val field_name_of_string : string -> field_name

    Deserialize JSON data of type field_name.

    val write_access_level : Stdlib.Buffer.t -> access_level -> unit

    Output a JSON value of type access_level.

    val string_of_access_level : ?len:int -> access_level -> string

    Serialize a value of type access_level into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_access_level : + field_name

    Input JSON data of type field_name.

    val field_name_of_string : string -> field_name

    Deserialize JSON data of type field_name.

    val write_access_level : Stdlib.Buffer.t -> access_level -> unit

    Output a JSON value of type access_level.

    val string_of_access_level : ?len:int -> access_level -> string

    Serialize a value of type access_level into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_access_level : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> access_level

    Input JSON data of type access_level.

    val access_level_of_string : string -> access_level

    Deserialize JSON data of type access_level.

    val write_annotation_point_method : Stdlib.Buffer.t -> annotation_point_method -> unit

    Output a JSON value of type annotation_point_method.

    val string_of_annotation_point_method : - ?len:int -> + ?len:int -> annotation_point_method -> string

    Serialize a value of type annotation_point_method into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_annotation_point_method : Yojson.Safe.lexer_state -> @@ -100,24 +100,24 @@ Stdlib.Buffer.t -> annotation_point_kind -> unit

    Output a JSON value of type annotation_point_kind.

    val string_of_annotation_point_kind : - ?len:int -> + ?len:int -> annotation_point_kind -> string

    Serialize a value of type annotation_point_kind into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_annotation_point_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - annotation_point_kind

    Input JSON data of type annotation_point_kind.

    val annotation_point_kind_of_string : string -> annotation_point_kind

    Deserialize JSON data of type annotation_point_kind.

    val write_annotation_point : Stdlib.Buffer.t -> annotation_point -> unit

    Output a JSON value of type annotation_point.

    val string_of_annotation_point : ?len:int -> annotation_point -> string

    Serialize a value of type annotation_point into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_annotation_point : + annotation_point_kind

    Input JSON data of type annotation_point_kind.

    val annotation_point_kind_of_string : string -> annotation_point_kind

    Deserialize JSON data of type annotation_point_kind.

    val write_annotation_point : Stdlib.Buffer.t -> annotation_point -> unit

    Output a JSON value of type annotation_point.

    val string_of_annotation_point : ?len:int -> annotation_point -> string

    Serialize a value of type annotation_point into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_annotation_point : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - annotation_point

    Input JSON data of type annotation_point.

    val annotation_point_of_string : string -> annotation_point

    Deserialize JSON data of type annotation_point.

    val write_nullsafe_extra : Stdlib.Buffer.t -> nullsafe_extra -> unit

    Output a JSON value of type nullsafe_extra.

    val string_of_nullsafe_extra : ?len:int -> nullsafe_extra -> string

    Serialize a value of type nullsafe_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nullsafe_extra : + annotation_point

    Input JSON data of type annotation_point.

    val annotation_point_of_string : string -> annotation_point

    Deserialize JSON data of type annotation_point.

    val write_nullsafe_extra : Stdlib.Buffer.t -> nullsafe_extra -> unit

    Output a JSON value of type nullsafe_extra.

    val string_of_nullsafe_extra : ?len:int -> nullsafe_extra -> string

    Serialize a value of type nullsafe_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_nullsafe_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - nullsafe_extra

    Input JSON data of type nullsafe_extra.

    val nullsafe_extra_of_string : string -> nullsafe_extra

    Deserialize JSON data of type nullsafe_extra.

    val write_missed_capture : Stdlib.Buffer.t -> missed_capture -> unit

    Output a JSON value of type missed_capture.

    val string_of_missed_capture : ?len:int -> missed_capture -> string

    Serialize a value of type missed_capture into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_missed_capture : + nullsafe_extra

    Input JSON data of type nullsafe_extra.

    val nullsafe_extra_of_string : string -> nullsafe_extra

    Deserialize JSON data of type nullsafe_extra.

    val write_missed_capture : Stdlib.Buffer.t -> missed_capture -> unit

    Output a JSON value of type missed_capture.

    val string_of_missed_capture : ?len:int -> missed_capture -> string

    Serialize a value of type missed_capture into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_missed_capture : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - missed_capture

    Input JSON data of type missed_capture.

    val missed_capture_of_string : string -> missed_capture

    Deserialize JSON data of type missed_capture.

    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_json_trace_item : Stdlib.Buffer.t -> json_trace_item -> unit

    Output a JSON value of type json_trace_item.

    val string_of_json_trace_item : ?len:int -> json_trace_item -> string

    Serialize a value of type json_trace_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_json_trace_item : + missed_capture

    Input JSON data of type missed_capture.

    val missed_capture_of_string : string -> missed_capture

    Deserialize JSON data of type missed_capture.

    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_json_trace_item : Stdlib.Buffer.t -> json_trace_item -> unit

    Output a JSON value of type json_trace_item.

    val string_of_json_trace_item : ?len:int -> json_trace_item -> string

    Serialize a value of type json_trace_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - json_trace_item

    Input JSON data of type json_trace_item.

    val json_trace_item_of_string : string -> json_trace_item

    Deserialize JSON data of type json_trace_item.

    val write_config_usage_extra : Stdlib.Buffer.t -> config_usage_extra -> unit

    Output a JSON value of type config_usage_extra.

    val string_of_config_usage_extra : ?len:int -> config_usage_extra -> string

    Serialize a value of type config_usage_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_usage_extra : + json_trace_item

    Input JSON data of type json_trace_item.

    val json_trace_item_of_string : string -> json_trace_item

    Deserialize JSON data of type json_trace_item.

    val write_config_usage_extra : Stdlib.Buffer.t -> config_usage_extra -> unit

    Output a JSON value of type config_usage_extra.

    val string_of_config_usage_extra : ?len:int -> config_usage_extra -> string

    Serialize a value of type config_usage_extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_usage_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - config_usage_extra

    Input JSON data of type config_usage_extra.

    val config_usage_extra_of_string : string -> config_usage_extra

    Deserialize JSON data of type config_usage_extra.

    val write_extra : Stdlib.Buffer.t -> extra -> unit

    Output a JSON value of type extra.

    val string_of_extra : ?len:int -> extra -> string

    Serialize a value of type extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

    Input JSON data of type extra.

    val extra_of_string : string -> extra

    Deserialize JSON data of type extra.

    val write_jsonbug : Stdlib.Buffer.t -> jsonbug -> unit

    Output a JSON value of type jsonbug.

    val string_of_jsonbug : ?len:int -> jsonbug -> string

    Serialize a value of type jsonbug into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

    Input JSON data of type jsonbug.

    val jsonbug_of_string : string -> jsonbug

    Deserialize JSON data of type jsonbug.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    \ No newline at end of file + config_usage_extra

    Input JSON data of type config_usage_extra.

    val config_usage_extra_of_string : string -> config_usage_extra

    Deserialize JSON data of type config_usage_extra.

    val write_extra : Stdlib.Buffer.t -> extra -> unit

    Output a JSON value of type extra.

    val string_of_extra : ?len:int -> extra -> string

    Serialize a value of type extra into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

    Input JSON data of type extra.

    val extra_of_string : string -> extra

    Deserialize JSON data of type extra.

    val write_jsonbug : Stdlib.Buffer.t -> jsonbug -> unit

    Output a JSON value of type jsonbug.

    val string_of_jsonbug : ?len:int -> jsonbug -> string

    Serialize a value of type jsonbug into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

    Input JSON data of type jsonbug.

    val jsonbug_of_string : string -> jsonbug

    Deserialize JSON data of type jsonbug.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html index 10eaf025617..3a35f7d9525 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html @@ -1,8 +1,8 @@ -Jsonbug_t (infer.ATDGenerated.Jsonbug_t)

    Module ATDGenerated.Jsonbug_t

    type transitive_callee_resolution = [
    1. | `ResolvedUsingDynamicType
    2. | `ResolvedUsingStaticType
    3. | `Unresolved
    ]
    val equal_transitive_callee_resolution : +Jsonbug_t (infer.ATDGenerated.Jsonbug_t)

    Module ATDGenerated.Jsonbug_t

    type transitive_callee_resolution = [
    1. | `ResolvedUsingDynamicType
    2. | `ResolvedUsingStaticType
    3. | `Unresolved
    ]
    val equal_transitive_callee_resolution : transitive_callee_resolution -> transitive_callee_resolution -> - bool
    type transitive_callee_kind = [
    1. | `Static
    2. | `Virtual
    3. | `Closure
    ]
    val equal_transitive_callee_kind : + bool
    type transitive_callee_kind = [
    1. | `Static
    2. | `Virtual
    3. | `Closure
    ]
    val equal_transitive_callee_kind : transitive_callee_kind -> transitive_callee_kind -> bool
    type transitive_callee = {
    1. callsite_filename : string;
    2. callsite_absolute_position_in_file : int;
    3. caller_name : string;
    4. callsite_relative_position_in_caller : int;
    5. kind : transitive_callee_kind;
    6. resolution : transitive_callee_resolution;
    }
    val equal_transitive_callee : transitive_callee -> transitive_callee -> bool
    type taint_extra = {
    1. taint_source : string option;
    2. taint_sink : string option;
    3. taint_policy_privacy_effect : string option;
    4. tainted_expression : string option;
    }
    val equal_taint_extra : taint_extra -> taint_extra -> bool
    type redundant_fixme_info = {
    1. present_issue_types : string list;
    2. comment_start_line : int;
    3. comment_end_line : int;
    }
    val equal_redundant_fixme_info : @@ -11,13 +11,13 @@ bool
    type issue_method = {
    1. name : string;
    2. params : string list;
    }
    val equal_issue_method : issue_method -> issue_method -> bool
    type parameter_not_nullable_info = {
    1. class_name : string;
    2. package_name : string option;
    3. method_info : issue_method;
    4. param_index : int;
    }
    val equal_parameter_not_nullable_info : parameter_not_nullable_info -> parameter_not_nullable_info -> - bool
    type nullsafe_mode = [
    1. | `Default
    2. | `LocalTrustAll
    3. | `LocalTrustSome
    4. | `LocalTrustNone
    5. | `Strict
    ]
    val equal_nullsafe_mode : nullsafe_mode -> nullsafe_mode -> bool
    type nullsafe_meta_issue_info = {
    1. num_issues : int;
    2. num_fixmes : int;
    3. curr_nullsafe_mode : nullsafe_mode;
    4. can_be_promoted_to : nullsafe_mode option;
    }
    val equal_nullsafe_meta_issue_info : + bool
    type nullsafe_mode = [
    1. | `Default
    2. | `LocalTrustAll
    3. | `LocalTrustSome
    4. | `LocalTrustNone
    5. | `Strict
    ]
    val equal_nullsafe_mode : nullsafe_mode -> nullsafe_mode -> bool
    type nullsafe_meta_issue_info = {
    1. num_issues : int;
    2. num_fixmes : int;
    3. curr_nullsafe_mode : nullsafe_mode;
    4. can_be_promoted_to : nullsafe_mode option;
    }
    val equal_nullsafe_meta_issue_info : nullsafe_meta_issue_info -> nullsafe_meta_issue_info -> - bool
    type method_info = {
    1. class_name : string;
    2. package : string;
    3. method_name : string;
    4. call_line : int;
    }
    val equal_method_info : method_info -> method_info -> bool
    type field_name = {
    1. class_name : string;
    2. package_name : string option;
    3. field : string;
    }
    val equal_field_name : field_name -> field_name -> bool
    type access_level = [
    1. | `Private
    2. | `Protected
    3. | `Public
    4. | `Default
    ]
    val equal_access_level : access_level -> access_level -> bool
    type annotation_point_method = {
    1. method_name : string;
    2. params : string list;
    3. access_level : access_level;
    }
    val equal_annotation_point_method : + bool
    type method_info = {
    1. class_name : string;
    2. package : string;
    3. method_name : string;
    4. call_line : int;
    }
    val equal_method_info : method_info -> method_info -> bool
    type field_name = {
    1. class_name : string;
    2. package_name : string option;
    3. field : string;
    }
    val equal_field_name : field_name -> field_name -> bool
    type access_level = [
    1. | `Private
    2. | `Protected
    3. | `Public
    4. | `Default
    ]
    val equal_access_level : access_level -> access_level -> bool
    type annotation_point_method = {
    1. method_name : string;
    2. params : string list;
    3. access_level : access_level;
    }
    val equal_annotation_point_method : annotation_point_method -> annotation_point_method -> - bool
    type annotation_point_kind = [
    1. | `Method
    2. | `Field
    3. | `Param
    ]
    val equal_annotation_point_kind : + bool
    type annotation_point_kind = [
    1. | `Method
    2. | `Field
    3. | `Param
    ]
    val equal_annotation_point_kind : annotation_point_kind -> annotation_point_kind -> - bool
    type annotation_point = {
    1. id : string;
    2. kind : annotation_point_kind;
    3. method_info : annotation_point_method option;
    4. field_name : string option;
    5. param_num : int option;
    6. num_violations : int;
    7. dependent_point_ids : string list;
    }
    val equal_annotation_point : annotation_point -> annotation_point -> bool
    type nullsafe_extra = {
    1. class_name : string;
    2. package : string option;
    3. method_info : issue_method option;
    4. field : field_name option;
    5. inconsistent_param_index : int option;
    6. parameter_not_nullable_info : parameter_not_nullable_info option;
    7. nullable_methods : method_info list option;
    8. unvetted_3rd_party : string list option;
    9. meta_issue_info : nullsafe_meta_issue_info option;
    10. annotation_graph : annotation_point list option;
    11. redundant_fixme_info : redundant_fixme_info option;
    }
    val equal_nullsafe_extra : nullsafe_extra -> nullsafe_extra -> bool
    type missed_capture = {
    1. class_name : string;
    }
    val equal_missed_capture : missed_capture -> missed_capture -> bool
    type loc = {
    1. file : string;
    2. lnum : int;
    3. cnum : int;
    4. enum : int;
    }
    val equal_loc : loc -> loc -> bool
    type json_trace_item = {
    1. level : int;
    2. filename : string;
    3. line_number : int;
    4. column_number : int;
    5. description : string;
    }
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type config_usage_extra = {
    1. config_name : string;
    2. function_name : string;
    3. filename : string;
    4. line_number : int;
    }
    val equal_config_usage_extra : config_usage_extra -> config_usage_extra -> bool
    type extra = {
    1. cost_polynomial : string option;
    2. cost_degree : int option;
    3. nullsafe_extra : nullsafe_extra option;
    4. copy_type : string option;
    5. config_usage_extra : config_usage_extra option;
    6. taint_extra : taint_extra option;
    7. transitive_callees : transitive_callee list;
    8. transitive_missed_captures : missed_capture list;
    }
    val equal_extra : extra -> extra -> bool
    type jsonbug = {
    1. bug_type : string;
    2. qualifier : string;
    3. suggestion : string option;
    4. severity : string;
    5. category : string;
    6. line : int;
    7. column : int;
    8. procedure : string;
    9. procedure_start_line : int;
    10. file : string;
    11. bug_trace : json_trace_item list;
    12. bug_trace_length : int;
    13. bug_trace_max_depth : int;
    14. key : string;
    15. node_key : string option;
    16. hash : string;
    17. dotty : string option;
    18. infer_source_loc : loc option;
    19. bug_type_hum : string;
    20. traceview_id : int option;
    21. censored_reason : string option;
    22. access : string option;
    23. extras : extra option;
    }
    val equal_jsonbug : jsonbug -> jsonbug -> bool
    type report = jsonbug list
    val equal_report : report -> report -> bool
    \ No newline at end of file + bool
    type annotation_point = {
    1. id : string;
    2. kind : annotation_point_kind;
    3. method_info : annotation_point_method option;
    4. field_name : string option;
    5. param_num : int option;
    6. num_violations : int;
    7. dependent_point_ids : string list;
    }
    val equal_annotation_point : annotation_point -> annotation_point -> bool
    type nullsafe_extra = {
    1. class_name : string;
    2. package : string option;
    3. method_info : issue_method option;
    4. field : field_name option;
    5. inconsistent_param_index : int option;
    6. parameter_not_nullable_info : parameter_not_nullable_info option;
    7. nullable_methods : method_info list option;
    8. unvetted_3rd_party : string list option;
    9. meta_issue_info : nullsafe_meta_issue_info option;
    10. annotation_graph : annotation_point list option;
    11. redundant_fixme_info : redundant_fixme_info option;
    }
    val equal_nullsafe_extra : nullsafe_extra -> nullsafe_extra -> bool
    type missed_capture = {
    1. class_name : string;
    }
    val equal_missed_capture : missed_capture -> missed_capture -> bool
    type loc = {
    1. file : string;
    2. lnum : int;
    3. cnum : int;
    4. enum : int;
    }
    val equal_loc : loc -> loc -> bool
    type json_trace_item = {
    1. level : int;
    2. filename : string;
    3. line_number : int;
    4. column_number : int;
    5. description : string;
    }
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type config_usage_extra = {
    1. config_name : string;
    2. function_name : string;
    3. filename : string;
    4. line_number : int;
    }
    val equal_config_usage_extra : config_usage_extra -> config_usage_extra -> bool
    type extra = {
    1. cost_polynomial : string option;
    2. cost_degree : int option;
    3. nullsafe_extra : nullsafe_extra option;
    4. copy_type : string option;
    5. config_usage_extra : config_usage_extra option;
    6. taint_extra : taint_extra option;
    7. transitive_callees : transitive_callee list;
    8. transitive_missed_captures : missed_capture list;
    }
    val equal_extra : extra -> extra -> bool
    type jsonbug = {
    1. bug_type : string;
    2. qualifier : string;
    3. suggestion : string option;
    4. severity : string;
    5. category : string;
    6. line : int;
    7. column : int;
    8. procedure : string;
    9. procedure_start_line : int;
    10. file : string;
    11. bug_trace : json_trace_item list;
    12. bug_trace_length : int;
    13. bug_trace_max_depth : int;
    14. key : string;
    15. node_key : string option;
    16. hash : string;
    17. dotty : string option;
    18. infer_source_loc : loc option;
    19. bug_type_hum : string;
    20. traceview_id : int option;
    21. censored_reason : string option;
    22. access : string option;
    23. extras : extra option;
    }
    val equal_jsonbug : jsonbug -> jsonbug -> bool
    type report = jsonbug list
    val equal_report : report -> report -> bool
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_j/index.html index 0621229acd6..03f280ebe72 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_j/index.html @@ -1,5 +1,5 @@ -Jsonconfigimpact_j (infer.ATDGenerated.Jsonconfigimpact_j)

    Module ATDGenerated.Jsonconfigimpact_j

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = Jsoncost_t.sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type config_impact_mode = Jsonconfigimpact_t.config_impact_mode
    val equal_config_impact_mode : config_impact_mode -> config_impact_mode -> bool
    type item = Jsonconfigimpact_t.item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. unchecked_callees : string;
    6. mode : config_impact_mode;
    }
    val equal_item : item -> item -> bool
    val equal_report : report -> report -> bool
    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_sub_item : Stdlib.Buffer.t -> sub_item -> unit

    Output a JSON value of type sub_item.

    val string_of_sub_item : ?len:int -> sub_item -> string

    Serialize a value of type sub_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sub_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sub_item

    Input JSON data of type sub_item.

    val sub_item_of_string : string -> sub_item

    Deserialize JSON data of type sub_item.

    val write_config_impact_mode : Stdlib.Buffer.t -> config_impact_mode -> unit

    Output a JSON value of type config_impact_mode.

    val string_of_config_impact_mode : ?len:int -> config_impact_mode -> string

    Serialize a value of type config_impact_mode into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_impact_mode : +Jsonconfigimpact_j (infer.ATDGenerated.Jsonconfigimpact_j)

    Module ATDGenerated.Jsonconfigimpact_j

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = Jsoncost_t.sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type config_impact_mode = Jsonconfigimpact_t.config_impact_mode
    val equal_config_impact_mode : config_impact_mode -> config_impact_mode -> bool
    type item = Jsonconfigimpact_t.item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. unchecked_callees : string;
    6. mode : config_impact_mode;
    }
    val equal_item : item -> item -> bool
    val equal_report : report -> report -> bool
    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_sub_item : Stdlib.Buffer.t -> sub_item -> unit

    Output a JSON value of type sub_item.

    val string_of_sub_item : ?len:int -> sub_item -> string

    Serialize a value of type sub_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sub_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sub_item

    Input JSON data of type sub_item.

    val sub_item_of_string : string -> sub_item

    Deserialize JSON data of type sub_item.

    val write_config_impact_mode : Stdlib.Buffer.t -> config_impact_mode -> unit

    Output a JSON value of type config_impact_mode.

    val string_of_config_impact_mode : ?len:int -> config_impact_mode -> string

    Serialize a value of type config_impact_mode into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_config_impact_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - config_impact_mode

    Input JSON data of type config_impact_mode.

    val config_impact_mode_of_string : string -> config_impact_mode

    Deserialize JSON data of type config_impact_mode.

    val write_item : Stdlib.Buffer.t -> item -> unit

    Output a JSON value of type item.

    val string_of_item : ?len:int -> item -> string

    Serialize a value of type item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> item

    Input JSON data of type item.

    val item_of_string : string -> item

    Deserialize JSON data of type item.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    \ No newline at end of file + config_impact_mode

    Input JSON data of type config_impact_mode.

    val config_impact_mode_of_string : string -> config_impact_mode

    Deserialize JSON data of type config_impact_mode.

    val write_item : Stdlib.Buffer.t -> item -> unit

    Output a JSON value of type item.

    val string_of_item : ?len:int -> item -> string

    Serialize a value of type item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> item

    Input JSON data of type item.

    val item_of_string : string -> item

    Deserialize JSON data of type item.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_t/index.html index de6324f59e0..e0c063233aa 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonconfigimpact_t/index.html @@ -1,2 +1,2 @@ -Jsonconfigimpact_t (infer.ATDGenerated.Jsonconfigimpact_t)

    Module ATDGenerated.Jsonconfigimpact_t

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type config_impact_mode = [
    1. | `Normal
    2. | `Strict
    ]
    val equal_config_impact_mode : config_impact_mode -> config_impact_mode -> bool
    type item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. unchecked_callees : string;
    6. mode : config_impact_mode;
    }
    val equal_item : item -> item -> bool
    type report = item list
    val equal_report : report -> report -> bool
    \ No newline at end of file +Jsonconfigimpact_t (infer.ATDGenerated.Jsonconfigimpact_t)

    Module ATDGenerated.Jsonconfigimpact_t

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type config_impact_mode = [
    1. | `Normal
    2. | `Strict
    ]
    val equal_config_impact_mode : config_impact_mode -> config_impact_mode -> bool
    type item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. unchecked_callees : string;
    6. mode : config_impact_mode;
    }
    val equal_item : item -> item -> bool
    type report = item list
    val equal_report : report -> report -> bool
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsoncost_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsoncost_j/index.html index f629ce95a2e..f49a071c002 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsoncost_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsoncost_j/index.html @@ -1,5 +1,5 @@ -Jsoncost_j (infer.ATDGenerated.Jsoncost_j)

    Module ATDGenerated.Jsoncost_j

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = Jsoncost_t.sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type json_trace_item = Jsonbug_t.json_trace_item
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type hum_info = Jsoncost_t.hum_info = {
    1. hum_polynomial : string;
    2. hum_degree : string;
    3. big_o : string;
    }
    val equal_hum_info : hum_info -> hum_info -> bool
    type info = Jsoncost_t.info = {
    1. polynomial_version : int;
    2. polynomial : string;
    3. degree : int option;
    4. hum : hum_info;
    5. trace : json_trace_item list;
    }
    val equal_info : info -> info -> bool
    type item = Jsoncost_t.item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. is_on_ui_thread : bool;
    6. exec_cost : info;
    }
    val equal_item : item -> item -> bool
    type report = Jsoncost_t.report
    val equal_report : report -> report -> bool
    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_sub_item : Stdlib.Buffer.t -> sub_item -> unit

    Output a JSON value of type sub_item.

    val string_of_sub_item : ?len:int -> sub_item -> string

    Serialize a value of type sub_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sub_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sub_item

    Input JSON data of type sub_item.

    val sub_item_of_string : string -> sub_item

    Deserialize JSON data of type sub_item.

    val write_json_trace_item : Stdlib.Buffer.t -> json_trace_item -> unit

    Output a JSON value of type json_trace_item.

    val string_of_json_trace_item : ?len:int -> json_trace_item -> string

    Serialize a value of type json_trace_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_json_trace_item : +Jsoncost_j (infer.ATDGenerated.Jsoncost_j)

    Module ATDGenerated.Jsoncost_j

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = Jsoncost_t.sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type json_trace_item = Jsonbug_t.json_trace_item
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type hum_info = Jsoncost_t.hum_info = {
    1. hum_polynomial : string;
    2. hum_degree : string;
    3. big_o : string;
    }
    val equal_hum_info : hum_info -> hum_info -> bool
    type info = Jsoncost_t.info = {
    1. polynomial_version : int;
    2. polynomial : string;
    3. degree : int option;
    4. hum : hum_info;
    5. trace : json_trace_item list;
    }
    val equal_info : info -> info -> bool
    type item = Jsoncost_t.item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. is_on_ui_thread : bool;
    6. exec_cost : info;
    }
    val equal_item : item -> item -> bool
    type report = Jsoncost_t.report
    val equal_report : report -> report -> bool
    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_sub_item : Stdlib.Buffer.t -> sub_item -> unit

    Output a JSON value of type sub_item.

    val string_of_sub_item : ?len:int -> sub_item -> string

    Serialize a value of type sub_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sub_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sub_item

    Input JSON data of type sub_item.

    val sub_item_of_string : string -> sub_item

    Deserialize JSON data of type sub_item.

    val write_json_trace_item : Stdlib.Buffer.t -> json_trace_item -> unit

    Output a JSON value of type json_trace_item.

    val string_of_json_trace_item : ?len:int -> json_trace_item -> string

    Serialize a value of type json_trace_item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - json_trace_item

    Input JSON data of type json_trace_item.

    val json_trace_item_of_string : string -> json_trace_item

    Deserialize JSON data of type json_trace_item.

    val write_hum_info : Stdlib.Buffer.t -> hum_info -> unit

    Output a JSON value of type hum_info.

    val string_of_hum_info : ?len:int -> hum_info -> string

    Serialize a value of type hum_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

    Input JSON data of type hum_info.

    val hum_info_of_string : string -> hum_info

    Deserialize JSON data of type hum_info.

    val write_info : Stdlib.Buffer.t -> info -> unit

    Output a JSON value of type info.

    val string_of_info : ?len:int -> info -> string

    Serialize a value of type info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> info

    Input JSON data of type info.

    val info_of_string : string -> info

    Deserialize JSON data of type info.

    val write_item : Stdlib.Buffer.t -> item -> unit

    Output a JSON value of type item.

    val string_of_item : ?len:int -> item -> string

    Serialize a value of type item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> item

    Input JSON data of type item.

    val item_of_string : string -> item

    Deserialize JSON data of type item.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    \ No newline at end of file + json_trace_item

    Input JSON data of type json_trace_item.

    val json_trace_item_of_string : string -> json_trace_item

    Deserialize JSON data of type json_trace_item.

    val write_hum_info : Stdlib.Buffer.t -> hum_info -> unit

    Output a JSON value of type hum_info.

    val string_of_hum_info : ?len:int -> hum_info -> string

    Serialize a value of type hum_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

    Input JSON data of type hum_info.

    val hum_info_of_string : string -> hum_info

    Deserialize JSON data of type hum_info.

    val write_info : Stdlib.Buffer.t -> info -> unit

    Output a JSON value of type info.

    val string_of_info : ?len:int -> info -> string

    Serialize a value of type info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> info

    Input JSON data of type info.

    val info_of_string : string -> info

    Deserialize JSON data of type info.

    val write_item : Stdlib.Buffer.t -> item -> unit

    Output a JSON value of type item.

    val string_of_item : ?len:int -> item -> string

    Serialize a value of type item into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> item

    Input JSON data of type item.

    val item_of_string : string -> item

    Deserialize JSON data of type item.

    val write_report : Stdlib.Buffer.t -> report -> unit

    Output a JSON value of type report.

    val string_of_report : ?len:int -> report -> string

    Serialize a value of type report into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

    Input JSON data of type report.

    val report_of_string : string -> report

    Deserialize JSON data of type report.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsoncost_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsoncost_t/index.html index 7152b05ab9d..b01ab90f346 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsoncost_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsoncost_t/index.html @@ -1,2 +1,2 @@ -Jsoncost_t (infer.ATDGenerated.Jsoncost_t)

    Module ATDGenerated.Jsoncost_t

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type json_trace_item = Jsonbug_t.json_trace_item
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type hum_info = {
    1. hum_polynomial : string;
    2. hum_degree : string;
    3. big_o : string;
    }
    val equal_hum_info : hum_info -> hum_info -> bool
    type info = {
    1. polynomial_version : int;
    2. polynomial : string;
    3. degree : int option;
    4. hum : hum_info;
    5. trace : json_trace_item list;
    }
    val equal_info : info -> info -> bool
    type item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. is_on_ui_thread : bool;
    6. exec_cost : info;
    }
    val equal_item : item -> item -> bool
    type report = item list
    val equal_report : report -> report -> bool
    \ No newline at end of file +Jsoncost_t (infer.ATDGenerated.Jsoncost_t)

    Module ATDGenerated.Jsoncost_t

    type loc = Jsonbug_t.loc
    val equal_loc : loc -> loc -> bool
    type sub_item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    }
    val equal_sub_item : sub_item -> sub_item -> bool
    type json_trace_item = Jsonbug_t.json_trace_item
    val equal_json_trace_item : json_trace_item -> json_trace_item -> bool
    type hum_info = {
    1. hum_polynomial : string;
    2. hum_degree : string;
    3. big_o : string;
    }
    val equal_hum_info : hum_info -> hum_info -> bool
    type info = {
    1. polynomial_version : int;
    2. polynomial : string;
    3. degree : int option;
    4. hum : hum_info;
    5. trace : json_trace_item list;
    }
    val equal_info : info -> info -> bool
    type item = {
    1. hash : string;
    2. loc : loc;
    3. procedure_name : string;
    4. procedure_id : string;
    5. is_on_ui_thread : bool;
    6. exec_cost : info;
    }
    val equal_item : item -> item -> bool
    type report = item list
    val equal_report : report -> report -> bool
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Pulse_config_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Pulse_config_j/index.html index b082ce5b2d6..12f86dcd418 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Pulse_config_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Pulse_config_j/index.html @@ -1,20 +1,20 @@ -Pulse_config_j (infer.ATDGenerated.Pulse_config_j)

    Module ATDGenerated.Pulse_config_j

    type taint_target = Pulse_config_t.taint_target
    type taint_flow = Pulse_config_t.taint_flow = {
    1. source_kinds : string list;
    2. sanitizer_kinds : string list;
    3. sink_kinds : string list;
    }
    type taint_policy = Pulse_config_t.taint_policy = {
    1. short_description : string;
    2. taint_flows : taint_flow list;
    3. privacy_effect : string option;
    4. exclude_in : string list option;
    5. exclude_matching : string list option;
    }
    type taint_policies = Pulse_config_t.taint_policies
    type argument_constraint = Pulse_config_t.argument_constraint = {
    1. index : int;
    2. type_matches : string list;
    }
    type matcher = Pulse_config_t.matcher = {
    1. field_regex : string option;
    2. procedure : string option;
    3. procedure_regex : string option;
    4. class_name_regex : string option;
    5. class_names : string list option;
    6. class_with_annotation : string option;
    7. field_names : string list option;
    8. method_names : string list option;
    9. method_return_type_names : string list option;
    10. overrides_of_class_with_annotation : string option;
    11. method_with_annotation : string option;
    12. field_with_annotation : string option;
    13. annotation_values : string list option;
    14. block_passed_to : string option;
    15. block_passed_to_regex : string option;
    16. allocation : string option;
    17. argument_constraints : argument_constraint list;
    18. kinds : string list option;
    19. taint_target : taint_target option;
    20. exclude_from_regex_in : string list option;
    21. sanitized_in : string list option;
    }
    type matchers = Pulse_config_t.matchers
    type data_flow_kinds = Pulse_config_t.data_flow_kinds
    val write_taint_target : Stdlib.Buffer.t -> taint_target -> unit

    Output a JSON value of type taint_target.

    val string_of_taint_target : ?len:int -> taint_target -> string

    Serialize a value of type taint_target into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_target : +Pulse_config_j (infer.ATDGenerated.Pulse_config_j)

    Module ATDGenerated.Pulse_config_j

    type taint_target = Pulse_config_t.taint_target
    type taint_flow = Pulse_config_t.taint_flow = {
    1. source_kinds : string list;
    2. sanitizer_kinds : string list;
    3. sink_kinds : string list;
    }
    type taint_policy = Pulse_config_t.taint_policy = {
    1. short_description : string;
    2. taint_flows : taint_flow list;
    3. privacy_effect : string option;
    4. exclude_in : string list option;
    5. exclude_matching : string list option;
    }
    type taint_policies = Pulse_config_t.taint_policies
    type argument_constraint = Pulse_config_t.argument_constraint = {
    1. index : int;
    2. type_matches : string list;
    }
    type matcher = Pulse_config_t.matcher = {
    1. field_regex : string option;
    2. procedure : string option;
    3. procedure_regex : string option;
    4. class_name_regex : string option;
    5. class_names : string list option;
    6. class_with_annotation : string option;
    7. field_names : string list option;
    8. method_names : string list option;
    9. method_return_type_names : string list option;
    10. overrides_of_class_with_annotation : string option;
    11. method_with_annotation : string option;
    12. field_with_annotation : string option;
    13. annotation_values : string list option;
    14. block_passed_to : string option;
    15. block_passed_to_regex : string option;
    16. allocation : string option;
    17. argument_constraints : argument_constraint list;
    18. kinds : string list option;
    19. taint_target : taint_target option;
    20. exclude_from_regex_in : string list option;
    21. exclude_from_regex_names : string list option;
    22. sanitized_in : string list option;
    }
    type matchers = Pulse_config_t.matchers
    type data_flow_kinds = Pulse_config_t.data_flow_kinds
    val write_taint_target : Stdlib.Buffer.t -> taint_target -> unit

    Output a JSON value of type taint_target.

    val string_of_taint_target : ?len:int -> taint_target -> string

    Serialize a value of type taint_target into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_target : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - taint_target

    Input JSON data of type taint_target.

    val taint_target_of_string : string -> taint_target

    Deserialize JSON data of type taint_target.

    val write_taint_flow : Stdlib.Buffer.t -> taint_flow -> unit

    Output a JSON value of type taint_flow.

    val string_of_taint_flow : ?len:int -> taint_flow -> string

    Serialize a value of type taint_flow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_flow : + taint_target

    Input JSON data of type taint_target.

    val taint_target_of_string : string -> taint_target

    Deserialize JSON data of type taint_target.

    val write_taint_flow : Stdlib.Buffer.t -> taint_flow -> unit

    Output a JSON value of type taint_flow.

    val string_of_taint_flow : ?len:int -> taint_flow -> string

    Serialize a value of type taint_flow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_flow : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - taint_flow

    Input JSON data of type taint_flow.

    val taint_flow_of_string : string -> taint_flow

    Deserialize JSON data of type taint_flow.

    val write_taint_policy : Stdlib.Buffer.t -> taint_policy -> unit

    Output a JSON value of type taint_policy.

    val string_of_taint_policy : ?len:int -> taint_policy -> string

    Serialize a value of type taint_policy into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_policy : + taint_flow

    Input JSON data of type taint_flow.

    val taint_flow_of_string : string -> taint_flow

    Deserialize JSON data of type taint_flow.

    val write_taint_policy : Stdlib.Buffer.t -> taint_policy -> unit

    Output a JSON value of type taint_policy.

    val string_of_taint_policy : ?len:int -> taint_policy -> string

    Serialize a value of type taint_policy into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_policy : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - taint_policy

    Input JSON data of type taint_policy.

    val taint_policy_of_string : string -> taint_policy

    Deserialize JSON data of type taint_policy.

    val write_taint_policies : Stdlib.Buffer.t -> taint_policies -> unit

    Output a JSON value of type taint_policies.

    val string_of_taint_policies : ?len:int -> taint_policies -> string

    Serialize a value of type taint_policies into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_policies : + taint_policy

    Input JSON data of type taint_policy.

    val taint_policy_of_string : string -> taint_policy

    Deserialize JSON data of type taint_policy.

    val write_taint_policies : Stdlib.Buffer.t -> taint_policies -> unit

    Output a JSON value of type taint_policies.

    val string_of_taint_policies : ?len:int -> taint_policies -> string

    Serialize a value of type taint_policies into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_taint_policies : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - taint_policies

    Input JSON data of type taint_policies.

    val taint_policies_of_string : string -> taint_policies

    Deserialize JSON data of type taint_policies.

    val write_argument_constraint : Stdlib.Buffer.t -> argument_constraint -> unit

    Output a JSON value of type argument_constraint.

    val string_of_argument_constraint : ?len:int -> argument_constraint -> string

    Serialize a value of type argument_constraint into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_argument_constraint : + taint_policies

    Input JSON data of type taint_policies.

    val taint_policies_of_string : string -> taint_policies

    Deserialize JSON data of type taint_policies.

    val write_argument_constraint : Stdlib.Buffer.t -> argument_constraint -> unit

    Output a JSON value of type argument_constraint.

    val string_of_argument_constraint : ?len:int -> argument_constraint -> string

    Serialize a value of type argument_constraint into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_argument_constraint : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - argument_constraint

    Input JSON data of type argument_constraint.

    val argument_constraint_of_string : string -> argument_constraint

    Deserialize JSON data of type argument_constraint.

    val write_matcher : Stdlib.Buffer.t -> matcher -> unit

    Output a JSON value of type matcher.

    val string_of_matcher : ?len:int -> matcher -> string

    Serialize a value of type matcher into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_matcher : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> matcher

    Input JSON data of type matcher.

    val matcher_of_string : string -> matcher

    Deserialize JSON data of type matcher.

    val write_matchers : Stdlib.Buffer.t -> matchers -> unit

    Output a JSON value of type matchers.

    val string_of_matchers : ?len:int -> matchers -> string

    Serialize a value of type matchers into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_matchers : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> matchers

    Input JSON data of type matchers.

    val matchers_of_string : string -> matchers

    Deserialize JSON data of type matchers.

    val write_data_flow_kinds : Stdlib.Buffer.t -> data_flow_kinds -> unit

    Output a JSON value of type data_flow_kinds.

    val string_of_data_flow_kinds : ?len:int -> data_flow_kinds -> string

    Serialize a value of type data_flow_kinds into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_data_flow_kinds : + argument_constraint

    Input JSON data of type argument_constraint.

    val argument_constraint_of_string : string -> argument_constraint

    Deserialize JSON data of type argument_constraint.

    val write_matcher : Stdlib.Buffer.t -> matcher -> unit

    Output a JSON value of type matcher.

    val string_of_matcher : ?len:int -> matcher -> string

    Serialize a value of type matcher into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_matcher : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> matcher

    Input JSON data of type matcher.

    val matcher_of_string : string -> matcher

    Deserialize JSON data of type matcher.

    val write_matchers : Stdlib.Buffer.t -> matchers -> unit

    Output a JSON value of type matchers.

    val string_of_matchers : ?len:int -> matchers -> string

    Serialize a value of type matchers into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_matchers : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> matchers

    Input JSON data of type matchers.

    val matchers_of_string : string -> matchers

    Deserialize JSON data of type matchers.

    val write_data_flow_kinds : Stdlib.Buffer.t -> data_flow_kinds -> unit

    Output a JSON value of type data_flow_kinds.

    val string_of_data_flow_kinds : ?len:int -> data_flow_kinds -> string

    Serialize a value of type data_flow_kinds into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_data_flow_kinds : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - data_flow_kinds

    Input JSON data of type data_flow_kinds.

    val data_flow_kinds_of_string : string -> data_flow_kinds

    Deserialize JSON data of type data_flow_kinds.

    \ No newline at end of file + data_flow_kinds

    Input JSON data of type data_flow_kinds.

    val data_flow_kinds_of_string : string -> data_flow_kinds

    Deserialize JSON data of type data_flow_kinds.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Pulse_config_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Pulse_config_t/index.html index 90dc1532361..20aeb914806 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Pulse_config_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Pulse_config_t/index.html @@ -1,2 +1,2 @@ -Pulse_config_t (infer.ATDGenerated.Pulse_config_t)

    Module ATDGenerated.Pulse_config_t

    type taint_target = [
    1. | `ReturnValue
    2. | `AllArguments
    3. | `ArgumentPositions of int list
    4. | `AllArgumentsButPositions of int list
    5. | `ArgumentsMatchingTypes of string list
    6. | `InstanceReference
    7. | `FieldsOfValue of (string * taint_target) list
    8. | `GetField
    9. | `SetField
    ]
    type taint_flow = {
    1. source_kinds : string list;
    2. sanitizer_kinds : string list;
    3. sink_kinds : string list;
    }
    type taint_policy = {
    1. short_description : string;
    2. taint_flows : taint_flow list;
    3. privacy_effect : string option;
    4. exclude_in : string list option;
    5. exclude_matching : string list option;
    }
    type taint_policies = taint_policy list
    type argument_constraint = {
    1. index : int;
    2. type_matches : string list;
    }
    type matcher = {
    1. field_regex : string option;
    2. procedure : string option;
    3. procedure_regex : string option;
    4. class_name_regex : string option;
    5. class_names : string list option;
    6. class_with_annotation : string option;
    7. field_names : string list option;
    8. method_names : string list option;
    9. method_return_type_names : string list option;
    10. overrides_of_class_with_annotation : string option;
    11. method_with_annotation : string option;
    12. field_with_annotation : string option;
    13. annotation_values : string list option;
    14. block_passed_to : string option;
    15. block_passed_to_regex : string option;
    16. allocation : string option;
    17. argument_constraints : argument_constraint list;
    18. kinds : string list option;
    19. taint_target : taint_target option;
    20. exclude_from_regex_in : string list option;
    21. sanitized_in : string list option;
    }
    type matchers = matcher list
    type data_flow_kinds = string list
    \ No newline at end of file +Pulse_config_t (infer.ATDGenerated.Pulse_config_t)

    Module ATDGenerated.Pulse_config_t

    type taint_target = [
    1. | `ReturnValue
    2. | `AllArguments
    3. | `ArgumentPositions of int list
    4. | `AllArgumentsButPositions of int list
    5. | `ArgumentsMatchingTypes of string list
    6. | `InstanceReference
    7. | `FieldsOfValue of (string * taint_target) list
    8. | `GetField
    9. | `SetField
    ]
    type taint_flow = {
    1. source_kinds : string list;
    2. sanitizer_kinds : string list;
    3. sink_kinds : string list;
    }
    type taint_policy = {
    1. short_description : string;
    2. taint_flows : taint_flow list;
    3. privacy_effect : string option;
    4. exclude_in : string list option;
    5. exclude_matching : string list option;
    }
    type taint_policies = taint_policy list
    type argument_constraint = {
    1. index : int;
    2. type_matches : string list;
    }
    type matcher = {
    1. field_regex : string option;
    2. procedure : string option;
    3. procedure_regex : string option;
    4. class_name_regex : string option;
    5. class_names : string list option;
    6. class_with_annotation : string option;
    7. field_names : string list option;
    8. method_names : string list option;
    9. method_return_type_names : string list option;
    10. overrides_of_class_with_annotation : string option;
    11. method_with_annotation : string option;
    12. field_with_annotation : string option;
    13. annotation_values : string list option;
    14. block_passed_to : string option;
    15. block_passed_to_regex : string option;
    16. allocation : string option;
    17. argument_constraints : argument_constraint list;
    18. kinds : string list option;
    19. taint_target : taint_target option;
    20. exclude_from_regex_in : string list option;
    21. exclude_from_regex_names : string list option;
    22. sanitized_in : string list option;
    }
    type matchers = matcher list
    type data_flow_kinds = string list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_j/index.html new file mode 100644 index 00000000000..794ec5351ed --- /dev/null +++ b/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_j/index.html @@ -0,0 +1,20 @@ + +Report_block_list_spec_j (infer.ATDGenerated.Report_block_list_spec_j)

    Module ATDGenerated.Report_block_list_spec_j

    type report_block_list_spec = Report_block_list_spec_t.report_block_list_spec = {
    1. bug_type : string;
    2. class_name : string option;
    3. procedure_name : string;
    4. file : string;
    5. comment : string option;
    }
    val write_report_block_list_spec : + Stdlib.Buffer.t -> + report_block_list_spec -> + unit

    Output a JSON value of type report_block_list_spec.

    val string_of_report_block_list_spec : + ?len:int -> + report_block_list_spec -> + string

    Serialize a value of type report_block_list_spec into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report_block_list_spec : + Yojson.Safe.lexer_state -> + Stdlib.Lexing.lexbuf -> + report_block_list_spec

    Input JSON data of type report_block_list_spec.

    val report_block_list_spec_of_string : string -> report_block_list_spec

    Deserialize JSON data of type report_block_list_spec.

    val write_report_block_list_specs : + Stdlib.Buffer.t -> + report_block_list_specs -> + unit

    Output a JSON value of type report_block_list_specs.

    val string_of_report_block_list_specs : + ?len:int -> + report_block_list_specs -> + string

    Serialize a value of type report_block_list_specs into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_report_block_list_specs : + Yojson.Safe.lexer_state -> + Stdlib.Lexing.lexbuf -> + report_block_list_specs

    Input JSON data of type report_block_list_specs.

    val report_block_list_specs_of_string : string -> report_block_list_specs

    Deserialize JSON data of type report_block_list_specs.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_t/index.html new file mode 100644 index 00000000000..d8ad278a9f9 --- /dev/null +++ b/website/static/odoc/next/infer/ATDGenerated/Report_block_list_spec_t/index.html @@ -0,0 +1,2 @@ + +Report_block_list_spec_t (infer.ATDGenerated.Report_block_list_spec_t)

    Module ATDGenerated.Report_block_list_spec_t

    type report_block_list_spec = {
    1. bug_type : string;
    2. class_name : string option;
    3. procedure_name : string;
    4. file : string;
    5. comment : string option;
    }
    type report_block_list_specs = report_block_list_spec list
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Runstate_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Runstate_j/index.html index f49bf25a627..c835b512619 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Runstate_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Runstate_j/index.html @@ -1,5 +1,5 @@ -Runstate_j (infer.ATDGenerated.Runstate_j)

    Module ATDGenerated.Runstate_j

    type infer_version = Runstate_t.infer_version = {
    1. major : int;
    2. minor : int;
    3. patch : int;
    4. commit : string;
    }
    type command = Runstate_t.command
    type run_info = Runstate_t.run_info = {
    1. date : string;
    2. command : command;
    3. infer_version : infer_version;
    }
    type t = Runstate_t.t = {
    1. run_sequence : run_info list;
    2. results_dir_format : string;
    }
    val write_infer_version : Stdlib.Buffer.t -> infer_version -> unit

    Output a JSON value of type infer_version.

    val string_of_infer_version : ?len:int -> infer_version -> string

    Serialize a value of type infer_version into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_infer_version : +Runstate_j (infer.ATDGenerated.Runstate_j)

    Module ATDGenerated.Runstate_j

    type infer_version = Runstate_t.infer_version = {
    1. major : int;
    2. minor : int;
    3. patch : int;
    4. commit : string;
    }
    type command = Runstate_t.command
    type run_info = Runstate_t.run_info = {
    1. date : string;
    2. command : command;
    3. infer_version : infer_version;
    }
    type t = Runstate_t.t = {
    1. run_sequence : run_info list;
    2. results_dir_format : string;
    }
    val write_infer_version : Stdlib.Buffer.t -> infer_version -> unit

    Output a JSON value of type infer_version.

    val string_of_infer_version : ?len:int -> infer_version -> string

    Serialize a value of type infer_version into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_infer_version : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - infer_version

    Input JSON data of type infer_version.

    val infer_version_of_string : string -> infer_version

    Deserialize JSON data of type infer_version.

    val write_command : Stdlib.Buffer.t -> command -> unit

    Output a JSON value of type command.

    val string_of_command : ?len:int -> command -> string

    Serialize a value of type command into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_command : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> command

    Input JSON data of type command.

    val command_of_string : string -> command

    Deserialize JSON data of type command.

    val write_run_info : Stdlib.Buffer.t -> run_info -> unit

    Output a JSON value of type run_info.

    val string_of_run_info : ?len:int -> run_info -> string

    Serialize a value of type run_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_run_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> run_info

    Input JSON data of type run_info.

    val run_info_of_string : string -> run_info

    Deserialize JSON data of type run_info.

    val write_t : Stdlib.Buffer.t -> t -> unit

    Output a JSON value of type t.

    val string_of_t : ?len:int -> t -> string

    Serialize a value of type t into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_t : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> t

    Input JSON data of type t.

    val t_of_string : string -> t

    Deserialize JSON data of type t.

    \ No newline at end of file + infer_version

    Input JSON data of type infer_version.

    val infer_version_of_string : string -> infer_version

    Deserialize JSON data of type infer_version.

    val write_command : Stdlib.Buffer.t -> command -> unit

    Output a JSON value of type command.

    val string_of_command : ?len:int -> command -> string

    Serialize a value of type command into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_command : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> command

    Input JSON data of type command.

    val command_of_string : string -> command

    Deserialize JSON data of type command.

    val write_run_info : Stdlib.Buffer.t -> run_info -> unit

    Output a JSON value of type run_info.

    val string_of_run_info : ?len:int -> run_info -> string

    Serialize a value of type run_info into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_run_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> run_info

    Input JSON data of type run_info.

    val run_info_of_string : string -> run_info

    Deserialize JSON data of type run_info.

    val write_t : Stdlib.Buffer.t -> t -> unit

    Output a JSON value of type t.

    val string_of_t : ?len:int -> t -> string

    Serialize a value of type t into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_t : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> t

    Input JSON data of type t.

    val t_of_string : string -> t

    Deserialize JSON data of type t.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Runstate_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Runstate_t/index.html index 9171942972a..26e5a861e98 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Runstate_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Runstate_t/index.html @@ -1,2 +1,2 @@ -Runstate_t (infer.ATDGenerated.Runstate_t)

    Module ATDGenerated.Runstate_t

    type infer_version = {
    1. major : int;
    2. minor : int;
    3. patch : int;
    4. commit : string;
    }
    type command = InferCommand.t
    type run_info = {
    1. date : string;
    2. command : command;
    3. infer_version : infer_version;
    }
    type t = {
    1. run_sequence : run_info list;
    2. results_dir_format : string;
    }
    \ No newline at end of file +Runstate_t (infer.ATDGenerated.Runstate_t)

    Module ATDGenerated.Runstate_t

    type infer_version = {
    1. major : int;
    2. minor : int;
    3. patch : int;
    4. commit : string;
    }
    type command = InferCommand.t
    type run_info = {
    1. date : string;
    2. command : command;
    3. infer_version : infer_version;
    }
    type t = {
    1. run_sequence : run_info list;
    2. results_dir_format : string;
    }
    diff --git a/website/static/odoc/next/infer/ATDGenerated/Sarifbug_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Sarifbug_j/index.html index 735cf4bb569..b47ccf57470 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Sarifbug_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Sarifbug_j/index.html @@ -1,14 +1,14 @@ -Sarifbug_j (infer.ATDGenerated.Sarifbug_j)

    Module ATDGenerated.Sarifbug_j

    type region = Sarifbug_t.region = {
    1. startLine : int;
    2. startColumn : int;
    }
    type fileloc = Sarifbug_t.fileloc = {
    1. uri : string;
    2. uriBaseId : string;
    }
    type physicalloc = Sarifbug_t.physicalloc = {
    1. artifactLocation : fileloc;
    2. region : region;
    }
    type message = Sarifbug_t.message = {
    1. text : string;
    }
    type trace_loc = Sarifbug_t.trace_loc = {
    1. physicalLocation : physicalloc;
    2. message : message;
    }
    type trace = Sarifbug_t.trace = {
    1. nestingLevel : int;
    2. location : trace_loc;
    }
    type threadflow = Sarifbug_t.threadflow = {
    1. locations : trace list;
    }
    type loc = Sarifbug_t.loc = {
    1. physicalLocation : physicalloc;
    }
    type fingerprints = Sarifbug_t.fingerprints = {
    1. hashV1 : string;
    2. key : string;
    }
    type codeflow = Sarifbug_t.codeflow = {
    1. threadFlows : threadflow list;
    }
    type sarifbug = Sarifbug_t.sarifbug = {
    1. message : message;
    2. level : string;
    3. ruleId : string;
    4. codeFlows : codeflow list option;
    5. locations : loc list;
    6. fingerprints : fingerprints;
    }
    type rule = Sarifbug_t.rule = {
    1. id : string;
    2. shortDescription : message;
    3. helpUri : string;
    }
    val write_region : Stdlib.Buffer.t -> region -> unit

    Output a JSON value of type region.

    val string_of_region : ?len:int -> region -> string

    Serialize a value of type region into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_region : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> region

    Input JSON data of type region.

    val region_of_string : string -> region

    Deserialize JSON data of type region.

    val write_fileloc : Stdlib.Buffer.t -> fileloc -> unit

    Output a JSON value of type fileloc.

    val string_of_fileloc : ?len:int -> fileloc -> string

    Serialize a value of type fileloc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_fileloc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> fileloc

    Input JSON data of type fileloc.

    val fileloc_of_string : string -> fileloc

    Deserialize JSON data of type fileloc.

    val write_physicalloc : Stdlib.Buffer.t -> physicalloc -> unit

    Output a JSON value of type physicalloc.

    val string_of_physicalloc : ?len:int -> physicalloc -> string

    Serialize a value of type physicalloc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_physicalloc : +Sarifbug_j (infer.ATDGenerated.Sarifbug_j)

    Module ATDGenerated.Sarifbug_j

    type region = Sarifbug_t.region = {
    1. startLine : int;
    2. startColumn : int;
    }
    type fileloc = Sarifbug_t.fileloc = {
    1. uri : string;
    2. uriBaseId : string;
    }
    type physicalloc = Sarifbug_t.physicalloc = {
    1. artifactLocation : fileloc;
    2. region : region;
    }
    type message = Sarifbug_t.message = {
    1. text : string;
    }
    type trace_loc = Sarifbug_t.trace_loc = {
    1. physicalLocation : physicalloc;
    2. message : message;
    }
    type trace = Sarifbug_t.trace = {
    1. nestingLevel : int;
    2. location : trace_loc;
    }
    type threadflow = Sarifbug_t.threadflow = {
    1. locations : trace list;
    }
    type loc = Sarifbug_t.loc = {
    1. physicalLocation : physicalloc;
    }
    type fingerprints = Sarifbug_t.fingerprints = {
    1. hashV1 : string;
    2. key : string;
    }
    type codeflow = Sarifbug_t.codeflow = {
    1. threadFlows : threadflow list;
    }
    type sarifbug = Sarifbug_t.sarifbug = {
    1. message : message;
    2. level : string;
    3. ruleId : string;
    4. codeFlows : codeflow list option;
    5. locations : loc list;
    6. fingerprints : fingerprints;
    }
    type rule = Sarifbug_t.rule = {
    1. id : string;
    2. shortDescription : message;
    3. helpUri : string;
    }
    val write_region : Stdlib.Buffer.t -> region -> unit

    Output a JSON value of type region.

    val string_of_region : ?len:int -> region -> string

    Serialize a value of type region into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_region : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> region

    Input JSON data of type region.

    val region_of_string : string -> region

    Deserialize JSON data of type region.

    val write_fileloc : Stdlib.Buffer.t -> fileloc -> unit

    Output a JSON value of type fileloc.

    val string_of_fileloc : ?len:int -> fileloc -> string

    Serialize a value of type fileloc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_fileloc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> fileloc

    Input JSON data of type fileloc.

    val fileloc_of_string : string -> fileloc

    Deserialize JSON data of type fileloc.

    val write_physicalloc : Stdlib.Buffer.t -> physicalloc -> unit

    Output a JSON value of type physicalloc.

    val string_of_physicalloc : ?len:int -> physicalloc -> string

    Serialize a value of type physicalloc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_physicalloc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - physicalloc

    Input JSON data of type physicalloc.

    val physicalloc_of_string : string -> physicalloc

    Deserialize JSON data of type physicalloc.

    val write_message : Stdlib.Buffer.t -> message -> unit

    Output a JSON value of type message.

    val string_of_message : ?len:int -> message -> string

    Serialize a value of type message into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_message : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> message

    Input JSON data of type message.

    val message_of_string : string -> message

    Deserialize JSON data of type message.

    val write_trace_loc : Stdlib.Buffer.t -> trace_loc -> unit

    Output a JSON value of type trace_loc.

    val string_of_trace_loc : ?len:int -> trace_loc -> string

    Serialize a value of type trace_loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_trace_loc : + physicalloc

    Input JSON data of type physicalloc.

    val physicalloc_of_string : string -> physicalloc

    Deserialize JSON data of type physicalloc.

    val write_message : Stdlib.Buffer.t -> message -> unit

    Output a JSON value of type message.

    val string_of_message : ?len:int -> message -> string

    Serialize a value of type message into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_message : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> message

    Input JSON data of type message.

    val message_of_string : string -> message

    Deserialize JSON data of type message.

    val write_trace_loc : Stdlib.Buffer.t -> trace_loc -> unit

    Output a JSON value of type trace_loc.

    val string_of_trace_loc : ?len:int -> trace_loc -> string

    Serialize a value of type trace_loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_trace_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - trace_loc

    Input JSON data of type trace_loc.

    val trace_loc_of_string : string -> trace_loc

    Deserialize JSON data of type trace_loc.

    val write_trace : Stdlib.Buffer.t -> trace -> unit

    Output a JSON value of type trace.

    val string_of_trace : ?len:int -> trace -> string

    Serialize a value of type trace into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_trace : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> trace

    Input JSON data of type trace.

    val trace_of_string : string -> trace

    Deserialize JSON data of type trace.

    val write_threadflow : Stdlib.Buffer.t -> threadflow -> unit

    Output a JSON value of type threadflow.

    val string_of_threadflow : ?len:int -> threadflow -> string

    Serialize a value of type threadflow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_threadflow : + trace_loc

    Input JSON data of type trace_loc.

    val trace_loc_of_string : string -> trace_loc

    Deserialize JSON data of type trace_loc.

    val write_trace : Stdlib.Buffer.t -> trace -> unit

    Output a JSON value of type trace.

    val string_of_trace : ?len:int -> trace -> string

    Serialize a value of type trace into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_trace : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> trace

    Input JSON data of type trace.

    val trace_of_string : string -> trace

    Deserialize JSON data of type trace.

    val write_threadflow : Stdlib.Buffer.t -> threadflow -> unit

    Output a JSON value of type threadflow.

    val string_of_threadflow : ?len:int -> threadflow -> string

    Serialize a value of type threadflow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_threadflow : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - threadflow

    Input JSON data of type threadflow.

    val threadflow_of_string : string -> threadflow

    Deserialize JSON data of type threadflow.

    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_fingerprints : Stdlib.Buffer.t -> fingerprints -> unit

    Output a JSON value of type fingerprints.

    val string_of_fingerprints : ?len:int -> fingerprints -> string

    Serialize a value of type fingerprints into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_fingerprints : + threadflow

    Input JSON data of type threadflow.

    val threadflow_of_string : string -> threadflow

    Deserialize JSON data of type threadflow.

    val write_loc : Stdlib.Buffer.t -> loc -> unit

    Output a JSON value of type loc.

    val string_of_loc : ?len:int -> loc -> string

    Serialize a value of type loc into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

    Input JSON data of type loc.

    val loc_of_string : string -> loc

    Deserialize JSON data of type loc.

    val write_fingerprints : Stdlib.Buffer.t -> fingerprints -> unit

    Output a JSON value of type fingerprints.

    val string_of_fingerprints : ?len:int -> fingerprints -> string

    Serialize a value of type fingerprints into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_fingerprints : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> - fingerprints

    Input JSON data of type fingerprints.

    val fingerprints_of_string : string -> fingerprints

    Deserialize JSON data of type fingerprints.

    val write_codeflow : Stdlib.Buffer.t -> codeflow -> unit

    Output a JSON value of type codeflow.

    val string_of_codeflow : ?len:int -> codeflow -> string

    Serialize a value of type codeflow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_codeflow : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> codeflow

    Input JSON data of type codeflow.

    val codeflow_of_string : string -> codeflow

    Deserialize JSON data of type codeflow.

    val write_sarifbug : Stdlib.Buffer.t -> sarifbug -> unit

    Output a JSON value of type sarifbug.

    val string_of_sarifbug : ?len:int -> sarifbug -> string

    Serialize a value of type sarifbug into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sarifbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sarifbug

    Input JSON data of type sarifbug.

    val sarifbug_of_string : string -> sarifbug

    Deserialize JSON data of type sarifbug.

    val write_rule : Stdlib.Buffer.t -> rule -> unit

    Output a JSON value of type rule.

    val string_of_rule : ?len:int -> rule -> string

    Serialize a value of type rule into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_rule : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> rule

    Input JSON data of type rule.

    val rule_of_string : string -> rule

    Deserialize JSON data of type rule.

    \ No newline at end of file + fingerprints

    Input JSON data of type fingerprints.

    val fingerprints_of_string : string -> fingerprints

    Deserialize JSON data of type fingerprints.

    val write_codeflow : Stdlib.Buffer.t -> codeflow -> unit

    Output a JSON value of type codeflow.

    val string_of_codeflow : ?len:int -> codeflow -> string

    Serialize a value of type codeflow into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_codeflow : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> codeflow

    Input JSON data of type codeflow.

    val codeflow_of_string : string -> codeflow

    Deserialize JSON data of type codeflow.

    val write_sarifbug : Stdlib.Buffer.t -> sarifbug -> unit

    Output a JSON value of type sarifbug.

    val string_of_sarifbug : ?len:int -> sarifbug -> string

    Serialize a value of type sarifbug into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_sarifbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> sarifbug

    Input JSON data of type sarifbug.

    val sarifbug_of_string : string -> sarifbug

    Deserialize JSON data of type sarifbug.

    val write_rule : Stdlib.Buffer.t -> rule -> unit

    Output a JSON value of type rule.

    val string_of_rule : ?len:int -> rule -> string

    Serialize a value of type rule into a JSON string.

    • parameter len

      specifies the initial length of the buffer used internally. Default: 1024.

    val read_rule : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> rule

    Input JSON data of type rule.

    val rule_of_string : string -> rule

    Deserialize JSON data of type rule.

    diff --git a/website/static/odoc/next/infer/ATDGenerated/Sarifbug_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Sarifbug_t/index.html index 36702b36df0..c46e8243d94 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Sarifbug_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Sarifbug_t/index.html @@ -1,2 +1,2 @@ -Sarifbug_t (infer.ATDGenerated.Sarifbug_t)

    Module ATDGenerated.Sarifbug_t

    type region = {
    1. startLine : int;
    2. startColumn : int;
    }
    type fileloc = {
    1. uri : string;
    2. uriBaseId : string;
    }
    type physicalloc = {
    1. artifactLocation : fileloc;
    2. region : region;
    }
    type message = {
    1. text : string;
    }
    type trace_loc = {
    1. physicalLocation : physicalloc;
    2. message : message;
    }
    type trace = {
    1. nestingLevel : int;
    2. location : trace_loc;
    }
    type threadflow = {
    1. locations : trace list;
    }
    type loc = {
    1. physicalLocation : physicalloc;
    }
    type fingerprints = {
    1. hashV1 : string;
    2. key : string;
    }
    type codeflow = {
    1. threadFlows : threadflow list;
    }
    type sarifbug = {
    1. message : message;
    2. level : string;
    3. ruleId : string;
    4. codeFlows : codeflow list option;
    5. locations : loc list;
    6. fingerprints : fingerprints;
    }
    type rule = {
    1. id : string;
    2. shortDescription : message;
    3. helpUri : string;
    }
    \ No newline at end of file +Sarifbug_t (infer.ATDGenerated.Sarifbug_t)

    Module ATDGenerated.Sarifbug_t

    type region = {
    1. startLine : int;
    2. startColumn : int;
    }
    type fileloc = {
    1. uri : string;
    2. uriBaseId : string;
    }
    type physicalloc = {
    1. artifactLocation : fileloc;
    2. region : region;
    }
    type message = {
    1. text : string;
    }
    type trace_loc = {
    1. physicalLocation : physicalloc;
    2. message : message;
    }
    type trace = {
    1. nestingLevel : int;
    2. location : trace_loc;
    }
    type threadflow = {
    1. locations : trace list;
    }
    type loc = {
    1. physicalLocation : physicalloc;
    }
    type fingerprints = {
    1. hashV1 : string;
    2. key : string;
    }
    type codeflow = {
    1. threadFlows : threadflow list;
    }
    type sarifbug = {
    1. message : message;
    2. level : string;
    3. ruleId : string;
    4. codeFlows : codeflow list option;
    5. locations : loc list;
    6. fingerprints : fingerprints;
    }
    type rule = {
    1. id : string;
    2. shortDescription : message;
    3. helpUri : string;
    }
    diff --git a/website/static/odoc/next/infer/ATDGenerated/index.html b/website/static/odoc/next/infer/ATDGenerated/index.html index e2d02617e26..06d75ad906c 100644 --- a/website/static/odoc/next/infer/ATDGenerated/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/index.html @@ -1,2 +1,2 @@ -ATDGenerated (infer.ATDGenerated)

    Module ATDGenerated

    module AtdDeps : sig ... end

    functions necessary to include in atd generated files to enable ppx_compare

    module Clang_ast_b : sig ... end
    module Clang_ast_j : sig ... end
    module Clang_ast_proj : sig ... end
    module Clang_ast_t : sig ... end
    module Clang_ast_types : sig ... end
    module Clang_ast_v : sig ... end
    module Clang_ast_visit : sig ... end
    module Clang_profiler_samples_j : sig ... end
    module Clang_profiler_samples_t : sig ... end
    module Config_impact_data_j : sig ... end
    module Config_impact_data_t : sig ... end
    module InferCommand : sig ... end
    module Java_method_decl_j : sig ... end
    module Java_method_decl_t : sig ... end
    module Java_profiler_samples_j : sig ... end
    module Java_profiler_samples_t : sig ... end
    module Jsonbug_j : sig ... end
    module Jsonbug_t : sig ... end
    module Jsonconfigimpact_j : sig ... end
    module Jsonconfigimpact_t : sig ... end
    module Jsoncost_j : sig ... end
    module Jsoncost_t : sig ... end
    module Pulse_config_j : sig ... end
    module Pulse_config_t : sig ... end
    module Runstate_j : sig ... end
    module Runstate_t : sig ... end
    module Sarifbug_j : sig ... end
    module Sarifbug_t : sig ... end
    \ No newline at end of file +ATDGenerated (infer.ATDGenerated)

    Module ATDGenerated

    module AtdDeps : sig ... end

    functions necessary to include in atd generated files to enable ppx_compare

    module Clang_ast_b : sig ... end
    module Clang_ast_j : sig ... end
    module Clang_ast_proj : sig ... end
    module Clang_ast_t : sig ... end
    module Clang_ast_types : sig ... end
    module Clang_ast_v : sig ... end
    module Clang_ast_visit : sig ... end
    module Clang_profiler_samples_j : sig ... end
    module Clang_profiler_samples_t : sig ... end
    module Config_impact_data_j : sig ... end
    module Config_impact_data_t : sig ... end
    module InferCommand : sig ... end
    module Java_method_decl_j : sig ... end
    module Java_method_decl_t : sig ... end
    module Java_profiler_samples_j : sig ... end
    module Java_profiler_samples_t : sig ... end
    module Jsonbug_j : sig ... end
    module Jsonbug_t : sig ... end
    module Jsonconfigimpact_j : sig ... end
    module Jsonconfigimpact_t : sig ... end
    module Jsoncost_j : sig ... end
    module Jsoncost_t : sig ... end
    module Pulse_config_j : sig ... end
    module Pulse_config_t : sig ... end
    module Report_block_list_spec_j : sig ... end
    module Report_block_list_spec_t : sig ... end
    module Runstate_j : sig ... end
    module Runstate_t : sig ... end
    module Sarifbug_j : sig ... end
    module Sarifbug_t : sig ... end
    diff --git a/website/static/odoc/next/infer/Absint.html b/website/static/odoc/next/infer/Absint.html index 2480f274c10..631f15dd053 100644 --- a/website/static/odoc/next/infer/Absint.html +++ b/website/static/odoc/next/infer/Absint.html @@ -1,2 +1,2 @@ -Absint (infer.Absint)

    Abstract Interpretation Framework

    Absint is Infer's abstract interpretation framework, the recommended way to write analyses in Infer.

    Important modules:

    \ No newline at end of file +Absint (infer.Absint)

    Abstract Interpretation Framework

    Absint is Infer's abstract interpretation framework, the recommended way to write analyses in Infer.

    Important modules:

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanAnd/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanAnd/index.html index 107425dc233..f2a210a0e59 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanAnd/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanAnd/index.html @@ -1,2 +1,2 @@ -BooleanAnd (infer.Absint.AbstractDomain.BooleanAnd)

    Module AbstractDomain.BooleanAnd

    Boolean domain ordered by p || ~q. Useful when you want a boolean that's true only when it's true in both conditional branches.

    include Comparable with type t = bool
    include IStdlib.PrettyPrintable.PrintableType with type t = bool
    type t = bool
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +BooleanAnd (infer.Absint.AbstractDomain.BooleanAnd)

    Module AbstractDomain.BooleanAnd

    Boolean domain ordered by p || ~q. Useful when you want a boolean that's true only when it's true in both conditional branches.

    include Comparable with type t = bool
    include IStdlib.PrettyPrintable.PrintableType with type t = bool
    type t = bool
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanOr/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanOr/index.html index 57f542d50bd..40e727c7106 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanOr/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BooleanOr/index.html @@ -1,2 +1,2 @@ -BooleanOr (infer.Absint.AbstractDomain.BooleanOr)

    Module AbstractDomain.BooleanOr

    Boolean domain ordered by ~p || q. Useful when you want a boolean that's true only when it's true in one conditional branch.

    include S with type t = bool
    include Comparable with type t = bool
    include IStdlib.PrettyPrintable.PrintableType with type t = bool
    type t = bool
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +BooleanOr (infer.Absint.AbstractDomain.BooleanOr)

    Module AbstractDomain.BooleanOr

    Boolean domain ordered by ~p || q. Useful when you want a boolean that's true only when it's true in one conditional branch.

    include S with type t = bool
    include Comparable with type t = bool
    include IStdlib.PrettyPrintable.PrintableType with type t = bool
    type t = bool
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/argument-1-Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/argument-1-Domain/index.html index 39e05ea78c7..1f2c128182e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/argument-1-Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/argument-1-Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractDomain.BottomLifted.Domain)

    Parameter BottomLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractDomain.BottomLifted.Domain)

    Parameter BottomLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/index.html index c4351120e7d..3843284d984 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLifted/index.html @@ -1,3 +1,3 @@ -BottomLifted (infer.Absint.AbstractDomain.BottomLifted)

    Module AbstractDomain.BottomLifted

    Create a domain with Bottom element from a pre-domain

    Parameters

    module Domain : S

    Signature

    include WithBottom with type t = Domain.t Types.bottom_lifted
    include S with type t = Domain.t Types.bottom_lifted
    include Comparable with type t = Domain.t Types.bottom_lifted
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val map : f:(Domain.t -> Domain.t) -> t -> t
    \ No newline at end of file +BottomLifted (infer.Absint.AbstractDomain.BottomLifted)

    Module AbstractDomain.BottomLifted

    Create a domain with Bottom element from a pre-domain

    Parameters

    module Domain : S

    Signature

    include WithBottom with type t = Domain.t Types.bottom_lifted
    include S with type t = Domain.t Types.bottom_lifted
    include Comparable with type t = Domain.t Types.bottom_lifted
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val map : f:(Domain.t -> Domain.t) -> t -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLiftedUtils/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLiftedUtils/index.html index 6de0ec5e2a7..6ac34a8e36f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLiftedUtils/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomLiftedUtils/index.html @@ -1,2 +1,2 @@ -BottomLiftedUtils (infer.Absint.AbstractDomain.BottomLiftedUtils)

    Module AbstractDomain.BottomLiftedUtils

    val pp_bottom : Stdlib.Format.formatter -> unit
    \ No newline at end of file +BottomLiftedUtils (infer.Absint.AbstractDomain.BottomLiftedUtils)

    Module AbstractDomain.BottomLiftedUtils

    val pp_bottom : Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/argument-1-Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/argument-1-Domain/index.html index 3af1aaecd84..8b23efc046d 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/argument-1-Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/argument-1-Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractDomain.BottomTopLifted.Domain)

    Parameter BottomTopLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractDomain.BottomTopLifted.Domain)

    Parameter BottomTopLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/index.html index f1af409d03c..ebd52752f84 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/BottomTopLifted/index.html @@ -1,2 +1,2 @@ -BottomTopLifted (infer.Absint.AbstractDomain.BottomTopLifted)

    Module AbstractDomain.BottomTopLifted

    Create a domain with Bottom and Top elements from a pre-domain

    Parameters

    module Domain : S

    Signature

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +BottomTopLifted (infer.Absint.AbstractDomain.BottomTopLifted)

    Module AbstractDomain.BottomTopLifted

    Create a domain with Bottom and Top elements from a pre-domain

    Parameters

    module Domain : S

    Signature

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/argument-1-MaxCount/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/argument-1-MaxCount/index.html index e3acee0839e..d509f9420f2 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/argument-1-MaxCount/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/argument-1-MaxCount/index.html @@ -1,2 +1,2 @@ -MaxCount (infer.Absint.AbstractDomain.CountDomain.MaxCount)

    Parameter CountDomain.MaxCount

    val max : int

    must be positive

    \ No newline at end of file +MaxCount (infer.Absint.AbstractDomain.CountDomain.MaxCount)

    Parameter CountDomain.MaxCount

    val max : int

    must be positive

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/index.html index fad575bbbd8..4cb4e3c4cdc 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/CountDomain/index.html @@ -1,2 +1,2 @@ -CountDomain (infer.Absint.AbstractDomain.CountDomain)

    Module AbstractDomain.CountDomain

    Domain keeping a non-negative count with a bounded maximum value. The count can be only incremented and decremented.

    Parameters

    Signature

    include WithBottom with type t = private int
    include S with type t = private int
    include Comparable with type t = private int
    include IStdlib.PrettyPrintable.PrintableType with type t = private int
    type t = private int
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    top is maximum value

    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val increment : t -> t

    bump the count by one if it is less than the max

    val decrement : t -> t

    descrease the count by one if it is greater than 0

    val add : t -> t -> t

    capped sum of two states

    \ No newline at end of file +CountDomain (infer.Absint.AbstractDomain.CountDomain)

    Module AbstractDomain.CountDomain

    Domain keeping a non-negative count with a bounded maximum value. The count can be only incremented and decremented.

    Parameters

    Signature

    include WithBottom with type t = private int
    include S with type t = private int
    include Comparable with type t = private int
    include IStdlib.PrettyPrintable.PrintableType with type t = private int
    type t = private int
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    top is maximum value

    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val increment : t -> t

    bump the count by one if it is less than the max

    val decrement : t -> t

    descrease the count by one if it is greater than 0

    val add : t -> t -> t

    capped sum of two states

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/argument-1-MaxCount/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/argument-1-MaxCount/index.html index 3501830e154..5e13d4a2326 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/argument-1-MaxCount/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/argument-1-MaxCount/index.html @@ -1,2 +1,2 @@ -MaxCount (infer.Absint.AbstractDomain.DownwardIntDomain.MaxCount)

    Parameter DownwardIntDomain.MaxCount

    val max : int

    must be positive

    \ No newline at end of file +MaxCount (infer.Absint.AbstractDomain.DownwardIntDomain.MaxCount)

    Parameter DownwardIntDomain.MaxCount

    val max : int

    must be positive

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/index.html index 051f60ce6a1..a4d1e80cc48 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/DownwardIntDomain/index.html @@ -1,2 +1,2 @@ -DownwardIntDomain (infer.Absint.AbstractDomain.DownwardIntDomain)

    Module AbstractDomain.DownwardIntDomain

    Domain keeping a non-negative count with a bounded maximum value. join is minimum and top is zero.

    Parameters

    Signature

    top is zero

    include WithTop with type t = private int
    include S with type t = private int
    include Comparable with type t = private int
    include IStdlib.PrettyPrintable.PrintableType with type t = private int
    type t = private int
    val top : t
    val is_top : t -> bool

    bottom is the provided maximum

    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val increment : t -> t

    bump the count by one if this won't cross the maximum

    val decrement : t -> t

    decrease the count by one if it is greater than 0

    \ No newline at end of file +DownwardIntDomain (infer.Absint.AbstractDomain.DownwardIntDomain)

    Module AbstractDomain.DownwardIntDomain

    Domain keeping a non-negative count with a bounded maximum value. join is minimum and top is zero.

    Parameters

    Signature

    top is zero

    include WithTop with type t = private int
    include S with type t = private int
    include Comparable with type t = private int
    include IStdlib.PrettyPrintable.PrintableType with type t = private int
    type t = private int
    val top : t
    val is_top : t -> bool

    bottom is the provided maximum

    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val increment : t -> t

    bump the count by one if this won't cross the maximum

    val decrement : t -> t

    decrease the count by one if it is greater than 0

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Empty/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Empty/index.html index 695657871f9..68cf2e7bed5 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Empty/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Empty/index.html @@ -1,2 +1,2 @@ -Empty (infer.Absint.AbstractDomain.Empty)

    Module AbstractDomain.Empty

    include Comparable with type t = empty
    include IStdlib.PrettyPrintable.PrintableType with type t = empty
    type t = empty
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Empty (infer.Absint.AbstractDomain.Empty)

    Module AbstractDomain.Empty

    include Comparable with type t = empty
    include IStdlib.PrettyPrintable.PrintableType with type t = empty
    type t = empty
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-1-Key/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-1-Key/index.html index 5c83a67221a..252aef53d49 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Absint.AbstractDomain.FiniteMultiMap.Key)

    Parameter FiniteMultiMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Key (infer.Absint.AbstractDomain.FiniteMultiMap.Key)

    Parameter FiniteMultiMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-2-Value/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-2-Value/index.html index de6661b3ea7..3534b699aef 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-2-Value/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/argument-2-Value/index.html @@ -1,2 +1,2 @@ -Value (infer.Absint.AbstractDomain.FiniteMultiMap.Value)

    Parameter FiniteMultiMap.Value

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Value (infer.Absint.AbstractDomain.FiniteMultiMap.Value)

    Parameter FiniteMultiMap.Value

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/index.html index 4e678800b5a..85f9c9dba5f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteMultiMap/index.html @@ -1,2 +1,2 @@ -FiniteMultiMap (infer.Absint.AbstractDomain.FiniteMultiMap)

    Module AbstractDomain.FiniteMultiMap

    Parameters

    Signature

    include WithBottom
    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : Key.t -> Value.t -> t
    val add : Key.t -> Value.t -> t -> t
    val set_to_single_value : Key.t -> Value.t -> t -> t

    set_to_single_value k v m is equivalent (but faster) to add k v (remove_all k m).

    val mem : Key.t -> t -> bool
    val remove : Key.t -> Value.t -> t -> t
    val remove_all : Key.t -> t -> t
    val find_all : Key.t -> t -> Value.t list
    val find_fold : (Value.t -> 'a -> 'a) -> Key.t -> t -> 'a -> 'a

    Fold over the values associated to one key

    val get_all_keys : t -> Key.t list
    val exists : (Key.t -> Value.t -> bool) -> t -> bool
    val fold : (Key.t -> Value.t -> 'a -> 'a) -> t -> 'a -> 'a
    val filter : (Key.t -> Value.t -> bool) -> t -> t
    \ No newline at end of file +FiniteMultiMap (infer.Absint.AbstractDomain.FiniteMultiMap)

    Module AbstractDomain.FiniteMultiMap

    Parameters

    Signature

    include WithBottom
    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : Key.t -> Value.t -> t
    val add : Key.t -> Value.t -> t -> t
    val set_to_single_value : Key.t -> Value.t -> t -> t

    set_to_single_value k v m is equivalent (but faster) to add k v (remove_all k m).

    val mem : Key.t -> t -> bool
    val remove : Key.t -> Value.t -> t -> t
    val remove_all : Key.t -> t -> t
    val find_all : Key.t -> t -> Value.t list
    val find_fold : (Value.t -> 'a -> 'a) -> Key.t -> t -> 'a -> 'a

    Fold over the values associated to one key

    val get_all_keys : t -> Key.t list
    val exists : (Key.t -> Value.t -> bool) -> t -> bool
    val fold : (Key.t -> Value.t -> 'a -> 'a) -> t -> 'a -> 'a
    val filter : (Key.t -> Value.t -> bool) -> t -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/argument-1-Element/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/argument-1-Element/index.html index d6219eb3d87..b3c2e40c419 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/argument-1-Element/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/argument-1-Element/index.html @@ -1,2 +1,2 @@ -Element (infer.Absint.AbstractDomain.FiniteSet.Element)

    Parameter FiniteSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Element (infer.Absint.AbstractDomain.FiniteSet.Element)

    Parameter FiniteSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/index.html index 59aecfb39e0..9d4e17c78bd 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Absint.AbstractDomain.FiniteSet)

    Module AbstractDomain.FiniteSet

    Lift a set to a powerset domain ordered by subset. The elements of the set should be drawn from a *finite* collection of possible values, since the widening operator here is just union.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet with type elt = Element.t
    include IStdlib.IStd.Caml.Set.S with type elt = Element.t
    type elt = Element.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +FiniteSet (infer.Absint.AbstractDomain.FiniteSet)

    Module AbstractDomain.FiniteSet

    Lift a set to a powerset domain ordered by subset. The elements of the set should be drawn from a *finite* collection of possible values, since the widening operator here is just union.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet with type elt = Element.t
    include IStdlib.IStd.Caml.Set.S with type elt = Element.t
    type elt = Element.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html index 148f728e3c7..6e6d276c45c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html @@ -1,2 +1,2 @@ -PPSet (infer.Absint.AbstractDomain.FiniteSetOfPPSet.PPSet)

    Parameter FiniteSetOfPPSet.PPSet

    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +PPSet (infer.Absint.AbstractDomain.FiniteSetOfPPSet.PPSet)

    Parameter FiniteSetOfPPSet.PPSet

    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/index.html index c4922923418..745d3705c7c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/FiniteSetOfPPSet/index.html @@ -1,4 +1,4 @@ -FiniteSetOfPPSet (infer.Absint.AbstractDomain.FiniteSetOfPPSet)

    Module AbstractDomain.FiniteSetOfPPSet

    Lift a PPSet to a powerset domain ordered by subset. The elements of the set should be drawn from a *finite* collection of possible values, since the widening operator here is just union.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet +FiniteSetOfPPSet (infer.Absint.AbstractDomain.FiniteSetOfPPSet)

    Module AbstractDomain.FiniteSetOfPPSet

    Lift a PPSet to a powerset domain ordered by subset. The elements of the set should be drawn from a *finite* collection of possible values, since the widening operator here is just union.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet with type t = PPSet.t - with type elt = PPSet.elt
    include IStdlib.IStd.Caml.Set.S with type t = PPSet.t with type elt = PPSet.elt
    type elt = PPSet.elt
    type t = PPSet.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + with type elt = PPSet.elt
    include IStdlib.IStd.Caml.Set.S with type t = PPSet.t with type elt = PPSet.elt
    type elt = PPSet.elt
    type t = PPSet.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/argument-1-V/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/argument-1-V/index.html index 6a2f020fa1f..0ab6032e602 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/argument-1-V/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/argument-1-V/index.html @@ -1,2 +1,2 @@ -V (infer.Absint.AbstractDomain.Flat.V)

    Parameter Flat.V

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    \ No newline at end of file +V (infer.Absint.AbstractDomain.Flat.V)

    Parameter Flat.V

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/index.html index 3fb073d8134..84ab61f9c1f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Flat/index.html @@ -1,2 +1,2 @@ -Flat (infer.Absint.AbstractDomain.Flat)

    Module AbstractDomain.Flat

    Flat abstract domain: Bottom, Top, and non-comparable elements in between

    Parameters

    Signature

    include WithBottom
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val v : V.t -> t
    val get : t -> V.t option
    \ No newline at end of file +Flat (infer.Absint.AbstractDomain.Flat)

    Module AbstractDomain.Flat

    Flat abstract domain: Bottom, Top, and non-comparable elements in between

    Parameters

    Signature

    include WithBottom
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val v : V.t -> t
    val get : t -> V.t option
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-1-Key/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-1-Key/index.html index 0c46102f43f..bb7793d1947 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Absint.AbstractDomain.InvertedMap.Key)

    Parameter InvertedMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Key (infer.Absint.AbstractDomain.InvertedMap.Key)

    Parameter InvertedMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html index 88dabf0dc86..542b2bc1ae6 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html @@ -1,2 +1,2 @@ -ValueDomain (infer.Absint.AbstractDomain.InvertedMap.ValueDomain)

    Parameter InvertedMap.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +ValueDomain (infer.Absint.AbstractDomain.InvertedMap.ValueDomain)

    Parameter InvertedMap.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/index.html index 741d4be82fb..f14d740c5c5 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedMap/index.html @@ -1,5 +1,5 @@ -InvertedMap (infer.Absint.AbstractDomain.InvertedMap)

    Module AbstractDomain.InvertedMap

    Map domain ordered by intersection over the set of bindings, so the top element is the empty map. Every element implictly maps to top unless it is explicitly bound to something else

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap +InvertedMap (infer.Absint.AbstractDomain.InvertedMap)

    Module AbstractDomain.InvertedMap

    Map domain ordered by intersection over the set of bindings, so the top element is the empty map. Every element implictly maps to top unless it is explicitly bound to something else

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap with type key = Key.t with type value = ValueDomain.t
    include IStdlib.PrettyPrintable.MonoMap with type key = Key.t @@ -9,4 +9,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/argument-1-Element/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/argument-1-Element/index.html index e2a872f06c1..bf7b10f6098 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/argument-1-Element/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/argument-1-Element/index.html @@ -1,2 +1,2 @@ -Element (infer.Absint.AbstractDomain.InvertedSet.Element)

    Parameter InvertedSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Element (infer.Absint.AbstractDomain.InvertedSet.Element)

    Parameter InvertedSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/index.html index dda6d3cd9a5..931f28e1240 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/InvertedSet/index.html @@ -1,2 +1,2 @@ -InvertedSet (infer.Absint.AbstractDomain.InvertedSet)

    Module AbstractDomain.InvertedSet

    Lift a set to a powerset domain ordered by superset, so the join operator is intersection

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet with type elt = Element.t
    include IStdlib.IStd.Caml.Set.S with type elt = Element.t
    type elt = Element.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +InvertedSet (infer.Absint.AbstractDomain.InvertedSet)

    Module AbstractDomain.InvertedSet

    Lift a set to a powerset domain ordered by superset, so the join operator is intersection

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPSet with type elt = Element.t
    include IStdlib.IStd.Caml.Set.S with type elt = Element.t
    type elt = Element.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-1-Key/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-1-Key/index.html index 5472a7834d0..4bedbef0a9b 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Absint.AbstractDomain.Map.Key)

    Parameter Map.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Key (infer.Absint.AbstractDomain.Map.Key)

    Parameter Map.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-2-ValueDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-2-ValueDomain/index.html index f233f6852ff..79438f6a74a 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-2-ValueDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/argument-2-ValueDomain/index.html @@ -1,2 +1,2 @@ -ValueDomain (infer.Absint.AbstractDomain.Map.ValueDomain)

    Parameter Map.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +ValueDomain (infer.Absint.AbstractDomain.Map.ValueDomain)

    Parameter Map.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/index.html index 770b67be40e..db864bad813 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Map/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Map/index.html @@ -1,5 +1,5 @@ -Map (infer.Absint.AbstractDomain.Map)

    Module AbstractDomain.Map

    Map domain ordered by union over the set of bindings, so the bottom element is the empty map. Every element implicitly maps to bottom unless it is explicitly bound to something else

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap +Map (infer.Absint.AbstractDomain.Map)

    Module AbstractDomain.Map

    Map domain ordered by union over the set of bindings, so the bottom element is the empty map. Every element implicitly maps to bottom unless it is explicitly bound to something else

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap with type key = Key.t with type value = ValueDomain.t
    include IStdlib.PrettyPrintable.MonoMap with type key = Key.t @@ -9,4 +9,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html index 047f38e4763..cb2f7170eb1 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html @@ -1,12 +1,12 @@ -PPMap (infer.Absint.AbstractDomain.MapOfPPMap.PPMap)

    Parameter MapOfPPMap.PPMap

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +PPMap (infer.Absint.AbstractDomain.MapOfPPMap.PPMap)

    Parameter MapOfPPMap.PPMap

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html index c39b1be7cda..c9757cc8fae 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html @@ -1,2 +1,2 @@ -ValueDomain (infer.Absint.AbstractDomain.MapOfPPMap.ValueDomain)

    Parameter MapOfPPMap.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +ValueDomain (infer.Absint.AbstractDomain.MapOfPPMap.ValueDomain)

    Parameter MapOfPPMap.ValueDomain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/index.html index a3251312ac0..0d7302b4a98 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/MapOfPPMap/index.html @@ -1,5 +1,5 @@ -MapOfPPMap (infer.Absint.AbstractDomain.MapOfPPMap)

    Module AbstractDomain.MapOfPPMap

    Map domain ordered by union over the set of bindings, so the bottom element is the empty map. Every element implicitly maps to bottom unless it is explicitly bound to something else. Uses PPMap as the underlying map

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap +MapOfPPMap (infer.Absint.AbstractDomain.MapOfPPMap)

    Module AbstractDomain.MapOfPPMap

    Map domain ordered by union over the set of bindings, so the bottom element is the empty map. Every element implicitly maps to bottom unless it is explicitly bound to something else. Uses PPMap as the underlying map

    Parameters

    module ValueDomain : S

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap with type key = PPMap.key with type value = ValueDomain.t with type t = ValueDomain.t PPMap.t
    include IStdlib.PrettyPrintable.MonoMap @@ -11,4 +11,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/argument-1-Element/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/argument-1-Element/index.html index 250d518b34a..e5c91e10f3a 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/argument-1-Element/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/argument-1-Element/index.html @@ -1,2 +1,2 @@ -Element (infer.Absint.AbstractDomain.MinReprSet.Element)

    Parameter MinReprSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Element (infer.Absint.AbstractDomain.MinReprSet.Element)

    Parameter MinReprSet.Element

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/index.html index e4b5a54cfcc..c96c876b4bd 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/MinReprSet/index.html @@ -1,2 +1,2 @@ -MinReprSet (infer.Absint.AbstractDomain.MinReprSet)

    Module AbstractDomain.MinReprSet

    Abstracts a set of Elements by keeping its smallest representative only. The widening is terminating only if the order fulfills the descending chain condition.

    Parameters

    Signature

    type elt = Element.t
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : elt -> t
    val min_elt : t -> elt option
    val add : elt -> t -> t
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val exists : (elt -> bool) -> t -> bool
    \ No newline at end of file +MinReprSet (infer.Absint.AbstractDomain.MinReprSet)

    Module AbstractDomain.MinReprSet

    Abstracts a set of Elements by keeping its smallest representative only. The widening is terminating only if the order fulfills the descending chain condition.

    Parameters

    Signature

    type elt = Element.t
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : elt -> t
    val min_elt : t -> elt option
    val add : elt -> t -> t
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val exists : (elt -> bool) -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-1-Domain1/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-1-Domain1/index.html index d7a3ab144e8..49d667299ad 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-1-Domain1/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-1-Domain1/index.html @@ -1,2 +1,2 @@ -Domain1 (infer.Absint.AbstractDomain.Pair.Domain1)

    Parameter Pair.Domain1

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain1 (infer.Absint.AbstractDomain.Pair.Domain1)

    Parameter Pair.Domain1

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-2-Domain2/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-2-Domain2/index.html index f72800623cc..4c3ebd45f8d 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-2-Domain2/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/argument-2-Domain2/index.html @@ -1,2 +1,2 @@ -Domain2 (infer.Absint.AbstractDomain.Pair.Domain2)

    Parameter Pair.Domain2

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain2 (infer.Absint.AbstractDomain.Pair.Domain2)

    Parameter Pair.Domain2

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/index.html index e85418489a8..925dfb2ab17 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Pair/index.html @@ -1,3 +1,3 @@ -Pair (infer.Absint.AbstractDomain.Pair)

    Module AbstractDomain.Pair

    Cartesian product of two domains.

    Parameters

    module Domain1 : S
    module Domain2 : S

    Signature

    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType - with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Pair (infer.Absint.AbstractDomain.Pair)

    Module AbstractDomain.Pair

    Cartesian product of two domains.

    Parameters

    module Domain1 : S
    module Domain2 : S

    Signature

    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType + with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-1-Domain1/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-1-Domain1/index.html index 1cf49acaa17..2a2e85126e1 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-1-Domain1/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-1-Domain1/index.html @@ -1,2 +1,2 @@ -Domain1 (infer.Absint.AbstractDomain.PairDisjunct.Domain1)

    Parameter PairDisjunct.Domain1

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +Domain1 (infer.Absint.AbstractDomain.PairDisjunct.Domain1)

    Parameter PairDisjunct.Domain1

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-2-Domain2/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-2-Domain2/index.html index cdfa9a18ade..eed7fd829e9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-2-Domain2/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/argument-2-Domain2/index.html @@ -1,2 +1,2 @@ -Domain2 (infer.Absint.AbstractDomain.PairDisjunct.Domain2)

    Parameter PairDisjunct.Domain2

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +Domain2 (infer.Absint.AbstractDomain.PairDisjunct.Domain2)

    Parameter PairDisjunct.Domain2

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/index.html index e116589d5cb..f5a8f54c3f9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairDisjunct/index.html @@ -1,3 +1,3 @@ -PairDisjunct (infer.Absint.AbstractDomain.PairDisjunct)

    Module AbstractDomain.PairDisjunct

    Parameters

    module Domain1 : Disjunct
    module Domain2 : Disjunct

    Signature

    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType - with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +PairDisjunct (infer.Absint.AbstractDomain.PairDisjunct)

    Module AbstractDomain.PairDisjunct

    Parameters

    module Domain1 : Disjunct
    module Domain2 : Disjunct

    Signature

    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType + with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-1-Domain1/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-1-Domain1/index.html index 39f73cfda48..cab5d79fbd1 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-1-Domain1/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-1-Domain1/index.html @@ -1,2 +1,2 @@ -Domain1 (infer.Absint.AbstractDomain.PairWithBottom.Domain1)

    Parameter PairWithBottom.Domain1

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +Domain1 (infer.Absint.AbstractDomain.PairWithBottom.Domain1)

    Parameter PairWithBottom.Domain1

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-2-Domain2/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-2-Domain2/index.html index 055de79d4d0..fece710337d 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-2-Domain2/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/argument-2-Domain2/index.html @@ -1,2 +1,2 @@ -Domain2 (infer.Absint.AbstractDomain.PairWithBottom.Domain2)

    Parameter PairWithBottom.Domain2

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +Domain2 (infer.Absint.AbstractDomain.PairWithBottom.Domain2)

    Parameter PairWithBottom.Domain2

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/index.html index e6eb7735dcc..ac43eb6392c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithBottom/index.html @@ -1,3 +1,3 @@ -PairWithBottom (infer.Absint.AbstractDomain.PairWithBottom)

    Module AbstractDomain.PairWithBottom

    Parameters

    Signature

    include S with type t = Domain1.t * Domain2.t
    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType - with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +PairWithBottom (infer.Absint.AbstractDomain.PairWithBottom)

    Module AbstractDomain.PairWithBottom

    Parameters

    Signature

    include S with type t = Domain1.t * Domain2.t
    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType + with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-1-Domain1/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-1-Domain1/index.html index 8bd1d30b7de..0ed4b52e55e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-1-Domain1/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-1-Domain1/index.html @@ -1,2 +1,2 @@ -Domain1 (infer.Absint.AbstractDomain.PairWithTop.Domain1)

    Parameter PairWithTop.Domain1

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +Domain1 (infer.Absint.AbstractDomain.PairWithTop.Domain1)

    Parameter PairWithTop.Domain1

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-2-Domain2/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-2-Domain2/index.html index 00625b39f6a..7d0cf5c367e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-2-Domain2/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/argument-2-Domain2/index.html @@ -1,2 +1,2 @@ -Domain2 (infer.Absint.AbstractDomain.PairWithTop.Domain2)

    Parameter PairWithTop.Domain2

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +Domain2 (infer.Absint.AbstractDomain.PairWithTop.Domain2)

    Parameter PairWithTop.Domain2

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/index.html index dda34617a27..23cce855df7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/PairWithTop/index.html @@ -1,3 +1,3 @@ -PairWithTop (infer.Absint.AbstractDomain.PairWithTop)

    Module AbstractDomain.PairWithTop

    Parameters

    module Domain1 : WithTop
    module Domain2 : WithTop

    Signature

    include S with type t = Domain1.t * Domain2.t
    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType - with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +PairWithTop (infer.Absint.AbstractDomain.PairWithTop)

    Module AbstractDomain.PairWithTop

    Parameters

    module Domain1 : WithTop
    module Domain2 : WithTop

    Signature

    include S with type t = Domain1.t * Domain2.t
    include Comparable with type t = Domain1.t * Domain2.t
    include IStdlib.PrettyPrintable.PrintableType + with type t = Domain1.t * Domain2.t
    type t = Domain1.t * Domain2.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-1-Key/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-1-Key/index.html index 5f5d6c29f31..bf77010495b 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Absint.AbstractDomain.SafeInvertedMap.Key)

    Parameter SafeInvertedMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Key (infer.Absint.AbstractDomain.SafeInvertedMap.Key)

    Parameter SafeInvertedMap.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-2-ValueDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-2-ValueDomain/index.html index bc85174ea5b..6d1b3996729 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-2-ValueDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/argument-2-ValueDomain/index.html @@ -1,2 +1,2 @@ -ValueDomain (infer.Absint.AbstractDomain.SafeInvertedMap.ValueDomain)

    Parameter SafeInvertedMap.ValueDomain

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +ValueDomain (infer.Absint.AbstractDomain.SafeInvertedMap.ValueDomain)

    Parameter SafeInvertedMap.ValueDomain

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/index.html index 0db738603bd..2397baa733a 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/SafeInvertedMap/index.html @@ -1,5 +1,5 @@ -SafeInvertedMap (infer.Absint.AbstractDomain.SafeInvertedMap)

    Module AbstractDomain.SafeInvertedMap

    Similar to InvertedMap but it guarantees that it has a canonical form. For example, both {a -> top_v} and empty represent the same abstract value top in InvertedMap, but in this implementation, top is always implemented as empty by not adding the top_v explicitly.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap +SafeInvertedMap (infer.Absint.AbstractDomain.SafeInvertedMap)

    Module AbstractDomain.SafeInvertedMap

    Similar to InvertedMap but it guarantees that it has a canonical form. For example, both {a -> top_v} and empty represent the same abstract value top in InvertedMap, but in this implementation, top is always implemented as empty by not adding the top_v explicitly.

    Parameters

    Signature

    include IStdlib.PrettyPrintable.PPMonoMap with type key = Key.t with type value = ValueDomain.t
    include IStdlib.PrettyPrintable.MonoMap with type key = Key.t @@ -9,4 +9,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-1-Below/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-1-Below/index.html index 4c31212603c..2e9f42d8372 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-1-Below/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-1-Below/index.html @@ -1,2 +1,2 @@ -Below (infer.Absint.AbstractDomain.Stacked.Below)

    Parameter Stacked.Below

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Below (infer.Absint.AbstractDomain.Stacked.Below)

    Parameter Stacked.Below

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-2-Val/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-2-Val/index.html index 71df86788a2..9a098c5ec98 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-2-Val/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-2-Val/index.html @@ -1,2 +1,2 @@ -Val (infer.Absint.AbstractDomain.Stacked.Val)

    Parameter Stacked.Val

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Val (infer.Absint.AbstractDomain.Stacked.Val)

    Parameter Stacked.Val

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-3-Above/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-3-Above/index.html index ad6c86fed00..9d62ceab52c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-3-Above/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/argument-3-Above/index.html @@ -1,2 +1,2 @@ -Above (infer.Absint.AbstractDomain.Stacked.Above)

    Parameter Stacked.Above

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Above (infer.Absint.AbstractDomain.Stacked.Above)

    Parameter Stacked.Above

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/index.html index e419f36f626..4087e96a32c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Stacked/index.html @@ -1,3 +1,3 @@ -Stacked (infer.Absint.AbstractDomain.Stacked)

    Module AbstractDomain.Stacked

    Stacked abstract domain: tagged union of Below, Val, and Above domains where all elements of Below are strictly smaller than all elements of Val which are strictly smaller than all elements of Above

    Parameters

    module Below : S
    module Val : S
    module Above : S

    Signature

    include Comparable with type t = (Below.t, Val.t, Above.t) Types.below_above
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Stacked (infer.Absint.AbstractDomain.Stacked)

    Module AbstractDomain.Stacked

    Stacked abstract domain: tagged union of Below, Val, and Above domains where all elements of Below are strictly smaller than all elements of Val which are strictly smaller than all elements of Above

    Parameters

    module Below : S
    module Val : S
    module Above : S

    Signature

    include Comparable with type t = (Below.t, Val.t, Above.t) Types.below_above
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/StackedUtils/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/StackedUtils/index.html index 44bae173903..80520e321f1 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/StackedUtils/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/StackedUtils/index.html @@ -1,32 +1,32 @@ -StackedUtils (infer.Absint.AbstractDomain.StackedUtils)

    Module AbstractDomain.StackedUtils

    val leq : - leq_below:(lhs:'b -> rhs:'b -> bool) -> - leq:(lhs:'v -> rhs:'v -> bool) -> - leq_above:(lhs:'a -> rhs:'a -> bool) -> - lhs:('b, 'v, 'a) Types.below_above -> - rhs:('b, 'v, 'a) Types.below_above -> +StackedUtils (infer.Absint.AbstractDomain.StackedUtils)

    Module AbstractDomain.StackedUtils

    val leq : + leq_below:(lhs:'b -> rhs:'b -> bool) -> + leq:(lhs:'v -> rhs:'v -> bool) -> + leq_above:(lhs:'a -> rhs:'a -> bool) -> + lhs:('b, 'v, 'a) Types.below_above -> + rhs:('b, 'v, 'a) Types.below_above -> bool
    val compare : ('b, 'v, 'a) Types.below_above -> ('b, 'v, 'a) Types.below_above -> - cmp_below:('b -> 'b -> int) -> - cmp:('v -> 'v -> int) -> - cmp_above:('a -> 'a -> int) -> + cmp_below:('b -> 'b -> int) -> + cmp:('v -> 'v -> int) -> + cmp_above:('a -> 'a -> int) -> int
    val pp : - pp_below:(Stdlib.Format.formatter -> 'b -> unit) -> - pp:(Stdlib.Format.formatter -> 'v -> unit) -> - pp_above:(Stdlib.Format.formatter -> 'a -> unit) -> + pp_below:(Stdlib.Format.formatter -> 'b -> unit) -> + pp:(Stdlib.Format.formatter -> 'v -> unit) -> + pp_above:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> ('b, 'v, 'a) Types.below_above -> unit
    val combine : - dir:[ `Increasing | `Decreasing ] -> + dir:[ `Increasing | `Decreasing ] -> ('b, 'v, 'a) Types.below_above -> ('b, 'v, 'a) Types.below_above -> - f_below:('b -> 'b -> 'b) -> - f:('v -> 'v -> 'v) -> - f_above:('a -> 'a -> 'a) -> + f_below:('b -> 'b -> 'b) -> + f:('v -> 'v -> 'v) -> + f_above:('a -> 'a -> 'a) -> ('b, 'v, 'a) Types.below_above
    val map : ('b, 'v, 'a) Types.below_above -> - f_below:('b -> 'b2) -> - f:('v -> 'v2) -> - f_above:('a -> 'a2) -> - ('b2, 'v2, 'a2) Types.below_above
    \ No newline at end of file + f_below:('b -> 'b2) -> + f:('v -> 'v2) -> + f_above:('a -> 'a2) -> + ('b2, 'v2, 'a2) Types.below_above
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/argument-1-Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/argument-1-Domain/index.html index e8434e517a7..cefd81e536c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/argument-1-Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/argument-1-Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractDomain.TopLifted.Domain)

    Parameter TopLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractDomain.TopLifted.Domain)

    Parameter TopLifted.Domain

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/index.html index 95778610990..2b49fd72372 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLifted/index.html @@ -1,3 +1,3 @@ -TopLifted (infer.Absint.AbstractDomain.TopLifted)

    Module AbstractDomain.TopLifted

    Create a domain with Top element from a pre-domain

    Parameters

    module Domain : S

    Signature

    include WithTop with type t = Domain.t Types.top_lifted
    include S with type t = Domain.t Types.top_lifted
    include Comparable with type t = Domain.t Types.top_lifted
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val map : (Domain.t -> Domain.t) -> t -> t
    val get : default:'a -> (Domain.t -> 'a) -> t -> 'a
    \ No newline at end of file +TopLifted (infer.Absint.AbstractDomain.TopLifted)

    Module AbstractDomain.TopLifted

    Create a domain with Top element from a pre-domain

    Parameters

    module Domain : S

    Signature

    include WithTop with type t = Domain.t Types.top_lifted
    include S with type t = Domain.t Types.top_lifted
    include Comparable with type t = Domain.t Types.top_lifted
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val map : (Domain.t -> Domain.t) -> t -> t
    val get : default:'a -> (Domain.t -> 'a) -> t -> 'a
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html index 77e187c9a97..3b20f76cf54 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html @@ -1,2 +1,2 @@ -TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)

    Module AbstractDomain.TopLiftedUtils

    val pp_top : Stdlib.Format.formatter -> unit
    \ No newline at end of file +TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)

    Module AbstractDomain.TopLiftedUtils

    val pp_top : Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Types/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Types/index.html index 967bb527b81..89eb4cce2e9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Types/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Types/index.html @@ -1,6 +1,6 @@ -Types (infer.Absint.AbstractDomain.Types)

    Module AbstractDomain.Types

    type 'astate bottom_lifted =
    1. | Bottom
    2. | NonBottom of 'astate
    type 'astate top_lifted =
    1. | Top
    2. | NonTop of 'astate
    val equal_top_lifted : +Types (infer.Absint.AbstractDomain.Types)

    Module AbstractDomain.Types

    type 'astate bottom_lifted =
    1. | Bottom
    2. | NonBottom of 'astate
    type 'astate top_lifted =
    1. | Top
    2. | NonTop of 'astate
    val equal_top_lifted : ('astate -> 'astate -> bool) -> 'astate top_lifted -> 'astate top_lifted -> - bool
    type ('below, 'astate, 'above) below_above =
    1. | Below of 'below
    2. | Above of 'above
    3. | Val of 'astate
    \ No newline at end of file + bool
    type ('below, 'astate, 'above) below_above =
    1. | Below of 'below
    2. | Above of 'above
    3. | Val of 'astate
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/Unit/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/Unit/index.html index ae8430f4b20..d1b7b4a5da7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/Unit/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/Unit/index.html @@ -1,2 +1,2 @@ -Unit (infer.Absint.AbstractDomain.Unit)

    Module AbstractDomain.Unit

    a trivial domain

    include Comparable with type t = unit
    include IStdlib.PrettyPrintable.PrintableType with type t = unit
    type t = unit
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Unit (infer.Absint.AbstractDomain.Unit)

    Module AbstractDomain.Unit

    a trivial domain

    include Comparable with type t = unit
    include IStdlib.PrettyPrintable.PrintableType with type t = unit
    type t = unit
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/index.html index 2476fe3b85c..f899562ce27 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/index.html @@ -1,5 +1,5 @@ -AbstractDomain (infer.Absint.AbstractDomain)

    Module Absint.AbstractDomain

    Abstract domains and domain combinators

    module Types : sig ... end
    module type Comparable = sig ... end
    module type Disjunct = sig ... end
    module type S = sig ... end
    include sig ... end
    type empty = |
    module Empty : S with type t = empty
    module Unit : S with type t = unit

    a trivial domain

    module type WithBottom = sig ... end

    A domain with an explicit bottom value

    module type WithTop = sig ... end

    A domain with an explicit top value

    module type WithBottomTop = sig ... end

    A domain with an explicit bottom and top values

    module BottomLifted (Domain : S) : sig ... end

    Create a domain with Bottom element from a pre-domain

    module BottomLiftedUtils : sig ... end
    module TopLifted (Domain : S) : sig ... end

    Create a domain with Top element from a pre-domain

    module TopLiftedUtils : sig ... end

    Create a domain with Bottom and Top elements from a pre-domain

    module Pair (Domain1 : S) (Domain2 : S) : S with type t = Domain1.t * Domain2.t

    Cartesian product of two domains.

    module PairWithBottom +AbstractDomain (infer.Absint.AbstractDomain)

    Module Absint.AbstractDomain

    Abstract domains and domain combinators

    module Types : sig ... end
    module type Comparable = sig ... end
    module type Disjunct = sig ... end
    module type S = sig ... end
    include sig ... end
    type empty = |
    module Empty : S with type t = empty
    module Unit : S with type t = unit

    a trivial domain

    module type WithBottom = sig ... end

    A domain with an explicit bottom value

    module type WithTop = sig ... end

    A domain with an explicit top value

    module type WithBottomTop = sig ... end

    A domain with an explicit bottom and top values

    module BottomLifted (Domain : S) : sig ... end

    Create a domain with Bottom element from a pre-domain

    module BottomLiftedUtils : sig ... end
    module TopLifted (Domain : S) : sig ... end

    Create a domain with Top element from a pre-domain

    module TopLiftedUtils : sig ... end

    Create a domain with Bottom and Top elements from a pre-domain

    module Pair (Domain1 : S) (Domain2 : S) : S with type t = Domain1.t * Domain2.t

    Cartesian product of two domains.

    module PairWithTop @@ -38,4 +38,4 @@ InvertedMapS with type key = Key.t and type value = ValueDomain.t

    Similar to InvertedMap but it guarantees that it has a canonical form. For example, both {a -> top_v} and empty represent the same abstract value top in InvertedMap, but in this implementation, top is always implemented as empty by not adding the top_v explicitly.

    module BooleanAnd : S with type t = bool

    Boolean domain ordered by p || ~q. Useful when you want a boolean that's true only when it's true in both conditional branches.

    module BooleanOr : WithBottom with type t = bool

    Boolean domain ordered by ~p || q. Useful when you want a boolean that's true only when it's true in one conditional branch.

    module type MaxCount = sig ... end
    module CountDomain (MaxCount : MaxCount) : sig ... end

    Domain keeping a non-negative count with a bounded maximum value. The count can be only incremented and decremented.

    module DownwardIntDomain (MaxCount : MaxCount) : sig ... end

    Domain keeping a non-negative count with a bounded maximum value. join is minimum and top is zero.

    \ No newline at end of file + sig ... end
    module BooleanAnd : S with type t = bool

    Boolean domain ordered by p || ~q. Useful when you want a boolean that's true only when it's true in both conditional branches.

    module BooleanOr : WithBottom with type t = bool

    Boolean domain ordered by ~p || q. Useful when you want a boolean that's true only when it's true in one conditional branch.

    module type MaxCount = sig ... end
    module CountDomain (MaxCount : MaxCount) : sig ... end

    Domain keeping a non-negative count with a bounded maximum value. The count can be only incremented and decremented.

    module DownwardIntDomain (MaxCount : MaxCount) : sig ... end

    Domain keeping a non-negative count with a bounded maximum value. join is minimum and top is zero.

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Comparable/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Comparable/index.html index 8e067008bfd..82c2e778bd8 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Comparable/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Comparable/index.html @@ -1,2 +1,2 @@ -Comparable (infer.Absint.AbstractDomain.Comparable)

    Module type AbstractDomain.Comparable

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    \ No newline at end of file +Comparable (infer.Absint.AbstractDomain.Comparable)

    Module type AbstractDomain.Comparable

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Disjunct/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Disjunct/index.html index c2c23fb2dfa..ea3458010a5 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Disjunct/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-Disjunct/index.html @@ -1,2 +1,2 @@ -Disjunct (infer.Absint.AbstractDomain.Disjunct)

    Module type AbstractDomain.Disjunct

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +Disjunct (infer.Absint.AbstractDomain.Disjunct)

    Module type AbstractDomain.Disjunct

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-FiniteSetS/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-FiniteSetS/index.html index cfdeea51464..24d1412af87 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-FiniteSetS/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-FiniteSetS/index.html @@ -1,2 +1,2 @@ -FiniteSetS (infer.Absint.AbstractDomain.FiniteSetS)

    Module type AbstractDomain.FiniteSetS

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +FiniteSetS (infer.Absint.AbstractDomain.FiniteSetS)

    Module type AbstractDomain.FiniteSetS

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedMapS/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedMapS/index.html index cc9739fb261..0c5c633e63e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedMapS/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedMapS/index.html @@ -1,8 +1,8 @@ -InvertedMapS (infer.Absint.AbstractDomain.InvertedMapS)

    Module type AbstractDomain.InvertedMapS

    include IStdlib.PrettyPrintable.PPMonoMap
    include IStdlib.PrettyPrintable.MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +InvertedMapS (infer.Absint.AbstractDomain.InvertedMapS)

    Module type AbstractDomain.InvertedMapS

    include IStdlib.PrettyPrintable.PPMonoMap
    include IStdlib.PrettyPrintable.MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedSetS/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedSetS/index.html index 134d4652597..bc5606e40c9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedSetS/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-InvertedSetS/index.html @@ -1,2 +1,2 @@ -InvertedSetS (infer.Absint.AbstractDomain.InvertedSetS)

    Module type AbstractDomain.InvertedSetS

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +InvertedSetS (infer.Absint.AbstractDomain.InvertedSetS)

    Module type AbstractDomain.InvertedSetS

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include WithTop with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MapS/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MapS/index.html index df2a8dd5140..92a50a2c9e9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MapS/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MapS/index.html @@ -1,8 +1,8 @@ -MapS (infer.Absint.AbstractDomain.MapS)

    Module type AbstractDomain.MapS

    include IStdlib.PrettyPrintable.PPMonoMap
    include IStdlib.PrettyPrintable.MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +MapS (infer.Absint.AbstractDomain.MapS)

    Module type AbstractDomain.MapS

    include IStdlib.PrettyPrintable.PPMonoMap
    include IStdlib.PrettyPrintable.MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include WithBottom with type t := t
    include S with type t := t
    include Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MaxCount/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MaxCount/index.html index d36c9270979..27ae1a8cc91 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MaxCount/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-MaxCount/index.html @@ -1,2 +1,2 @@ -MaxCount (infer.Absint.AbstractDomain.MaxCount)

    Module type AbstractDomain.MaxCount

    val max : int

    must be positive

    \ No newline at end of file +MaxCount (infer.Absint.AbstractDomain.MaxCount)

    Module type AbstractDomain.MaxCount

    val max : int

    must be positive

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-S/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-S/index.html index d663a03e272..e24b11e3372 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.Absint.AbstractDomain.S)

    Module type AbstractDomain.S

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +S (infer.Absint.AbstractDomain.S)

    Module type AbstractDomain.S

    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottom/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottom/index.html index 7de7b09efb1..eb1f4845136 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottom/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottom/index.html @@ -1,2 +1,2 @@ -WithBottom (infer.Absint.AbstractDomain.WithBottom)

    Module type AbstractDomain.WithBottom

    A domain with an explicit bottom value

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +WithBottom (infer.Absint.AbstractDomain.WithBottom)

    Module type AbstractDomain.WithBottom

    A domain with an explicit bottom value

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottomTop/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottomTop/index.html index 3bdd9f714f0..f17d4557c71 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottomTop/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithBottomTop/index.html @@ -1,2 +1,2 @@ -WithBottomTop (infer.Absint.AbstractDomain.WithBottomTop)

    Module type AbstractDomain.WithBottomTop

    A domain with an explicit bottom and top values

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +WithBottomTop (infer.Absint.AbstractDomain.WithBottomTop)

    Module type AbstractDomain.WithBottomTop

    A domain with an explicit bottom and top values

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithTop/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithTop/index.html index 8d9518931b9..4baf178a8ec 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithTop/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/module-type-WithTop/index.html @@ -1,2 +1,2 @@ -WithTop (infer.Absint.AbstractDomain.WithTop)

    Module type AbstractDomain.WithTop

    A domain with an explicit top value

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +WithTop (infer.Absint.AbstractDomain.WithTop)

    Module type AbstractDomain.WithTop

    A domain with an explicit top value

    include S
    include Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/DisjunctiveMetadata/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/DisjunctiveMetadata/index.html index 848d88b8fc8..ceb8064c75a 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/DisjunctiveMetadata/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/DisjunctiveMetadata/index.html @@ -1,2 +1,2 @@ -DisjunctiveMetadata (infer.Absint.AbstractInterpreter.DisjunctiveMetadata)

    Module AbstractInterpreter.DisjunctiveMetadata

    used internally to compute various metrics related to MakeDisjunctive analyses; this can be queried with get_cfg_metadata below at the end of the analysis of each procedure

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +DisjunctiveMetadata (infer.Absint.AbstractInterpreter.DisjunctiveMetadata)

    Module AbstractInterpreter.DisjunctiveMetadata

    used internally to compute various metrics related to MakeDisjunctive analyses; this can be queried with get_cfg_metadata below at the end of the analysis of each procedure

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdMap/index.html index ddceebde599..ea90b1e0c67 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdSet/index.html index e3aa9cc6a99..2498b4abf4c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/index.html index 35895113615..42160597f59 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/index.html index a9550402533..8b0f79e2868 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/Domain/index.html index fd78b2a7d77..503dcbacf5e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/index.html index 9a10d5fb976..4460cc5f329 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/argument-1-T/index.html @@ -1,8 +1,8 @@ -T (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T)

    Parameter MakeBackwardRPO.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +T (infer.Absint.AbstractInterpreter.MakeBackwardRPO.T)

    Parameter MakeBackwardRPO.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/index.html index 2430ca22fa5..d87a2f8915f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardRPO/index.html @@ -1,22 +1,22 @@ -MakeBackwardRPO (infer.Absint.AbstractInterpreter.MakeBackwardRPO)

    Module AbstractInterpreter.MakeBackwardRPO

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +MakeBackwardRPO (infer.Absint.AbstractInterpreter.MakeBackwardRPO)

    Module AbstractInterpreter.MakeBackwardRPO

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdMap/index.html index bec9d4749b1..7a012a05059 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdSet/index.html index a70a0a3a9fe..e5d658819a7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/index.html index 4a6748f370d..3b6cdb65b19 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/index.html index 28d2bef1edd..0d9817e0581 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/Domain/index.html index da1c90cf57e..ff4d7df3ded 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/index.html index 98ad641024d..11de7e033a3 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/argument-1-T/index.html @@ -1,8 +1,8 @@ -T (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T)

    Parameter MakeBackwardWTO.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +T (infer.Absint.AbstractInterpreter.MakeBackwardWTO.T)

    Parameter MakeBackwardWTO.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/index.html index 858541cb87c..b745bd1dda0 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeBackwardWTO/index.html @@ -1,22 +1,22 @@ -MakeBackwardWTO (infer.Absint.AbstractInterpreter.MakeBackwardWTO)

    Module AbstractInterpreter.MakeBackwardWTO

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +MakeBackwardWTO (infer.Absint.AbstractInterpreter.MakeBackwardWTO)

    Module AbstractInterpreter.MakeBackwardWTO

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/Domain/index.html index 9376ef98dde..d58a27d62e6 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/Domain/index.html @@ -1,4 +1,4 @@ -Domain (infer.Absint.AbstractInterpreter.MakeDisjunctive.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable +Domain (infer.Absint.AbstractInterpreter.MakeDisjunctive.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable with type t = T.DisjDomain.t list * T.NonDisjDomain.t
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file + with type t = T.DisjDomain.t list * T.NonDisjDomain.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/index.html index a162bfb369d..f4c4629591b 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/TransferFunctions/index.html @@ -1,5 +1,5 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.MakeDisjunctive.TransferFunctions)

    Module MakeDisjunctive.TransferFunctions

    include TransferFunctions.S +TransferFunctions (infer.Absint.AbstractInterpreter.MakeDisjunctive.TransferFunctions)

    Module MakeDisjunctive.TransferFunctions

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdMap/index.html index ad044534ec1..cb2f07d0335 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdSet/index.html index cc7398a4216..4a529488b44 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/index.html index d643bfa5d0e..08652b1b44f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/index.html index 085f04eae56..d0fae4ed1b7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/DisjDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/DisjDomain/index.html index c306e7e0ab7..ada22aee242 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/DisjDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/DisjDomain/index.html @@ -1,2 +1,2 @@ -DisjDomain (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.DisjDomain)

    Module T.DisjDomain

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +DisjDomain (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.DisjDomain)

    Module T.DisjDomain

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/NonDisjDomain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/NonDisjDomain/index.html index 49960d4efc8..9fc6b658a76 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/NonDisjDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/NonDisjDomain/index.html @@ -1,2 +1,2 @@ -NonDisjDomain (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.NonDisjDomain)

    Module T.NonDisjDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +NonDisjDomain (infer.Absint.AbstractInterpreter.MakeDisjunctive.T.NonDisjDomain)

    Module T.NonDisjDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/index.html index 835a9243528..a7f2114b1cd 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-1-T/index.html @@ -1,5 +1,5 @@ -T (infer.Absint.AbstractInterpreter.MakeDisjunctive.T)

    Parameter MakeDisjunctive.T

    module CFG : ProcCfg.S
    type analysis_data
    val exec_instr : +T (infer.Absint.AbstractInterpreter.MakeDisjunctive.T)

    Parameter MakeDisjunctive.T

    module CFG : ProcCfg.S
    type analysis_data
    val exec_instr : (DisjDomain.t * NonDisjDomain.t) -> analysis_data -> CFG.Node.t -> @@ -7,4 +7,8 @@ DisjDomain.t list * NonDisjDomain.t
    val remember_dropped_disjuncts : DisjDomain.t list -> NonDisjDomain.t -> - NonDisjDomain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + NonDisjDomain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    val pp_disjunct : + IStdlib.Pp.print_kind -> + Stdlib.Format.formatter -> + DisjDomain.t -> + unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-2-DConfig/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-2-DConfig/index.html index 36ed4e06187..0fa7af01999 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-2-DConfig/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/argument-2-DConfig/index.html @@ -1,2 +1,2 @@ -DConfig (infer.Absint.AbstractInterpreter.MakeDisjunctive.DConfig)

    Parameter MakeDisjunctive.DConfig

    \ No newline at end of file +DConfig (infer.Absint.AbstractInterpreter.MakeDisjunctive.DConfig)

    Parameter MakeDisjunctive.DConfig

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/index.html index 7a6eba89c80..62057da9c13 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeDisjunctive/index.html @@ -1,5 +1,5 @@ -MakeDisjunctive (infer.Absint.AbstractInterpreter.MakeDisjunctive)

    Module AbstractInterpreter.MakeDisjunctive

    In the disjunctive interpreter, the domain is a set of abstract states representing a disjunction between these states. The transfer functions are executed on each state in the disjunct independently. The join on the disjunctive state is governed by the policy described in DConfig.

    Parameters

    Signature

    include S +MakeDisjunctive (infer.Absint.AbstractInterpreter.MakeDisjunctive)

    Module AbstractInterpreter.MakeDisjunctive

    In the disjunctive interpreter, the domain is a set of abstract states representing a disjunction between these states. The transfer functions are executed on each state in the disjunct independently. The join on the disjunctive state is governed by the policy described in DConfig.

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -35,4 +35,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    val get_cfg_metadata : unit -> DisjunctiveMetadata.t

    return CFG-wide metadata about the analysis

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    val get_cfg_metadata : unit -> DisjunctiveMetadata.t

    return CFG-wide metadata about the analysis

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index dfe7ae11efc..7a5e6340a9e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index d5e97951e08..ddce0ef929f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/index.html index 23f0aa2c69a..438c400d287 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/index.html index 0f17e171161..d2f085db96d 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/Domain/index.html index 1de3f1c092a..b3e343086f2 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/index.html index 65bff2d85cb..4dc350fa6d1 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions)

    Parameter MakeRPO.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.AbstractInterpreter.MakeRPO.TransferFunctions)

    Parameter MakeRPO.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/index.html index 1aa835c2011..fc04b506014 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeRPO/index.html @@ -1,22 +1,22 @@ -MakeRPO (infer.Absint.AbstractInterpreter.MakeRPO)

    Module AbstractInterpreter.MakeRPO

    create an intraprocedural abstract interpreter from transfer functions using the reverse post-order scheduler

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +MakeRPO (infer.Absint.AbstractInterpreter.MakeRPO)

    Module AbstractInterpreter.MakeRPO

    create an intraprocedural abstract interpreter from transfer functions using the reverse post-order scheduler

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index e95d6554412..fdb0907c7c0 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index 3e4c358c9dc..ee506b0dbee 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/index.html index de88faa2d97..b3e06907da4 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/index.html index bf7ce1ef044..664faa39208 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/Domain/index.html index a916da94224..0b68b614438 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/index.html index 3e8816282aa..72a041eb83d 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions)

    Parameter MakeWTO.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.AbstractInterpreter.MakeWTO.TransferFunctions)

    Parameter MakeWTO.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/index.html index d8bbd00fd57..af4beaff09a 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/MakeWTO/index.html @@ -1,22 +1,22 @@ -MakeWTO (infer.Absint.AbstractInterpreter.MakeWTO)

    Module AbstractInterpreter.MakeWTO

    create an intraprocedural abstract interpreter from transfer functions using Bourdoncle's strongly connected component weak topological order

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +MakeWTO (infer.Absint.AbstractInterpreter.MakeWTO)

    Module AbstractInterpreter.MakeWTO

    create an intraprocedural abstract interpreter from transfer functions using Bourdoncle's strongly connected component weak topological order

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/State/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/State/index.html index ea030a22856..caf2afe6104 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/State/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/State/index.html @@ -1,2 +1,2 @@ -State (infer.Absint.AbstractInterpreter.State)

    Module AbstractInterpreter.State

    type 'a t = {
    1. pre : 'a;
    2. post : 'a;
    3. visit_count : VisitCount.t;
    }
    \ No newline at end of file +State (infer.Absint.AbstractInterpreter.State)

    Module AbstractInterpreter.State

    type 'a t = {
    1. pre : 'a;
    2. post : 'a;
    3. visit_count : VisitCount.t;
    }
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/VisitCount/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/VisitCount/index.html index 4b62e70ebf4..0243eb427f7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/VisitCount/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/VisitCount/index.html @@ -1,2 +1,2 @@ -VisitCount (infer.Absint.AbstractInterpreter.VisitCount)

    Module AbstractInterpreter.VisitCount

    type t
    \ No newline at end of file +VisitCount (infer.Absint.AbstractInterpreter.VisitCount)

    Module AbstractInterpreter.VisitCount

    type t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/index.html index dded5b22455..1f2fb2e08f7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/index.html @@ -1,9 +1,9 @@ -AbstractInterpreter (infer.Absint.AbstractInterpreter)

    Module Absint.AbstractInterpreter

    module F = Stdlib.Format
    module VisitCount : sig ... end
    module State : sig ... end
    module type S = sig ... end

    type of an intraprocedural abstract interpreter

    module type Make = +AbstractInterpreter (infer.Absint.AbstractInterpreter)

    Module Absint.AbstractInterpreter

    module F = Stdlib.Format
    module VisitCount : sig ... end
    module State : sig ... end
    module type S = sig ... end

    type of an intraprocedural abstract interpreter

    module MakeRPO : Make

    create an intraprocedural abstract interpreter from transfer functions using the reverse post-order scheduler

    module MakeWTO : Make

    create an intraprocedural abstract interpreter from transfer functions using Bourdoncle's strongly connected component weak topological order

    module DisjunctiveMetadata : sig ... end

    used internally to compute various metrics related to MakeDisjunctive analyses; this can be queried with get_cfg_metadata below at the end of the analysis of each procedure

    In the disjunctive interpreter, the domain is a set of abstract states representing a disjunction between these states. The transfer functions are executed on each state in the disjunct independently. The join on the disjunctive state is governed by the policy described in DConfig.

    module type TransferFunctions = sig ... end
    module type MakeExceptional = functor (T : TransferFunctions) -> - S with module TransferFunctions = T
    \ No newline at end of file + S with module TransferFunctions = T
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index a71654cb502..86ad1cca201 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index 9f5d3a5cba0..530ec311967 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/index.html index 2734597a914..04553c32044 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/index.html index cfc533efdfc..7fcc8d68ba8 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.Make.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/Domain/index.html index 9ef4a307519..41158c57783 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.Make.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.Make.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/index.html index ad99fac78ec..697f6b5837f 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.Make.TransferFunctions)

    Parameter Make.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.AbstractInterpreter.Make.TransferFunctions)

    Parameter Make.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/index.html index f56cc45e9d4..ca679739591 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-Make/index.html @@ -1,22 +1,22 @@ -Make (infer.Absint.AbstractInterpreter.Make)

    Module type AbstractInterpreter.Make

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +Make (infer.Absint.AbstractInterpreter.Make)

    Module type AbstractInterpreter.Make

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdMap/index.html index a47da6b94f1..25dc6b16ef7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdSet/index.html index ef83e2c4e93..7c39b26d4f4 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/index.html index e588e143afb..f85745ce3b9 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/index.html index abb3501f5f6..91866640955 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.MakeExceptional.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/Domain/index.html index f4ec81e1b13..a944605bfa4 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.MakeExceptional.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.MakeExceptional.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/index.html index b2c24f2db99..7d3d11ac5d2 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/argument-1-T/index.html @@ -1,8 +1,8 @@ -T (infer.Absint.AbstractInterpreter.MakeExceptional.T)

    Parameter MakeExceptional.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +T (infer.Absint.AbstractInterpreter.MakeExceptional.T)

    Parameter MakeExceptional.T

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/index.html index 0a36a976b26..478651b49e7 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-MakeExceptional/index.html @@ -1,22 +1,22 @@ -MakeExceptional (infer.Absint.AbstractInterpreter.MakeExceptional)

    Module type AbstractInterpreter.MakeExceptional

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +MakeExceptional (infer.Absint.AbstractInterpreter.MakeExceptional)

    Module type AbstractInterpreter.MakeExceptional

    Parameters

    Signature

    module TransferFunctions = T
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdMap/index.html index 5f1f5a3dbcd..76df5aaba94 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdSet/index.html index 7d10a080a17..59800b71200 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html index 13ddd6ed4b1..8e53c34b8dd 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html index 3e5b3eba622..6192d469532 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.S.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html index 3f3f19eba01..455dc04ae1e 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.S.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.S.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/index.html index 4c1da2f817d..a75621a6299 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.S.TransferFunctions)

    Module S.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.AbstractInterpreter.S.TransferFunctions)

    Module S.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/index.html index ff6afab8a3d..594ffb21a99 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-S/index.html @@ -1,22 +1,22 @@ -S (infer.Absint.AbstractInterpreter.S)

    Module type AbstractInterpreter.S

    type of an intraprocedural abstract interpreter

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: +S (infer.Absint.AbstractInterpreter.S)

    Module type AbstractInterpreter.S

    type of an intraprocedural abstract interpreter

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -27,4 +27,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdMap/index.html index 7a64e1f18bb..3012aa7b265 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdSet/index.html index a13c2a2036f..26782759161 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/index.html index acc17e033d7..9510560190c 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.AbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/index.html index b58e3cab7fb..afe12a6a597 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.AbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.AbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/Domain/index.html index 53f64936360..96b947ac548 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.AbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.AbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/index.html index af5e6b66f70..a79917c32ee 100644 --- a/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractInterpreter/module-type-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.AbstractInterpreter.TransferFunctions)

    Module type AbstractInterpreter.TransferFunctions

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.AbstractInterpreter.TransferFunctions)

    Module type AbstractInterpreter.TransferFunctions

    include TransferFunctions.SIL
    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/Absint/AccessPath/Abs/index.html b/website/static/odoc/next/infer/Absint/AccessPath/Abs/index.html index a4586fbbfd7..7b7f4576225 100644 --- a/website/static/odoc/next/infer/Absint/AccessPath/Abs/index.html +++ b/website/static/odoc/next/infer/Absint/AccessPath/Abs/index.html @@ -1,2 +1,2 @@ -Abs (infer.Absint.AccessPath.Abs)

    Module AccessPath.Abs

    type raw = t
    type t =
    1. | Abstracted of raw
      (*

      abstraction of heap reachable from an access path, e.g. x.f*

      *)
    2. | Exact of raw
      (*

      precise representation of an access path, e.g. x.f.g

      *)
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val to_footprint : int -> t -> t

    replace the base var with a footprint variable rooted at formal index formal_index

    val get_footprint_index_base : base -> int option

    return the formal index associated with the base of this access path if there is one, or None otherwise

    val with_base : base -> t -> t

    swap base of existing access path for base_var (e.g., `with_base_bvar x y.f.g` produces `x.f.g`

    val extract : t -> raw

    extract a raw access path from its wrapper

    val is_exact : t -> bool

    return true if t is an exact representation of an access path, false if it's an abstraction

    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Abs (infer.Absint.AccessPath.Abs)

    Module AccessPath.Abs

    type raw = t
    type t =
    1. | Abstracted of raw
      (*

      abstraction of heap reachable from an access path, e.g. x.f*

      *)
    2. | Exact of raw
      (*

      precise representation of an access path, e.g. x.f.g

      *)
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val to_footprint : int -> t -> t

    replace the base var with a footprint variable rooted at formal index formal_index

    val get_footprint_index_base : base -> int option

    return the formal index associated with the base of this access path if there is one, or None otherwise

    val with_base : base -> t -> t

    swap base of existing access path for base_var (e.g., `with_base_bvar x y.f.g` produces `x.f.g`

    val extract : t -> raw

    extract a raw access path from its wrapper

    val is_exact : t -> bool

    return true if t is an exact representation of an access path, false if it's an abstraction

    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AccessPath/BaseMap/index.html b/website/static/odoc/next/infer/Absint/AccessPath/BaseMap/index.html index c2e888b79d0..bee961e2902 100644 --- a/website/static/odoc/next/infer/Absint/AccessPath/BaseMap/index.html +++ b/website/static/odoc/next/infer/Absint/AccessPath/BaseMap/index.html @@ -1,12 +1,12 @@ -BaseMap (infer.Absint.AccessPath.BaseMap)

    Module AccessPath.BaseMap

    include IStdlib.IStd.Caml.Map.S with type key = base
    type key = base
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +BaseMap (infer.Absint.AccessPath.BaseMap)

    Module AccessPath.BaseMap

    include IStdlib.IStd.Caml.Map.S with type key = base
    type key = base
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AccessPath/index.html b/website/static/odoc/next/infer/Absint/AccessPath/index.html index 122802947a9..53389c59a2d 100644 --- a/website/static/odoc/next/infer/Absint/AccessPath/index.html +++ b/website/static/odoc/next/infer/Absint/AccessPath/index.html @@ -1,2 +1,2 @@ -AccessPath (infer.Absint.AccessPath)

    Module Absint.AccessPath

    Module for naming heap locations via the path used to access them (e.g., x.f.g, ya.b)

    type base = IR.Var.t * IR.Typ.t
    val compare_base : base -> base -> int
    type access =
    1. | ArrayAccess of IR.Typ.t * t list
      (*

      array element type with list of access paths in index

      *)
    2. | FieldAccess of IR.Fieldname.t
      (*

      field name

      *)
    and t = base * access list

    root var, and a list of accesses. closest to the root var is first that is, x.f.g is represented as (x, f; g)

    val compare_access : access -> access -> int
    val compare : t -> t -> int
    val equal_access : access -> access -> bool
    val equal : t -> t -> bool
    val get_typ : t -> IR.Tenv.t -> IR.Typ.t option

    get the typ of the last access in the list of accesses if the list is non-empty, or the base if the list is empty. that is, for x.f.g, return typ(g), and for x, return typ(x)

    val base_of_pvar : IR.Pvar.t -> IR.Typ.t -> base

    create a base from a pvar

    val of_pvar : IR.Pvar.t -> IR.Typ.t -> t

    create an access path from a pvar

    val of_id : IR.Ident.t -> IR.Typ.t -> t

    create an access path from an ident

    val of_var : IR.Var.t -> IR.Typ.t -> t

    create an access path from a var

    val append : t -> access list -> t

    append new accesses to an existing access path; e.g., `append_access x.f g, h` produces `x.f.g.h`

    val replace_prefix : prefix:t -> replace_with:t -> t -> t option
    val equal_base : base -> base -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val pp_base : Stdlib.Format.formatter -> base -> unit
    val pp_access : Stdlib.Format.formatter -> access -> unit
    val pp_access_list : Stdlib.Format.formatter -> access list -> unit
    module Abs : sig ... end
    \ No newline at end of file +AccessPath (infer.Absint.AccessPath)

    Module Absint.AccessPath

    Module for naming heap locations via the path used to access them (e.g., x.f.g, ya.b)

    type base = IR.Var.t * IR.Typ.t
    val compare_base : base -> base -> int
    type access =
    1. | ArrayAccess of IR.Typ.t * t list
      (*

      array element type with list of access paths in index

      *)
    2. | FieldAccess of IR.Fieldname.t
      (*

      field name

      *)
    and t = base * access list

    root var, and a list of accesses. closest to the root var is first that is, x.f.g is represented as (x, f; g)

    val compare_access : access -> access -> int
    val compare : t -> t -> int
    val equal_access : access -> access -> bool
    val equal : t -> t -> bool
    val get_typ : t -> IR.Tenv.t -> IR.Typ.t option

    get the typ of the last access in the list of accesses if the list is non-empty, or the base if the list is empty. that is, for x.f.g, return typ(g), and for x, return typ(x)

    val base_of_pvar : IR.Pvar.t -> IR.Typ.t -> base

    create a base from a pvar

    val of_pvar : IR.Pvar.t -> IR.Typ.t -> t

    create an access path from a pvar

    val of_id : IR.Ident.t -> IR.Typ.t -> t

    create an access path from an ident

    val of_var : IR.Var.t -> IR.Typ.t -> t

    create an access path from a var

    val append : t -> access list -> t

    append new accesses to an existing access path; e.g., `append_access x.f g, h` produces `x.f.g.h`

    val replace_prefix : prefix:t -> replace_with:t -> t -> t option
    val equal_base : base -> base -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val pp_base : Stdlib.Format.formatter -> base -> unit
    val pp_access : Stdlib.Format.formatter -> access -> unit
    val pp_access_list : Stdlib.Format.formatter -> access list -> unit
    module Abs : sig ... end
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/DefaultConfig/index.html b/website/static/odoc/next/infer/Absint/AccessTree/DefaultConfig/index.html index f3405408186..3d817631f17 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/DefaultConfig/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/DefaultConfig/index.html @@ -1,2 +1,2 @@ -DefaultConfig (infer.Absint.AccessTree.DefaultConfig)

    Module AccessTree.DefaultConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +DefaultConfig (infer.Absint.AccessTree.DefaultConfig)

    Module AccessTree.DefaultConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/Make/AccessMap/index.html b/website/static/odoc/next/infer/Absint/AccessTree/Make/AccessMap/index.html index bedb8c09eae..8c176e46a26 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/Make/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/Make/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.AccessTree.Make.AccessMap)

    Module Make.AccessMap

    include IStdlib.IStd.Caml.Map.S with type key = Absint.AccessPath.access
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.AccessTree.Make.AccessMap)

    Module Make.AccessMap

    include IStdlib.IStd.Caml.Map.S with type key = Absint.AccessPath.access
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-1-TraceDomain/index.html b/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-1-TraceDomain/index.html index 34c497537e8..72af9ecab2d 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-1-TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-1-TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.AccessTree.Make.TraceDomain)

    Parameter Make.TraceDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +TraceDomain (infer.Absint.AccessTree.Make.TraceDomain)

    Parameter Make.TraceDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-2-Config/index.html b/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-2-Config/index.html index 0efc5491807..25efe526824 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-2-Config/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/Make/argument-2-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.Absint.AccessTree.Make.Config)

    Parameter Make.Config

    val max_depth : int
    val max_width : int
    \ No newline at end of file +Config (infer.Absint.AccessTree.Make.Config)

    Parameter Make.Config

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/Make/index.html b/website/static/odoc/next/infer/Absint/AccessTree/Make/index.html index 2554dfc9e28..7704dc9bda8 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/Make/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/Make/index.html @@ -1,12 +1,12 @@ -Make (infer.Absint.AccessTree.Make)

    Module AccessTree.Make

    Parameters

    module Config : Config

    Signature

    module TraceDomain = TraceDomain
    module AccessMap : +Make (infer.Absint.AccessTree.Make)

    Module AccessTree.Make

    Parameters

    module Config : Config

    Signature

    module TraceDomain = TraceDomain
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
      (*

      map from access -> nodes. a leaf is encoded as an empty map

      *)
    2. | Star
      (*

      special leaf for starred access paths

      *)

    map from base var -> access subtree. Here's how to represent a few different kinds of trace * access path associations:

    (x, T)               := { x |-> (T, Subtree {}) }
     (x.f, T)             := { x |-> (empty, Subtree { f |-> (T, Subtree {}) }) }
     (x*, T)              := { x |-> (T, Star) }
     (x.f*, T)            := { x |-> (empty, Subtree { f |-> (T, Star) }) }
     (x, T1), (y, T2)     := { x |-> (T1, Subtree {}), y |-> (T2, Subtree {}) }
     (x.f, T1), (x.g, T2) := { x |-> (empty, Subtree { f |-> (T1, Subtree {}),
    -                                                  g |-> (T2, Subtree {}) }) }
    include AbstractDomain.WithBottom with type t = node BaseMap.t
    include AbstractDomain.S with type t = node BaseMap.t
    include AbstractDomain.Comparable with type t = node BaseMap.t
    include IStdlib.PrettyPrintable.PrintableType with type t = node BaseMap.t
    type t = node BaseMap.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : + g |-> (T2, Subtree {}) }) }
    include AbstractDomain.WithBottom with type t = node BaseMap.t
    include AbstractDomain.S with type t = node BaseMap.t
    include AbstractDomain.Comparable with type t = node BaseMap.t
    include IStdlib.PrettyPrintable.PrintableType with type t = node BaseMap.t
    type t = node BaseMap.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -14,4 +14,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/AccessMap/index.html b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/AccessMap/index.html index da63376e0e1..e00207a2a86 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.AccessTree.PathSet.AccessMap)

    Module PathSet.AccessMap

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.AccessTree.PathSet.AccessMap)

    Module PathSet.AccessMap

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/TraceDomain/index.html index 9466e4a1128..01076399a3c 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.AccessTree.PathSet.TraceDomain)

    Module PathSet.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Absint.AccessTree.PathSet.TraceDomain)

    Module PathSet.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/argument-1-Config/index.html b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/argument-1-Config/index.html index 8933ad922f7..a111be2c491 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/argument-1-Config/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/argument-1-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.Absint.AccessTree.PathSet.Config)

    Parameter PathSet.Config

    val max_depth : int
    val max_width : int
    \ No newline at end of file +Config (infer.Absint.AccessTree.PathSet.Config)

    Parameter PathSet.Config

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/index.html b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/index.html index 0492d238960..1206431f784 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/PathSet/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/PathSet/index.html @@ -1,5 +1,5 @@ -PathSet (infer.Absint.AccessTree.PathSet)

    Module AccessTree.PathSet

    Concise representation of a set of access paths

    Parameters

    module Config : Config

    Signature

    include sig ... end
    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree = Make(AbstractDomain.BooleanOr)(Config).tree =
    1. | Subtree of node AccessMap.t
      (*

      map from access -> nodes. a leaf is encoded as an empty map

      *)
    2. | Star
      (*

      special leaf for starred access paths

      *)
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +PathSet (infer.Absint.AccessTree.PathSet)

    Module AccessTree.PathSet

    Concise representation of a set of access paths

    Parameters

    module Config : Config

    Signature

    include sig ... end
    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree = Make(AbstractDomain.BooleanOr)(Config).tree =
    1. | Subtree of node AccessMap.t
      (*

      map from access -> nodes. a leaf is encoded as an empty map

      *)
    2. | Star
      (*

      special leaf for starred access paths

      *)
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/index.html b/website/static/odoc/next/infer/Absint/AccessTree/index.html index 080177270c6..c958ddedd93 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/index.html @@ -1,5 +1,5 @@ -AccessTree (infer.Absint.AccessTree)

    Module Absint.AccessTree

    module type S = sig ... end

    tree of (trace, access path) associations organized by structure of access paths

    module type Config = sig ... end
    module Make +AccessTree (infer.Absint.AccessTree)

    Module Absint.AccessTree

    module type S = sig ... end

    tree of (trace, access path) associations organized by structure of access paths

    module type Config = sig ... end
    module PathSet (Config : Config) : sig ... end

    Concise representation of a set of access paths

    \ No newline at end of file + S with module TraceDomain = TraceDomain
    module PathSet (Config : Config) : sig ... end

    Concise representation of a set of access paths

    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/module-type-Config/index.html b/website/static/odoc/next/infer/Absint/AccessTree/module-type-Config/index.html index 74069883852..9084244f64f 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/module-type-Config/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/module-type-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.Absint.AccessTree.Config)

    Module type AccessTree.Config

    val max_depth : int
    val max_width : int
    \ No newline at end of file +Config (infer.Absint.AccessTree.Config)

    Module type AccessTree.Config

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/AccessMap/index.html b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/AccessMap/index.html index 83044d874a3..c55b3e724ba 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.AccessTree.S.AccessMap)

    Module S.AccessMap

    include IStdlib.IStd.Caml.Map.S with type key = Absint.AccessPath.access
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.AccessTree.S.AccessMap)

    Module S.AccessMap

    include IStdlib.IStd.Caml.Map.S with type key = Absint.AccessPath.access
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/TraceDomain/index.html index 55a7c2cba2d..33ae8bcdc7b 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.AccessTree.S.TraceDomain)

    Module S.TraceDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +TraceDomain (infer.Absint.AccessTree.S.TraceDomain)

    Module S.TraceDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/index.html b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/index.html index 5655c8d2795..68b39419111 100644 --- a/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/AccessTree/module-type-S/index.html @@ -1,12 +1,12 @@ -S (infer.Absint.AccessTree.S)

    Module type AccessTree.S

    tree of (trace, access path) associations organized by structure of access paths

    module AccessMap : +S (infer.Absint.AccessTree.S)

    Module type AccessTree.S

    tree of (trace, access path) associations organized by structure of access paths

    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
      (*

      map from access -> nodes. a leaf is encoded as an empty map

      *)
    2. | Star
      (*

      special leaf for starred access paths

      *)

    map from base var -> access subtree. Here's how to represent a few different kinds of trace * access path associations:

    (x, T)               := { x |-> (T, Subtree {}) }
     (x.f, T)             := { x |-> (empty, Subtree { f |-> (T, Subtree {}) }) }
     (x*, T)              := { x |-> (T, Star) }
     (x.f*, T)            := { x |-> (empty, Subtree { f |-> (T, Star) }) }
     (x, T1), (y, T2)     := { x |-> (T1, Subtree {}), y |-> (T2, Subtree {}) }
     (x.f, T1), (x.g, T2) := { x |-> (empty, Subtree { f |-> (T1, Subtree {}),
    -                                                  g |-> (T2, Subtree {}) }) }
    include AbstractDomain.WithBottom with type t = node BaseMap.t
    include AbstractDomain.S with type t = node BaseMap.t
    include AbstractDomain.Comparable with type t = node BaseMap.t
    include IStdlib.PrettyPrintable.PrintableType with type t = node BaseMap.t
    type t = node BaseMap.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : + g |-> (T2, Subtree {}) }) }
    include AbstractDomain.WithBottom with type t = node BaseMap.t
    include AbstractDomain.S with type t = node BaseMap.t
    include AbstractDomain.Comparable with type t = node BaseMap.t
    include IStdlib.PrettyPrintable.PrintableType with type t = node BaseMap.t
    type t = node BaseMap.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -14,4 +14,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int

    number of traces in the tallest branch of the tree

    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Absint/AnalysisCallbacks/index.html b/website/static/odoc/next/infer/Absint/AnalysisCallbacks/index.html index 2689934f567..435ce4e1a24 100644 --- a/website/static/odoc/next/infer/Absint/AnalysisCallbacks/index.html +++ b/website/static/odoc/next/infer/Absint/AnalysisCallbacks/index.html @@ -1,15 +1,15 @@ -AnalysisCallbacks (infer.Absint.AnalysisCallbacks)

    Module Absint.AnalysisCallbacks

    Analysis API

    val html_debug_new_node_session : - ?kind:[ `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> - pp_name:(Stdlib.Format.formatter -> unit) -> +AnalysisCallbacks (infer.Absint.AnalysisCallbacks)

    Module Absint.AnalysisCallbacks

    Analysis API

    val html_debug_new_node_session : + ?kind:[ `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> + pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> - f:(unit -> 'a) -> - 'a

    set to NodePrinter.with_session

    Callbacks management

    type callbacks = {
    1. html_debug_new_node_session_f : 'a. ?kind: + f:(unit -> 'a) -> + 'a

    set to NodePrinter.with_session

    Callbacks management

    type callbacks = {
    1. html_debug_new_node_session_f : 'a. ?kind: [ `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> - pp_name:(Stdlib.Format.formatter -> unit) -> + pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> - f:(unit -> 'a) -> - 'a;
    }

    These callbacks are used to break the dependency cycles between some modules. Specifically, we put here functions needed for the analysis that depend on modules higher up the dependency graph than this library but whose type does not.

    val set_callbacks : callbacks -> unit

    make sure this is called before starting any actual analysis

    \ No newline at end of file + f:(unit -> 'a) -> + 'a;
    }

    These callbacks are used to break the dependency cycles between some modules. Specifically, we put here functions needed for the analysis that depend on modules higher up the dependency graph than this library but whose type does not.

    val set_callbacks : callbacks -> unit

    make sure this is called before starting any actual analysis

    diff --git a/website/static/odoc/next/infer/Absint/AnalysisResult/index.html b/website/static/odoc/next/infer/Absint/AnalysisResult/index.html new file mode 100644 index 00000000000..7a7ca65fbc5 --- /dev/null +++ b/website/static/odoc/next/infer/Absint/AnalysisResult/index.html @@ -0,0 +1,2 @@ + +AnalysisResult (infer.Absint.AnalysisResult)

    Module Absint.AnalysisResult

    type no_summary =
    1. | AnalysisFailed
    2. | InBlockList
    3. | MutualRecursionCycle
    4. | UnknownProcedure
    val pp_no_summary : Ppx_show_runtime.Format.formatter -> no_summary -> unit
    val show_no_summary : no_summary -> string
    val to_option : 'a t -> 'a option
    diff --git a/website/static/odoc/next/infer/Absint/AnalysisState/index.html b/website/static/odoc/next/infer/Absint/AnalysisState/index.html index 148600b702f..05bcd09ed9b 100644 --- a/website/static/odoc/next/infer/Absint/AnalysisState/index.html +++ b/website/static/odoc/next/infer/Absint/AnalysisState/index.html @@ -1,2 +1,2 @@ -AnalysisState (infer.Absint.AnalysisState)

    Module Absint.AnalysisState

    State of symbolic execution

    val get_instr : unit -> IR.Sil.instr option

    Get last instruction seen in symbolic execution

    val get_loc_exn : unit -> IBase.Location.t

    Get last location seen in symbolic execution

    val get_loc : unit -> IBase.Location.t option

    Get last location seen in symbolic execution

    val get_node_exn : unit -> IR.Procdesc.Node.t

    Get last node seen in symbolic execution

    val get_node : unit -> IR.Procdesc.Node.t option

    Get last node seen in symbolic execution

    val get_remaining_disjuncts : unit -> int option

    Get number of remaining disjuncts in the transfer function for Pulse

    val get_session : unit -> int

    Get last session seen in symbolic execution

    val set_instr : IR.Sil.instr -> unit

    Set last instruction seen in symbolic execution

    val set_node : IR.Procdesc.Node.t -> unit

    Set last node seen in symbolic execution

    val set_remaining_disjuncts : int -> unit

    Set number of remaining disjuncts in the transfer function for Pulse

    val set_session : int -> unit

    Set last session seen in symbolic execution

    \ No newline at end of file +AnalysisState (infer.Absint.AnalysisState)

    Module Absint.AnalysisState

    State of symbolic execution

    val get_instr : unit -> IR.Sil.instr option

    Get last instruction seen in symbolic execution

    val get_loc_exn : unit -> IBase.Location.t

    Get last location seen in symbolic execution

    val get_loc : unit -> IBase.Location.t option

    Get last location seen in symbolic execution

    val get_node_exn : unit -> IR.Procdesc.Node.t

    Get last node seen in symbolic execution

    val get_node : unit -> IR.Procdesc.Node.t option

    Get last node seen in symbolic execution

    val get_remaining_disjuncts : unit -> int option

    Get number of remaining disjuncts in the transfer function for Pulse

    val get_session : unit -> int

    Get last session seen in symbolic execution

    val set_instr : IR.Sil.instr -> unit

    Set last instruction seen in symbolic execution

    val set_node : IR.Procdesc.Node.t -> unit

    Set last node seen in symbolic execution

    val set_remaining_disjuncts : int -> unit

    Set number of remaining disjuncts in the transfer function for Pulse

    val set_session : int -> unit

    Set last session seen in symbolic execution

    diff --git a/website/static/odoc/next/infer/Absint/AndroidFramework/index.html b/website/static/odoc/next/infer/Absint/AndroidFramework/index.html index 13bcf539ea3..3e644d37a7e 100644 --- a/website/static/odoc/next/infer/Absint/AndroidFramework/index.html +++ b/website/static/odoc/next/infer/Absint/AndroidFramework/index.html @@ -1,2 +1,2 @@ -AndroidFramework (infer.Absint.AndroidFramework)

    Module Absint.AndroidFramework

    Android lifecycle types and their lifecycle methods that are called by the framework

    val drawable_prefix : string

    prefix for Drawable fields in generated resources

    val is_autocloseable : IR.Tenv.t -> IR.Typ.Name.t -> bool
    val is_view : IR.Tenv.t -> IR.Typ.Name.t -> bool

    return true if typename <: android.view.View

    val is_fragment : IR.Tenv.t -> IR.Typ.Name.t -> bool
    \ No newline at end of file +AndroidFramework (infer.Absint.AndroidFramework)

    Module Absint.AndroidFramework

    Android lifecycle types and their lifecycle methods that are called by the framework

    val drawable_prefix : string

    prefix for Drawable fields in generated resources

    val is_autocloseable : IR.Tenv.t -> IR.Typ.Name.t -> bool
    val is_view : IR.Tenv.t -> IR.Typ.Name.t -> bool

    return true if typename <: android.view.View

    val is_fragment : IR.Tenv.t -> IR.Typ.Name.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/Annotations/index.html b/website/static/odoc/next/infer/Absint/Annotations/index.html index cdc44c481e8..2c01d8d442f 100644 --- a/website/static/odoc/next/infer/Absint/Annotations/index.html +++ b/website/static/odoc/next/infer/Absint/Annotations/index.html @@ -1,5 +1,5 @@ -Annotations (infer.Absint.Annotations)

    Module Absint.Annotations

    Annotations.

    val auto_cleanup : string
    val expensive : string
    val inject_prop : string
    val immutable : string
    val lockless : string
    val no_allocation : string
    val nullable : string
    val nonnull : string
    val performance_critical : string
    val prop : string
    val for_non_ui_thread : string
    val for_ui_thread : string
    val guarded_by : string
    val suppress_lint : string
    val thread_safe : string
    val visibleForTesting : string
    val annot_ends_with : IR.Annot.t -> string -> bool

    annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

    val ia_ends_with : IR.Annot.Item.t -> string -> bool

    Check if there is an annotation in ia which ends with the given name

    val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
    val ia_is_initializer : IR.Annot.Item.t -> bool
    val ia_is_nonnull : IR.Annot.Item.t -> bool
    val ia_is_jetbrains_notnull : IR.Annot.Item.t -> bool
    val ia_is_nullable : IR.Annot.Item.t -> bool
    val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
    val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
    val ia_is_expensive : IR.Annot.Item.t -> bool
    val ia_is_functional : IR.Annot.Item.t -> bool
    val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
    val ia_is_inject : IR.Annot.Item.t -> bool
    val ia_is_suppress_lint : IR.Annot.Item.t -> bool
    val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
    val ia_is_nonblocking : IR.Annot.Item.t -> bool
    val ia_is_returns_ownership : IR.Annot.Item.t -> bool
    val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
    val ia_is_thread_safe : IR.Annot.Item.t -> bool
    val ia_is_thread_confined : IR.Annot.Item.t -> bool
    val ia_is_thrift_service : IR.Annot.Item.t -> bool
    val ia_is_volatile : IR.Annot.Item.t -> bool
    val ia_is_worker_thread : IR.Annot.Item.t -> bool
    val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
    val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on the annotation of pdesc's return value

    val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on the annotation of pname's return value

    val attrs_return_annot_ends_with : IR.ProcAttributes.t -> string -> bool

    return true if return value in attrs is annotated with a value ending with the given string

    val method_has_annotation_with : +Annotations (infer.Absint.Annotations)

    Module Absint.Annotations

    Annotations.

    val auto_cleanup : string
    val expensive : string
    val inject_prop : string
    val immutable : string
    val lockless : string
    val no_allocation : string
    val nullable : string
    val nonnull : string
    val performance_critical : string
    val prop : string
    val for_non_ui_thread : string
    val for_ui_thread : string
    val guarded_by : string
    val suppress_lint : string
    val thread_safe : string
    val visibleForTesting : string
    val annot_ends_with : IR.Annot.t -> string -> bool

    annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

    val ia_ends_with : IR.Annot.Item.t -> string -> bool

    Check if there is an annotation in ia which ends with the given name

    val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
    val ia_is_initializer : IR.Annot.Item.t -> bool
    val ia_is_nonnull : IR.Annot.Item.t -> bool
    val ia_is_jetbrains_notnull : IR.Annot.Item.t -> bool
    val ia_is_nullable : IR.Annot.Item.t -> bool
    val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
    val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
    val ia_is_expensive : IR.Annot.Item.t -> bool
    val ia_is_functional : IR.Annot.Item.t -> bool
    val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
    val ia_is_inject : IR.Annot.Item.t -> bool
    val ia_is_suppress_lint : IR.Annot.Item.t -> bool
    val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
    val ia_is_nonblocking : IR.Annot.Item.t -> bool
    val ia_is_returns_ownership : IR.Annot.Item.t -> bool
    val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
    val ia_is_thread_safe : IR.Annot.Item.t -> bool
    val ia_is_thread_confined : IR.Annot.Item.t -> bool
    val ia_is_thrift_service : IR.Annot.Item.t -> bool
    val ia_is_volatile : IR.Annot.Item.t -> bool
    val ia_is_worker_thread : IR.Annot.Item.t -> bool
    val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
    val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on the annotation of pdesc's return value

    val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on the annotation of pname's return value

    val attrs_return_annot_ends_with : IR.ProcAttributes.t -> string -> bool

    return true if return value in attrs is annotated with a value ending with the given string

    val method_has_annotation_with : IR.Annot.Item.t -> IR.Annot.Item.t list -> (IR.Annot.t -> bool) -> @@ -7,4 +7,4 @@ IR.Fieldname.t -> IR.Struct.t -> (IR.Annot.Item.t -> bool) -> - bool
    val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on some annotation of struct_typ

    \ No newline at end of file + bool
    val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

    return true if the given predicate evaluates to true on some annotation of struct_typ

    diff --git a/website/static/odoc/next/infer/Absint/Bindings/index.html b/website/static/odoc/next/infer/Absint/Bindings/index.html index 87d25f67349..ecf00db0cf0 100644 --- a/website/static/odoc/next/infer/Absint/Bindings/index.html +++ b/website/static/odoc/next/infer/Absint/Bindings/index.html @@ -1,6 +1,6 @@ -Bindings (infer.Absint.Bindings)

    Module Absint.Bindings

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val empty : t
    val exit_scope : IR.Var.t -> t -> t * IR.Var.t list

    returns the new bindings as well as a list of variables that became dead

    val resolve : t -> IR.Var.t -> HilExp.AccessExpression.t option
    val fold : +Bindings (infer.Absint.Bindings)

    Module Absint.Bindings

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val empty : t
    val exit_scope : IR.Var.t -> t -> t * IR.Var.t list

    returns the new bindings as well as a list of variables that became dead

    val resolve : t -> IR.Var.t -> HilExp.AccessExpression.t option
    val fold : t -> - init:'accum -> - f:(IR.Var.t -> HilExp.AccessExpression.t -> 'accum -> 'accum) -> - 'accum
    \ No newline at end of file + init:'accum -> + f:(IR.Var.t -> HilExp.AccessExpression.t -> 'accum -> 'accum) -> + 'accum
    diff --git a/website/static/odoc/next/infer/Absint/CallSite/Set/index.html b/website/static/odoc/next/infer/Absint/CallSite/Set/index.html index 2b1c0ede6f5..211d98411b7 100644 --- a/website/static/odoc/next/infer/Absint/CallSite/Set/index.html +++ b/website/static/odoc/next/infer/Absint/CallSite/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.CallSite.Set)

    Module CallSite.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.CallSite.Set)

    Module CallSite.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/CallSite/index.html b/website/static/odoc/next/infer/Absint/CallSite/index.html index 90282bc115e..ad9edc256cd 100644 --- a/website/static/odoc/next/infer/Absint/CallSite/index.html +++ b/website/static/odoc/next/infer/Absint/CallSite/index.html @@ -1,2 +1,2 @@ -CallSite (infer.Absint.CallSite)

    Module Absint.CallSite

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val pname : t -> IR.Procname.t
    val loc : t -> IBase.Location.t
    val dummy : t
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +CallSite (infer.Absint.CallSite)

    Module Absint.CallSite

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val pname : t -> IR.Procname.t
    val loc : t -> IBase.Location.t
    val dummy : t
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/Absint/ConcurrencyModels/index.html b/website/static/odoc/next/infer/Absint/ConcurrencyModels/index.html index ee015afcca8..3a67c4c82d1 100644 --- a/website/static/odoc/next/infer/Absint/ConcurrencyModels/index.html +++ b/website/static/odoc/next/infer/Absint/ConcurrencyModels/index.html @@ -1,5 +1,5 @@ -ConcurrencyModels (infer.Absint.ConcurrencyModels)

    Module Absint.ConcurrencyModels

    type lock_effect =
    1. | Lock of HilExp.t list
      (*

      simultaneously acquire a list of locks

      *)
    2. | Unlock of HilExp.t list
      (*

      simultaneously release a list of locks

      *)
    3. | LockedIfTrue of HilExp.t list
      (*

      simultaneously attempt to acquire a list of locks

      *)
    4. | GuardConstruct of {
      1. guard : HilExp.t;
      2. lock : HilExp.t;
      3. acquire_now : bool;
      }
      (*

      mutex guard construction - clang only

      *)
    5. | GuardLock of HilExp.t
      (*

      lock underlying mutex via guard - clang only

      *)
    6. | GuardLockedIfTrue of HilExp.t
      (*

      lock underlying mutex if true via guard - clang only

      *)
    7. | GuardUnlock of HilExp.t
      (*

      unlock underlying mutex via guard - clang only

      *)
    8. | GuardDestroy of HilExp.t
      (*

      destroy guard and unlock underlying mutex - clang only

      *)
    9. | NoEffect
      (*

      function call has no lock-relevant effect

      *)

    effect of call plus Hil expressions being un/locked, if known

    type thread =
    1. | BackgroundThread
    2. | MainThread
    3. | MainThreadIfTrue
    4. | UnknownThread
    val get_lock_effect : IR.Procname.t -> HilExp.t list -> lock_effect

    describe how this procedure behaves with respect to locking

    val get_thread_assert_effect : IR.Procname.t -> thread

    In Java, certain methods can be used to assert execution on a specific kind of thread, or return a boolean equivalent to such a fact.

    val get_current_class_and_annotated_superclasses : +ConcurrencyModels (infer.Absint.ConcurrencyModels)

    Module Absint.ConcurrencyModels

    type lock_effect =
    1. | Lock of HilExp.t list
      (*

      simultaneously acquire a list of locks

      *)
    2. | Unlock of HilExp.t list
      (*

      simultaneously release a list of locks

      *)
    3. | LockedIfTrue of HilExp.t list
      (*

      simultaneously attempt to acquire a list of locks

      *)
    4. | GuardConstruct of {
      1. guard : HilExp.t;
      2. lock : HilExp.t;
      3. acquire_now : bool;
      }
      (*

      mutex guard construction - clang only

      *)
    5. | GuardLock of HilExp.t
      (*

      lock underlying mutex via guard - clang only

      *)
    6. | GuardLockedIfTrue of HilExp.t
      (*

      lock underlying mutex if true via guard - clang only

      *)
    7. | GuardUnlock of HilExp.t
      (*

      unlock underlying mutex via guard - clang only

      *)
    8. | GuardDestroy of HilExp.t
      (*

      destroy guard and unlock underlying mutex - clang only

      *)
    9. | NoEffect
      (*

      function call has no lock-relevant effect

      *)

    effect of call plus Hil expressions being un/locked, if known

    type thread =
    1. | BackgroundThread
    2. | MainThread
    3. | MainThreadIfTrue
    4. | UnknownThread
    val get_lock_effect : IR.Procname.t -> HilExp.t list -> lock_effect

    describe how this procedure behaves with respect to locking

    val get_thread_assert_effect : IR.Procname.t -> thread

    In Java, certain methods can be used to assert execution on a specific kind of thread, or return a boolean equivalent to such a fact.

    val get_current_class_and_annotated_superclasses : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> @@ -7,4 +7,4 @@ (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> - annotation_trail option

    check if a method's transitive annotations satisfy the given predicate

    val annotated_as_worker_thread : IR.Tenv.t -> IR.Procname.t -> bool
    val runs_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

    is method not transitively annotated @WorkerThread and is modeled or annotated @UIThread or equivalent?

    val is_android_lifecycle_method : IR.Tenv.t -> IR.Procname.t -> bool

    is method a known Android UI thread callback (eg Activity.onCreate)

    \ No newline at end of file + annotation_trail option

    check if a method's transitive annotations satisfy the given predicate

    val annotated_as_worker_thread : IR.Tenv.t -> IR.Procname.t -> bool
    val runs_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

    is method not transitively annotated @WorkerThread and is modeled or annotated @UIThread or equivalent?

    val is_android_lifecycle_method : IR.Tenv.t -> IR.Procname.t -> bool

    is method a known Android UI thread callback (eg Activity.onCreate)

    diff --git a/website/static/odoc/next/infer/Absint/Decompile/index.html b/website/static/odoc/next/infer/Absint/Decompile/index.html index 12eeae5b19b..86f0371cd34 100644 --- a/website/static/odoc/next/infer/Absint/Decompile/index.html +++ b/website/static/odoc/next/infer/Absint/Decompile/index.html @@ -1,8 +1,8 @@ -Decompile (infer.Absint.Decompile)

    Module Absint.Decompile

    val find_normal_variable_funcall : +Decompile (infer.Absint.Decompile)

    Module Absint.Decompile

    val find_normal_variable_funcall : IR.Procdesc.Node.t -> IR.Ident.t -> (IR.Exp.t * IR.Exp.t list * IBase.Location.t * IR.CallFlags.t) option

    Find the function call instruction used to initialize normal variable id, and return the function name and arguments

    val find_program_variable_assignment : IR.Procdesc.Node.t -> IR.Pvar.t -> - (IR.Procdesc.Node.t * IR.Ident.t) option

    Find a program variable assignment in the current node or straightline predecessor.

    \ No newline at end of file + (IR.Procdesc.Node.t * IR.Ident.t) option

    Find a program variable assignment in the current node or straightline predecessor.

    diff --git a/website/static/odoc/next/infer/Absint/Errlog/index.html b/website/static/odoc/next/infer/Absint/Errlog/index.html index 29e1e7c4dab..20c87ca4236 100644 --- a/website/static/odoc/next/infer/Absint/Errlog/index.html +++ b/website/static/odoc/next/infer/Absint/Errlog/index.html @@ -1,5 +1,5 @@ -Errlog (infer.Absint.Errlog)

    Module Absint.Errlog

    Module for error logs.

    type node_tag =
    1. | Condition of bool
    2. | Exception of IR.Typ.name
    3. | Procedure_start of IR.Procname.t
    4. | Procedure_end of IR.Procname.t
    type loc_trace_elem = private {
    1. lt_level : int;
      (*

      nesting level of procedure calls

      *)
    2. lt_loc : IBase.Location.t;
      (*

      source location at the current step in the trace

      *)
    3. lt_description : string;
      (*

      description of the current step in the trace

      *)
    4. lt_node_tags : node_tag list;
      (*

      tags describing the node at the current location

      *)
    }

    Element of a loc trace

    val make_trace_element : +Errlog (infer.Absint.Errlog)

    Module Absint.Errlog

    Module for error logs.

    type node_tag =
    1. | Condition of bool
    2. | Exception of IR.Typ.name
    3. | Procedure_start of IR.Procname.t
    4. | Procedure_end of IR.Procname.t
    type loc_trace_elem = private {
    1. lt_level : int;
      (*

      nesting level of procedure calls

      *)
    2. lt_loc : IBase.Location.t;
      (*

      source location at the current step in the trace

      *)
    3. lt_description : string;
      (*

      description of the current step in the trace

      *)
    4. lt_node_tags : node_tag list;
      (*

      tags describing the node at the current location

      *)
    }

    Element of a loc trace

    val make_trace_element : int -> IBase.Location.t -> string -> @@ -10,14 +10,14 @@ Stdlib.Format.formatter -> t -> unit

    Print an error log in html format

    val update : t -> t -> unit

    Update an old error log with a new one

    val log_issue : - ?severity_override:IBase.IssueType.severity -> + ?severity_override:IBase.IssueType.severity -> t -> - loc:IBase.Location.t -> - node:node -> - session:int -> - ltr:loc_trace -> - access:string option -> - extras:ATDGenerated.Jsonbug_t.extra option -> + loc:IBase.Location.t -> + node:node -> + session:int -> + ltr:loc_trace -> + access:string option -> + extras:ATDGenerated.Jsonbug_t.extra option -> IBase.Checker.t -> IssueToReport.t -> - unit
    val merge : into:t -> t -> [ `Modified | `Intact ]
    val loc_trace_length : loc_trace -> int
    val loc_trace_max_depth : loc_trace -> int
    \ No newline at end of file + unit
    val merge : into:t -> t -> [ `Modified | `Intact ]
    val loc_trace_length : loc_trace -> int
    val loc_trace_max_depth : loc_trace -> int
    diff --git a/website/static/odoc/next/infer/Absint/Exe_env/index.html b/website/static/odoc/next/infer/Absint/Exe_env/index.html index 07729a1d6db..bcc7ee0c68e 100644 --- a/website/static/odoc/next/infer/Absint/Exe_env/index.html +++ b/website/static/odoc/next/infer/Absint/Exe_env/index.html @@ -1,2 +1,2 @@ -Exe_env (infer.Absint.Exe_env)

    Module Absint.Exe_env

    Execution environments are a means to get a function's type environment and integer widths and cache those

    type t
    val mk : unit -> t

    Create a new cache

    val get_proc_tenv : t -> IR.Procname.t -> IR.Tenv.t

    return the type environment associated with the procedure

    val get_source_tenv : t -> IBase.SourceFile.t -> IR.Tenv.t option

    return the type environment associated with the source file

    val load_java_global_tenv : t -> IR.Tenv.t

    Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

    val get_integer_type_widths : t -> IR.Procname.t -> IR.IntegerWidths.t

    return the integer type widths associated with the procedure

    \ No newline at end of file +Exe_env (infer.Absint.Exe_env)

    Module Absint.Exe_env

    Execution environments are a means to get a function's type environment and integer widths and cache those

    type t
    val mk : unit -> t

    Create a new cache

    val get_proc_tenv : t -> IR.Procname.t -> IR.Tenv.t

    return the type environment associated with the procedure

    val get_source_tenv : t -> IBase.SourceFile.t -> IR.Tenv.t option

    return the type environment associated with the source file

    val load_java_global_tenv : t -> IR.Tenv.t

    Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

    val get_integer_type_widths : t -> IR.Procname.t -> IR.IntegerWidths.t

    return the integer type widths associated with the procedure

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/DefaultCallPrinter/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/DefaultCallPrinter/index.html index 8867597da4e..d3f695b0674 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/DefaultCallPrinter/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/DefaultCallPrinter/index.html @@ -1,2 +1,2 @@ -DefaultCallPrinter (infer.Absint.ExplicitTrace.DefaultCallPrinter)

    Module ExplicitTrace.DefaultCallPrinter

    Printer which outputs "Method call: <monospaced procname>"

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +DefaultCallPrinter (infer.Absint.ExplicitTrace.DefaultCallPrinter)

    Module ExplicitTrace.DefaultCallPrinter

    Printer which outputs "Method call: <monospaced procname>"

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/FiniteSet/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/FiniteSet/index.html index c69abf032ad..8db5cf7efb3 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/FiniteSet/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Absint.ExplicitTrace.MakeTraceElem.FiniteSet)

    Module MakeTraceElem.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    \ No newline at end of file +FiniteSet (infer.Absint.ExplicitTrace.MakeTraceElem.FiniteSet)

    Module MakeTraceElem.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-1-Elem/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-1-Elem/index.html index 6618bae7e1f..67c39739668 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-1-Elem/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-1-Elem/index.html @@ -1,2 +1,2 @@ -Elem (infer.Absint.ExplicitTrace.MakeTraceElem.Elem)

    Parameter MakeTraceElem.Elem

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    \ No newline at end of file +Elem (infer.Absint.ExplicitTrace.MakeTraceElem.Elem)

    Parameter MakeTraceElem.Elem

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-2-CallPrinter/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-2-CallPrinter/index.html index 491ad9da7b6..1bb937e4b44 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-2-CallPrinter/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/argument-2-CallPrinter/index.html @@ -1,2 +1,2 @@ -CallPrinter (infer.Absint.ExplicitTrace.MakeTraceElem.CallPrinter)

    Parameter MakeTraceElem.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +CallPrinter (infer.Absint.ExplicitTrace.MakeTraceElem.CallPrinter)

    Parameter MakeTraceElem.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/index.html index 1dfa75e326b..5cb07c89840 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElem/index.html @@ -1,2 +1,2 @@ -MakeTraceElem (infer.Absint.ExplicitTrace.MakeTraceElem)

    Module ExplicitTrace.MakeTraceElem

    Parameters

    module Elem : Element

    Signature

    type elem_t = Elem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    \ No newline at end of file +MakeTraceElem (infer.Absint.ExplicitTrace.MakeTraceElem)

    Module ExplicitTrace.MakeTraceElem

    Parameters

    module Elem : Element

    Signature

    type elem_t = Elem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/FiniteSet/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/FiniteSet/index.html index f1f8d9c8a76..9aa167ee6cc 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/FiniteSet/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.FiniteSet)

    Module MakeTraceElemModuloLocation.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    \ No newline at end of file +FiniteSet (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.FiniteSet)

    Module MakeTraceElemModuloLocation.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-1-Elem/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-1-Elem/index.html index 79408034221..508a4748387 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-1-Elem/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-1-Elem/index.html @@ -1,2 +1,2 @@ -Elem (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.Elem)

    Parameter MakeTraceElemModuloLocation.Elem

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    \ No newline at end of file +Elem (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.Elem)

    Parameter MakeTraceElemModuloLocation.Elem

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-2-CallPrinter/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-2-CallPrinter/index.html index 52ed96bd36f..3a9b58bcaec 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-2-CallPrinter/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/argument-2-CallPrinter/index.html @@ -1,2 +1,2 @@ -CallPrinter (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.CallPrinter)

    Parameter MakeTraceElemModuloLocation.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +CallPrinter (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation.CallPrinter)

    Parameter MakeTraceElemModuloLocation.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/index.html index 7b648ad9d26..0d242b0db76 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/MakeTraceElemModuloLocation/index.html @@ -1,2 +1,2 @@ -MakeTraceElemModuloLocation (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation)

    Module ExplicitTrace.MakeTraceElemModuloLocation

    Parameters

    module Elem : Element

    Signature

    type elem_t = Elem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    \ No newline at end of file +MakeTraceElemModuloLocation (infer.Absint.ExplicitTrace.MakeTraceElemModuloLocation)

    Module ExplicitTrace.MakeTraceElemModuloLocation

    Parameters

    module Elem : Element

    Signature

    type elem_t = Elem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/index.html index b822c1671c5..b921a424ae9 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/index.html @@ -1,9 +1,9 @@ -ExplicitTrace (infer.Absint.ExplicitTrace)

    Module Absint.ExplicitTrace

    module type FiniteSet = sig ... end

    A powerset domain of traces, with bottom = empty and join = union

    module type Element = sig ... end
    module type CallPrinter = +ExplicitTrace (infer.Absint.ExplicitTrace)

    Module Absint.ExplicitTrace

    module type FiniteSet = sig ... end

    A powerset domain of traces, with bottom = empty and join = union

    module type Element = sig ... end

    Printer which outputs "Method call: <monospaced procname>"

    module type TraceElem = sig ... end
    include sig ... end
    \ No newline at end of file + TraceElem with type elem_t = Elem.t
    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-CallPrinter/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-CallPrinter/index.html index 85a4888bf4f..fe36dd945ea 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-CallPrinter/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-CallPrinter/index.html @@ -1,2 +1,2 @@ -CallPrinter (infer.Absint.ExplicitTrace.CallPrinter)

    Module type ExplicitTrace.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +CallPrinter (infer.Absint.ExplicitTrace.CallPrinter)

    Module type ExplicitTrace.CallPrinter

    type t = CallSite.t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-Element/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-Element/index.html index 1c40713ad65..f6285409a70 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-Element/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-Element/index.html @@ -1,2 +1,2 @@ -Element (infer.Absint.ExplicitTrace.Element)

    Module type ExplicitTrace.Element

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    \ No newline at end of file +Element (infer.Absint.ExplicitTrace.Element)

    Module type ExplicitTrace.Element

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-FiniteSet/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-FiniteSet/index.html index 4a2c80b38a2..e64c98b4a08 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-FiniteSet/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Absint.ExplicitTrace.FiniteSet)

    Module type ExplicitTrace.FiniteSet

    A powerset domain of traces, with bottom = empty and join = union

    include AbstractDomain.FiniteSetS
    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    \ No newline at end of file +FiniteSet (infer.Absint.ExplicitTrace.FiniteSet)

    Module type ExplicitTrace.FiniteSet

    A powerset domain of traces, with bottom = empty and join = union

    include AbstractDomain.FiniteSetS
    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/FiniteSet/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/FiniteSet/index.html index dabea688e73..217ceedf613 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/FiniteSet/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Absint.ExplicitTrace.TraceElem.FiniteSet)

    Module TraceElem.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    \ No newline at end of file +FiniteSet (infer.Absint.ExplicitTrace.TraceElem.FiniteSet)

    Module TraceElem.FiniteSet

    A powerset of traces.

    include AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    diff --git a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/index.html b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/index.html index 94e3f250508..ad1181f1c9e 100644 --- a/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/index.html +++ b/website/static/odoc/next/infer/Absint/ExplicitTrace/module-type-TraceElem/index.html @@ -1,2 +1,2 @@ -TraceElem (infer.Absint.ExplicitTrace.TraceElem)

    Module type ExplicitTrace.TraceElem

    type elem_t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    \ No newline at end of file +TraceElem (infer.Absint.ExplicitTrace.TraceElem)

    Module type ExplicitTrace.TraceElem

    type elem_t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val get_loc : t -> IBase.Location.t

    Starting location of the trace: this is either loc if trace==[], or the head of trace.

    val make_loc_trace : ?nesting:int -> t -> Errlog.loc_trace
    val with_callsite : t -> CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    module FiniteSet : FiniteSet with type elt = t

    A powerset of traces.

    diff --git a/website/static/odoc/next/infer/Absint/FormalMap/index.html b/website/static/odoc/next/infer/Absint/FormalMap/index.html index c61ca0368a2..d081a57ccd2 100644 --- a/website/static/odoc/next/infer/Absint/FormalMap/index.html +++ b/website/static/odoc/next/infer/Absint/FormalMap/index.html @@ -1,2 +1,2 @@ -FormalMap (infer.Absint.FormalMap)

    Module Absint.FormalMap

    module F = Stdlib.Format
    type t

    a map from a formal to its positional index

    val make : IR.ProcAttributes.t -> t

    create a formal map for the given procdesc

    val empty : t

    the empty formal map

    val is_formal : AccessPath.base -> t -> bool

    return true if the given base var is a formal according to the given formal map

    val get_formal_index : AccessPath.base -> t -> int option

    return the index for the given base var if it is a formal, or None if it is not

    val get_formal_base : int -> t -> AccessPath.base option

    return the base var for the given index if it exists, or None if it does not. Note: this is linear in the size of the formal map

    val pp : F.formatter -> t -> unit
    val cardinal : t -> int
    val iter : (AccessPath.base -> int -> unit) -> t -> unit
    \ No newline at end of file +FormalMap (infer.Absint.FormalMap)

    Module Absint.FormalMap

    module F = Stdlib.Format
    type t

    a map from a formal to its positional index

    val make : IR.ProcAttributes.t -> t

    create a formal map for the given procdesc

    val empty : t

    the empty formal map

    val is_formal : AccessPath.base -> t -> bool

    return true if the given base var is a formal according to the given formal map

    val get_formal_index : AccessPath.base -> t -> int option

    return the index for the given base var if it is a formal, or None if it is not

    val get_formal_base : int -> t -> AccessPath.base option

    return the base var for the given index if it exists, or None if it does not. Note: this is linear in the size of the formal map

    val pp : F.formatter -> t -> unit
    val cardinal : t -> int
    val iter : (AccessPath.base -> int -> unit) -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/HilExp/AccessExpression/index.html b/website/static/odoc/next/infer/Absint/HilExp/AccessExpression/index.html index e988bcad141..8fffe3555bc 100644 --- a/website/static/odoc/next/infer/Absint/HilExp/AccessExpression/index.html +++ b/website/static/odoc/next/infer/Absint/HilExp/AccessExpression/index.html @@ -1,10 +1,10 @@ -AccessExpression (infer.Absint.HilExp.AccessExpression)

    Module HilExp.AccessExpression

    val array_offset : +AccessExpression (infer.Absint.HilExp.AccessExpression)

    Module HilExp.AccessExpression

    val array_offset : access_expression -> IR.Typ.t -> t option -> access_expression
    val address_of : access_expression -> access_expression option

    address_of doesn't always make sense, eg address_of (Dereference t) is None

    val address_of_base : AccessPath.base -> access_expression
    val to_access_path : access_expression -> AccessPath.t
    val replace_base : - remove_deref_after_base:bool -> + remove_deref_after_base:bool -> AccessPath.base -> access_expression -> access_expression
    val is_return_var : access_expression -> bool
    val get_typ : access_expression -> IR.Tenv.t -> IR.Typ.t option
    val pp : Stdlib.Format.formatter -> access_expression -> unit
    val equal : access_expression -> access_expression -> bool
    val to_accesses : @@ -15,6 +15,6 @@ access_expression option
    val truncate : access_expression -> (access_expression * t option MemoryAccess.t) option

    remove and return the prefix and the last access of the expression if it's a base; otherwise return None

    val append : - onto:access_expression -> + onto:access_expression -> access_expression -> - access_expression option

    append ~onto y replaces the base of y with onto itself; this makes sense if no Dereference (AddressOf _) instances are introduced

    type nonrec t = private access_expression =
    1. | Base of AccessPath.base
    2. | FieldOffset of access_expression * IR.Fieldname.t
    3. | ArrayOffset of access_expression * IR.Typ.t * t option
    4. | AddressOf of access_expression
    5. | Dereference of access_expression
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val fold_vars : (t, IR.Var.t, 'accum) IStdlib.IStd.Container.fold
    \ No newline at end of file + access_expression option

    append ~onto y replaces the base of y with onto itself; this makes sense if no Dereference (AddressOf _) instances are introduced

    type nonrec t = private access_expression =
    1. | Base of AccessPath.base
    2. | FieldOffset of access_expression * IR.Fieldname.t
    3. | ArrayOffset of access_expression * IR.Typ.t * t option
    4. | AddressOf of access_expression
    5. | Dereference of access_expression
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val fold_vars : (t, IR.Var.t, 'accum) IStdlib.IStd.Container.fold
    diff --git a/website/static/odoc/next/infer/Absint/HilExp/index.html b/website/static/odoc/next/infer/Absint/HilExp/index.html index 57ef4957044..2437aeb7dc7 100644 --- a/website/static/odoc/next/infer/Absint/HilExp/index.html +++ b/website/static/odoc/next/infer/Absint/HilExp/index.html @@ -1,13 +1,13 @@ -HilExp (infer.Absint.HilExp)

    Module Absint.HilExp

    module F = Stdlib.Format
    type t =
    1. | AccessExpression of access_expression
      (*

      access path (e.g., x.f.g or xi)

      *)
    2. | UnaryOperator of IR.Unop.t * t * IR.Typ.t option
      (*

      Unary operator with type of the result if known

      *)
    3. | BinaryOperator of IR.Binop.t * t * t
      (*

      Binary operator

      *)
    4. | Exception of t
      (*

      Exception

      *)
    5. | Closure of IR.Procname.t * (AccessPath.base * t) list
      (*

      Name of function + environment

      *)
    6. | Constant of IR.Const.t
      (*

      Constants

      *)
    7. | Cast of IR.Typ.t * t
      (*

      Type cast

      *)
    8. | Sizeof of IR.Typ.t * t option
      (*

      C-style sizeof(), and also used to treate a type as an expression. Refer to Exp module for canonical documentation

      *)
    and access_expression = private
    1. | Base of AccessPath.base
    2. | FieldOffset of access_expression * IR.Fieldname.t
      (*

      field access

      *)
    3. | ArrayOffset of access_expression * IR.Typ.t * t option
      (*

      array access

      *)
    4. | AddressOf of access_expression
      (*

      "address of" operator &

      *)
    5. | Dereference of access_expression
      (*

      "dereference" operator *

      *)
    val compare : t -> t -> int
    val compare_access_expression : access_expression -> access_expression -> int
    val equal : t -> t -> bool
    val equal_access_expression : access_expression -> access_expression -> bool
    module AccessExpression : sig ... end
    val pp : F.formatter -> t -> unit
    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option

    Get the type of the expression. Warning: not fully implemented

    val of_sil : - include_array_indexes:bool -> - f_resolve_id:(IR.Var.t -> AccessExpression.t option) -> - add_deref:bool -> +HilExp (infer.Absint.HilExp)

    Module Absint.HilExp

    module F = Stdlib.Format
    type t =
    1. | AccessExpression of access_expression
      (*

      access path (e.g., x.f.g or xi)

      *)
    2. | UnaryOperator of IR.Unop.t * t * IR.Typ.t option
      (*

      Unary operator with type of the result if known

      *)
    3. | BinaryOperator of IR.Binop.t * t * t
      (*

      Binary operator

      *)
    4. | Exception of t
      (*

      Exception

      *)
    5. | Closure of IR.Procname.t * (AccessPath.base * t) list
      (*

      Name of function + environment

      *)
    6. | Constant of IR.Const.t
      (*

      Constants

      *)
    7. | Cast of IR.Typ.t * t
      (*

      Type cast

      *)
    8. | Sizeof of IR.Typ.t * t option
      (*

      C-style sizeof(), and also used to treate a type as an expression. Refer to Exp module for canonical documentation

      *)
    and access_expression = private
    1. | Base of AccessPath.base
    2. | FieldOffset of access_expression * IR.Fieldname.t
      (*

      field access

      *)
    3. | ArrayOffset of access_expression * IR.Typ.t * t option
      (*

      array access

      *)
    4. | AddressOf of access_expression
      (*

      "address of" operator &

      *)
    5. | Dereference of access_expression
      (*

      "dereference" operator *

      *)
    val compare : t -> t -> int
    val compare_access_expression : access_expression -> access_expression -> int
    val equal : t -> t -> bool
    val equal_access_expression : access_expression -> access_expression -> bool
    module AccessExpression : sig ... end
    val pp : F.formatter -> t -> unit
    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option

    Get the type of the expression. Warning: not fully implemented

    val of_sil : + include_array_indexes:bool -> + f_resolve_id:(IR.Var.t -> AccessExpression.t option) -> + add_deref:bool -> IR.Exp.t -> IR.Typ.t -> t

    Convert SIL expression to HIL expression

    val get_access_exprs : t -> AccessExpression.t list

    Get all the access paths used in the given HIL expression, including duplicates if a path is used more than once.

    val is_null_literal : t -> bool
    val is_int_zero : t -> bool
    val eval : t -> IR.Const.t option
    val eval_boolean_exp : AccessExpression.t -> t -> bool option

    eval_boolean_exp var exp returns Some bool_value if the given boolean expression exp evaluates to bool_value when var is set to true. Return None if it has free variables that stop us from evaluating it, or is not a boolean expression.

    val ignore_cast : t -> t
    val access_expr_of_exp : - include_array_indexes:bool -> - f_resolve_id:(IR.Var.t -> AccessExpression.t option) -> + include_array_indexes:bool -> + f_resolve_id:(IR.Var.t -> AccessExpression.t option) -> IR.Exp.t -> IR.Typ.t -> - access_expression option

    best effort translating a SIL expression to an access path, not semantics preserving in particular in the presence of pointer arithmetic

    \ No newline at end of file + access_expression option

    best effort translating a SIL expression to an access path, not semantics preserving in particular in the presence of pointer arithmetic

    diff --git a/website/static/odoc/next/infer/Absint/HilInstr/index.html b/website/static/odoc/next/infer/Absint/HilInstr/index.html index f13855d0e26..484dae47b19 100644 --- a/website/static/odoc/next/infer/Absint/HilInstr/index.html +++ b/website/static/odoc/next/infer/Absint/HilInstr/index.html @@ -1,10 +1,10 @@ -HilInstr (infer.Absint.HilInstr)

    Module Absint.HilInstr

    module F = Stdlib.Format
    type call =
    1. | Direct of IR.Procname.t
    2. | Indirect of HilExp.t

    type of a procedure call; either direct or via function pointer

    val compare_call : call -> call -> int
    val pp_call : F.formatter -> call -> unit
    type t =
    1. | Assign of HilExp.AccessExpression.t * HilExp.t * IBase.Location.t
      (*

      LHS access expression, RHS expression

      *)
    2. | Assume of HilExp.t * [ `Then | `Else ] * IR.Sil.if_kind * IBase.Location.t
      (*

      Assumed expression, true_branch boolean, source of the assume (conditional, ternary, etc.)

      *)
    3. | Call of AccessPath.base +HilInstr (infer.Absint.HilInstr)

      Module Absint.HilInstr

      module F = Stdlib.Format
      type call =
      1. | Direct of IR.Procname.t
      2. | Indirect of HilExp.t

      type of a procedure call; either direct or via function pointer

      val compare_call : call -> call -> int
      val pp_call : F.formatter -> call -> unit
      type t =
      1. | Assign of HilExp.AccessExpression.t * HilExp.t * IBase.Location.t
        (*

        LHS access expression, RHS expression

        *)
      2. | Assume of HilExp.t * [ `Then | `Else ] * IR.Sil.if_kind * IBase.Location.t
        (*

        Assumed expression, true_branch boolean, source of the assume (conditional, ternary, etc.)

        *)
      3. | Call of AccessPath.base * call * HilExp.t list * IR.CallFlags.t * IBase.Location.t
        (*

        Var to hold the return, call expression, formals

        *)
      4. | Metadata of IR.Sil.instr_metadata
      include Ppx_compare_lib.Comparable.S with type t := t
      val compare : t Base__Ppx_compare_lib.compare
      val pp : F.formatter -> t -> unit
      type translation =
      1. | Instr of t
        (*

        HIL instruction to execute

        *)
      2. | Bind of IR.Var.t * HilExp.AccessExpression.t
        (*

        add binding to identifier map

        *)

      Result of translating an SIL instruction

      val of_sil : - include_array_indexes:bool -> - f_resolve_id:(IR.Var.t -> HilExp.AccessExpression.t option) -> + include_array_indexes:bool -> + f_resolve_id:(IR.Var.t -> HilExp.AccessExpression.t option) -> IR.Sil.instr -> - translation

      convert an SIL instruction into an HIL instruction. The f_resolve_id function should map an SSA temporary variable to the access path it represents. Evaluating the HIL instruction should produce the same result as evaluating the SIL instruction and replacing the temporary variables using f_resolve_id.

      \ No newline at end of file + translation

    convert an SIL instruction into an HIL instruction. The f_resolve_id function should map an SSA temporary variable to the access path it represents. Evaluating the HIL instruction should produce the same result as evaluating the SIL instruction and replacing the temporary variables using f_resolve_id.

    diff --git a/website/static/odoc/next/infer/Absint/IdAccessPathMapDomain/index.html b/website/static/odoc/next/infer/Absint/IdAccessPathMapDomain/index.html index 34378f65744..169466360ce 100644 --- a/website/static/odoc/next/infer/Absint/IdAccessPathMapDomain/index.html +++ b/website/static/odoc/next/infer/Absint/IdAccessPathMapDomain/index.html @@ -1,5 +1,5 @@ -IdAccessPathMapDomain (infer.Absint.IdAccessPathMapDomain)

    Module Absint.IdAccessPathMapDomain

    mapping of ids to raw access paths. useful for id-normalizing access paths

    include AbstractDomain.MapS +IdAccessPathMapDomain (infer.Absint.IdAccessPathMapDomain)

    Module Absint.IdAccessPathMapDomain

    mapping of ids to raw access paths. useful for id-normalizing access paths

    include AbstractDomain.MapS with type key = IR.Var.t and type value = HilExp.AccessExpression.t
    include IStdlib.PrettyPrintable.PPMonoMap with type key = IR.Var.t @@ -11,4 +11,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include AbstractDomain.WithBottom with type t := t
    include AbstractDomain.S with type t := t
    include AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Absint/InterproceduralAnalysis/index.html b/website/static/odoc/next/infer/Absint/InterproceduralAnalysis/index.html index 89b29966982..76f5e4e88d8 100644 --- a/website/static/odoc/next/infer/Absint/InterproceduralAnalysis/index.html +++ b/website/static/odoc/next/infer/Absint/InterproceduralAnalysis/index.html @@ -1,10 +1,10 @@ -InterproceduralAnalysis (infer.Absint.InterproceduralAnalysis)

    Module Absint.InterproceduralAnalysis

    type 'payload t = {
    1. proc_desc : IR.Procdesc.t;
      (*

      the procedure to analyze

      *)
    2. tenv : IR.Tenv.t;
      (*

      IR.Tenv.t corresponding to the current procedure

      *)
    3. err_log : Errlog.t;
      (*

      the issue log for the current procedure (internally a mutable data structure)

      *)
    4. exe_env : Exe_env.t;
      (*

      Exe_env.t for the current analysis

      *)
    5. analyze_dependency : ?specialization:IR.Specialization.t -> +InterproceduralAnalysis (infer.Absint.InterproceduralAnalysis)

      Module Absint.InterproceduralAnalysis

      type 'payload t = {
      1. proc_desc : IR.Procdesc.t;
        (*

        the procedure to analyze

        *)
      2. tenv : IR.Tenv.t;
        (*

        IR.Tenv.t corresponding to the current procedure

        *)
      3. err_log : Errlog.t;
        (*

        the issue log for the current procedure (internally a mutable data structure)

        *)
      4. exe_env : Exe_env.t;
        (*

        Exe_env.t for the current analysis

        *)
      5. analyze_dependency : ?specialization:IR.Specialization.t -> IR.Procname.t -> - 'payload option;
        (*

        On-demand analysis of callees or other dependencies of the analysis of the current procedure. Uses Ondemand.analyze_procedure. If specialization is provided, the summary will be improved with a specialized version.

        *)
      6. update_stats : ?add_symops:int -> - ?failure_kind:IBase.Exception.failure_kind -> + 'payload AnalysisResult.t;
        (*

        On-demand analysis of callees or other dependencies of the analysis of the current procedure. Uses Ondemand.analyze_procedure. If specialization is provided, the summary will be improved with a specialized version.

        *)
      7. update_stats : ?add_symops:int -> + ?failure_kind:IBase.Exception.failure_kind -> unit -> - unit;
        (*

        update the Summary.Stats.t of the summary of the current procedure

        *)
      }

      Analysis data for interprocedural analysis. This is the data for one procedure under analysis, and callbacks to analyze dependencies of it as well as do bookkeeping regarding the current procedure. Basically anything that needs to access the Summary.t of the current procedure should go here.

      type 'payload file_t = {
      1. source_file : IBase.SourceFile.t;
        (*

        the source file under analysis

        *)
      2. procedures : IR.Procname.t list;
        (*

        list of procedures declared in the source file

        *)
      3. file_exe_env : Exe_env.t;
        (*

        Exe_env.t for the current analysis

        *)
      4. analyze_file_dependency : IR.Procname.t -> 'payload option;
        (*

        On-demand analysis of dependencies needed for the file analysis, e.g. the proc names in procedures

        *)
      }

      Analysis data for the analysis of a source file.

      val bind_payload : - f:('payload1 -> 'payload2 option) -> + unit;
      (*

      update the Summary.Stats.t of the summary of the current procedure

      *)
    }

    Analysis data for interprocedural analysis. This is the data for one procedure under analysis, and callbacks to analyze dependencies of it as well as do bookkeeping regarding the current procedure. Basically anything that needs to access the Summary.t of the current procedure should go here.

    type 'payload file_t = {
    1. source_file : IBase.SourceFile.t;
      (*

      the source file under analysis

      *)
    2. procedures : IR.Procname.t list;
      (*

      list of procedures declared in the source file

      *)
    3. file_exe_env : Exe_env.t;
      (*

      Exe_env.t for the current analysis

      *)
    4. analyze_file_dependency : IR.Procname.t -> 'payload AnalysisResult.t;
      (*

      On-demand analysis of dependencies needed for the file analysis, e.g. the proc names in procedures

      *)
    }

    Analysis data for the analysis of a source file.

    val bind_payload_opt : 'payload1 t -> - 'payload2 t
    \ No newline at end of file + f:('payload1 -> 'payload2 option) -> + 'payload2 t diff --git a/website/static/odoc/next/infer/Absint/IntraproceduralAnalysis/index.html b/website/static/odoc/next/infer/Absint/IntraproceduralAnalysis/index.html index 46d7f0b448c..1df3cbca8c1 100644 --- a/website/static/odoc/next/infer/Absint/IntraproceduralAnalysis/index.html +++ b/website/static/odoc/next/infer/Absint/IntraproceduralAnalysis/index.html @@ -1,2 +1,2 @@ -IntraproceduralAnalysis (infer.Absint.IntraproceduralAnalysis)

    Module Absint.IntraproceduralAnalysis

    type t = {
    1. proc_desc : IR.Procdesc.t;
    2. tenv : IR.Tenv.t;
    3. err_log : Errlog.t;
    }

    a subset of InterproceduralAnalysis.t that doesn't have any inter-procedural callbacks and cannot read summaries

    \ No newline at end of file +IntraproceduralAnalysis (infer.Absint.IntraproceduralAnalysis)

    Module Absint.IntraproceduralAnalysis

    type t = {
    1. proc_desc : IR.Procdesc.t;
    2. tenv : IR.Tenv.t;
    3. err_log : Errlog.t;
    }

    a subset of InterproceduralAnalysis.t that doesn't have any inter-procedural callbacks and cannot read summaries

    diff --git a/website/static/odoc/next/infer/Absint/IssueLog/index.html b/website/static/odoc/next/infer/Absint/IssueLog/index.html index cdc2e87d6e5..754b0e57702 100644 --- a/website/static/odoc/next/infer/Absint/IssueLog/index.html +++ b/website/static/odoc/next/infer/Absint/IssueLog/index.html @@ -1,4 +1,4 @@ -IssueLog (infer.Absint.IssueLog)

    Module Absint.IssueLog

    type t

    Module for storing issues detected outside of per-procedure analysis (and hence not serialized as a part of procedure summary).

    val empty : t
    val get_or_add : proc:IR.Procname.t -> t -> t * Errlog.t

    Get the error log for a given procname. If there is none, add an empty one to the map. Return the resulting map together with the errlog.

    val is_stored : checker:IBase.Checker.t -> file:IBase.SourceFile.t -> bool

    Returns true iff an issue log for the given checker and source file is stored in the database

    val store : checker:IBase.Checker.t -> file:IBase.SourceFile.t -> t -> unit

    If there are any issues in the log, store ~checker ~file stores the map in the database. Otherwise, no write occurs.

    val invalidate : IBase.SourceFile.t -> unit

    Delete any stored issues for the given source_file from the database.

    val invalidate_all : procedures:IR.Procname.t list -> unit

    Delete any stored issues that depend on the given procedures from the database.

    val iter_all_issues : - f:(IBase.Checker.t -> IR.Procname.t -> Errlog.t -> unit) -> - unit

    iterate over all stored issues from all registered checkers in arbitrary order

    \ No newline at end of file +IssueLog (infer.Absint.IssueLog)

    Module Absint.IssueLog

    type t

    Module for storing issues detected outside of per-procedure analysis (and hence not serialized as a part of procedure summary).

    val empty : t
    val get_or_add : proc:IR.Procname.t -> t -> t * Errlog.t

    Get the error log for a given procname. If there is none, add an empty one to the map. Return the resulting map together with the errlog.

    val is_stored : checker:IBase.Checker.t -> file:IBase.SourceFile.t -> bool

    Returns true iff an issue log for the given checker and source file is stored in the database

    val store : checker:IBase.Checker.t -> file:IBase.SourceFile.t -> t -> unit

    If there are any issues in the log, store ~checker ~file stores the map in the database. Otherwise, no write occurs.

    val invalidate : IBase.SourceFile.t -> unit

    Delete any stored issues for the given source_file from the database.

    val invalidate_all : procedures:IR.Procname.t list -> unit

    Delete any stored issues that depend on the given procedures from the database.

    val iter_all_issues : + f:(IBase.Checker.t -> IR.Procname.t -> Errlog.t -> unit) -> + unit

    iterate over all stored issues from all registered checkers in arbitrary order

    diff --git a/website/static/odoc/next/infer/Absint/IssueToReport/index.html b/website/static/odoc/next/infer/Absint/IssueToReport/index.html index e344c173c62..5bc1d371388 100644 --- a/website/static/odoc/next/infer/Absint/IssueToReport/index.html +++ b/website/static/odoc/next/infer/Absint/IssueToReport/index.html @@ -1,10 +1,10 @@ -IssueToReport (infer.Absint.IssueToReport)

    Module Absint.IssueToReport

    module L = IBase.Logging
    type t = {
    1. issue_type : IBase.IssueType.t;
    2. description : Localise.error_desc;
    3. ocaml_pos : L.ocaml_pos option;
      (*

      location in the infer source code

      *)
    }

    An issue about to be reported to the user

    val pp_err : - ?severity_override:IBase.IssueType.severity -> +IssueToReport (infer.Absint.IssueToReport)

    Module Absint.IssueToReport

    module L = IBase.Logging
    type t = {
    1. issue_type : IBase.IssueType.t;
    2. description : Localise.error_desc;
    3. ocaml_pos : L.ocaml_pos option;
      (*

      location in the infer source code

      *)
    }

    An issue about to be reported to the user

    val pp_err : + ?severity_override:IBase.IssueType.severity -> IBase.Location.t -> IBase.IssueType.t -> Localise.error_desc -> IBase.Logging.ocaml_pos option -> Stdlib.Format.formatter -> unit -> - unit

    pretty print an error

    \ No newline at end of file + unit

    pretty print an error

    diff --git a/website/static/odoc/next/infer/Absint/Localise/BucketLevel/index.html b/website/static/odoc/next/infer/Absint/Localise/BucketLevel/index.html index 344b393b877..fcb4b8ae667 100644 --- a/website/static/odoc/next/infer/Absint/Localise/BucketLevel/index.html +++ b/website/static/odoc/next/infer/Absint/Localise/BucketLevel/index.html @@ -1,2 +1,2 @@ -BucketLevel (infer.Absint.Localise.BucketLevel)

    Module Localise.BucketLevel

    val b1 : string

    highest likelihood

    val b2 : string
    val b3 : string
    val b4 : string
    val b5 : string

    lowest likelihood

    \ No newline at end of file +BucketLevel (infer.Absint.Localise.BucketLevel)

    Module Localise.BucketLevel

    val b1 : string

    highest likelihood

    val b2 : string
    val b3 : string
    val b4 : string
    val b5 : string

    lowest likelihood

    diff --git a/website/static/odoc/next/infer/Absint/Localise/Tags/index.html b/website/static/odoc/next/infer/Absint/Localise/Tags/index.html index 32902b23ed3..a70a4ed6ee9 100644 --- a/website/static/odoc/next/infer/Absint/Localise/Tags/index.html +++ b/website/static/odoc/next/infer/Absint/Localise/Tags/index.html @@ -1,2 +1,2 @@ -Tags (infer.Absint.Localise.Tags)

    Module Localise.Tags

    type t
    \ No newline at end of file +Tags (infer.Absint.Localise.Tags)

    Module Localise.Tags

    type t
    diff --git a/website/static/odoc/next/infer/Absint/Localise/index.html b/website/static/odoc/next/infer/Absint/Localise/index.html index 97f008944a1..59814dadbec 100644 --- a/website/static/odoc/next/infer/Absint/Localise/index.html +++ b/website/static/odoc/next/infer/Absint/Localise/index.html @@ -1,5 +1,5 @@ -Localise (infer.Absint.Localise)

    Module Absint.Localise

    Support for localisation

    module Tags : sig ... end
    type error_desc = {
    1. descriptions : string list;
    2. suggestion : string option;
    3. tags : Tags.t;
    4. dotty : string option;
    }

    description field of error messages

    val compare_error_desc : error_desc -> error_desc -> int
    val no_desc : error_desc

    empty error description

    val verbatim_desc : ?suggestion:string -> string -> error_desc

    verbatim desc from a string and suggestion, not to be used for user-visible descs

    module BucketLevel : sig ... end
    val error_desc_get_bucket : error_desc -> string option

    get the bucket value of an error_desc, if any

    val error_desc_set_bucket : error_desc -> string -> error_desc

    set the bucket value of an error_desc

    val error_desc_is_reportable_bucket : error_desc -> bool

    check if the report is in a high confidence bucket

    val error_desc_hash : error_desc -> int

    hash function for error_desc

    val error_desc_equal : error_desc -> error_desc -> bool

    equality for error_desc

    val pp_error_qualifier : Stdlib.Format.formatter -> error_desc -> unit

    pretty print an error qualifier

    val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

    pretty print a full error description with suggestion

    val error_desc_get_dotty : error_desc -> string option

    Description functions for error messages

    type deref_str

    dereference strings used to explain a dereference action in an error message

    val deref_str_null : IR.Procname.t option -> deref_str

    dereference strings for null dereference

    val deref_str_nullable : IR.Procname.t option -> string -> deref_str

    dereference strings for null dereference due to Nullable annotation

    val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

    dereference strings for an undefined value coming from the given procedure

    val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

    dereference strings for a dangling pointer dereference

    val deref_str_array_bound : +Localise (infer.Absint.Localise)

    Module Absint.Localise

    Support for localisation

    module Tags : sig ... end
    type error_desc = {
    1. descriptions : string list;
    2. suggestion : string option;
    3. tags : Tags.t;
    4. dotty : string option;
    }

    description field of error messages

    val compare_error_desc : error_desc -> error_desc -> int
    val no_desc : error_desc

    empty error description

    val verbatim_desc : ?suggestion:string -> string -> error_desc

    verbatim desc from a string and suggestion, not to be used for user-visible descs

    module BucketLevel : sig ... end
    val error_desc_get_bucket : error_desc -> string option

    get the bucket value of an error_desc, if any

    val error_desc_set_bucket : error_desc -> string -> error_desc

    set the bucket value of an error_desc

    val error_desc_is_reportable_bucket : error_desc -> bool

    check if the report is in a high confidence bucket

    val error_desc_hash : error_desc -> int

    hash function for error_desc

    val error_desc_equal : error_desc -> error_desc -> bool

    equality for error_desc

    val pp_error_qualifier : Stdlib.Format.formatter -> error_desc -> unit

    pretty print an error qualifier

    val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

    pretty print a full error description with suggestion

    val error_desc_get_dotty : error_desc -> string option

    Description functions for error messages

    type deref_str

    dereference strings used to explain a dereference action in an error message

    val deref_str_null : IR.Procname.t option -> deref_str

    dereference strings for null dereference

    val deref_str_nullable : IR.Procname.t option -> string -> deref_str

    dereference strings for null dereference due to Nullable annotation

    val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

    dereference strings for an undefined value coming from the given procedure

    val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

    dereference strings for a dangling pointer dereference

    val deref_str_array_bound : IR.IntLit.t option -> IR.IntLit.t option -> deref_str

    dereference strings for an array out of bound access

    val deref_str_nil_argument_in_variadic_method : @@ -48,4 +48,4 @@ deref_str -> string -> IBase.Location.t -> - error_desc
    val access_desc : access option -> string list
    \ No newline at end of file + error_desc
    val access_desc : access option -> string list
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/DefaultConfig/index.html b/website/static/odoc/next/infer/Absint/LowerHil/DefaultConfig/index.html index e54611fd968..00587a096c1 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/DefaultConfig/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/DefaultConfig/index.html @@ -1,2 +1,2 @@ -DefaultConfig (infer.Absint.LowerHil.DefaultConfig)

    Module LowerHil.DefaultConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +DefaultConfig (infer.Absint.LowerHil.DefaultConfig)

    Module LowerHil.DefaultConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/Node/index.html index a1d05c1316c..605edbf6e94 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/Node/index.html @@ -1,6 +1,6 @@ -Node (infer.Absint.LowerHil.Make.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS +Node (infer.Absint.LowerHil.Make.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS with type t = TransferFunctions.CFG.Node.t with type id = TransferFunctions.CFG.Node.id with module IdMap = TransferFunctions.CFG.Node.IdMap - with module IdSet = TransferFunctions.CFG.Node.IdSet
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + with module IdSet = TransferFunctions.CFG.Node.IdSet
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/index.html index ed689231afe..c546cc9c48e 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.Make.CFG)

    Module Make.CFG

    module Node : +CFG (infer.Absint.LowerHil.Make.CFG)

    Module Make.CFG

    module Node : ProcCfg.Node with type t = TransferFunctions.CFG.Node.t with type id = TransferFunctions.CFG.Node.id @@ -12,4 +12,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/Domain/index.html index 2cc07556773..de069cacefc 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.Make.Domain)

    Module Make.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.Make.Domain)

    Module Make.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index 3c9db944183..d25142d71ab 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index f90270d851b..db893de132a 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/index.html index a7498b5ffca..3245e62d591 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.LowerHil.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/index.html index c1adfef99a0..740fdbc6c40 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.Make.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.LowerHil.Make.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/Domain/index.html index 253e802f382..a6a26bedc08 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.Make.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.Make.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/index.html index 4968520a349..d324f71f5e3 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.Make.TransferFunctions)

    Parameter Make.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.Make.TransferFunctions)

    Parameter Make.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-2-HilConfig/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-2-HilConfig/index.html index ad3dcc7b31f..1021fbe0e4f 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-2-HilConfig/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/argument-2-HilConfig/index.html @@ -1,2 +1,2 @@ -HilConfig (infer.Absint.LowerHil.Make.HilConfig)

    Parameter Make.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +HilConfig (infer.Absint.LowerHil.Make.HilConfig)

    Parameter Make.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/Make/index.html b/website/static/odoc/next/infer/Absint/LowerHil/Make/index.html index 6b8910a0526..b638532db7e 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/Make/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/Make/index.html @@ -1,5 +1,5 @@ -Make (infer.Absint.LowerHil.Make)

    Module LowerHil.Make

    Functor for turning HIL transfer functions into SIL transfer functions

    Parameters

    Signature

    module CFG : +Make (infer.Absint.LowerHil.Make)

    Module LowerHil.Make

    Functor for turning HIL transfer functions into SIL transfer functions

    Parameters

    Signature

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html index f18361c4489..3ac4362e385 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html index a9260812041..06e52c63f14 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html index 412063dcd0f..b805576497e 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html index 440efc978a6..64aa502b575 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html index 9ff1e09b968..63c2e91be47 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html index 71b5c293a52..5bedf46bbea 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/index.html index 5f566bd8fb4..de915fa750d 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/Interpreter/index.html @@ -1,23 +1,23 @@ -Interpreter (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter)

    Module MakeAbstractInterpreter.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +Interpreter (infer.Absint.LowerHil.MakeAbstractInterpreter.Interpreter)

    Module MakeAbstractInterpreter.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = TransferFunctions.Domain.t Absint__AbstractInterpreter.State.t InvariantMap.t
    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option
    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map
    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map
    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option
    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option
    \ No newline at end of file + 'a option
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index 2478b401907..1ab756fffed 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index d13e3843870..375250bf80b 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html index f56aa43be6e..66637d36547 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html index 79a356006f4..c62e6c27e60 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html index bab74cdfede..eaea8cc2fcf 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/index.html index bbd17f8af23..19ab0e38fce 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions)

    Parameter MakeAbstractInterpreter.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreter.TransferFunctions)

    Parameter MakeAbstractInterpreter.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/index.html index 7ae2ffac1d6..8d2fc39d3d2 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreter/index.html @@ -1,6 +1,6 @@ -MakeAbstractInterpreter (infer.Absint.LowerHil.MakeAbstractInterpreter)

    Module LowerHil.MakeAbstractInterpreter

    Simpler version of the above wrapper that uses the default HIL config

    Parameters

    Signature

    include sig ... end
    module Interpreter : sig ... end
    val compute_post : +MakeAbstractInterpreter (infer.Absint.LowerHil.MakeAbstractInterpreter)

    Module LowerHil.MakeAbstractInterpreter

    Simpler version of the above wrapper that uses the default HIL config

    Parameters

    Signature

    include sig ... end
    module Interpreter : sig ... end
    val compute_post : Interpreter.TransferFunctions.analysis_data -> - initial:domain -> + initial:domain -> IR.Procdesc.t -> - domain option

    compute and return the postcondition for the given procedure starting from initial.

    \ No newline at end of file + domain option

    compute and return the postcondition for the given procedure starting from initial.

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html index cd32776e1d6..8e99b38112b 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html index da4101c8c7b..d10bb9a8eb6 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html index 4f10d852d2f..d200dfc78d9 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html index 0b3e7236eb2..c4665303e31 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html index 1511760e9b3..f350f097861 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/index.html index 828aac79290..ca3327e63ae 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/argument-1-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions)

    Parameter MakeAbstractInterpreter.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter.TransferFunctions)

    Parameter MakeAbstractInterpreter.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/index.html index edf0ad0a67c..07b4bc8484b 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-MakeAbstractInterpreter/index.html @@ -1,23 +1,23 @@ -MakeAbstractInterpreter (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter)

    Parameter MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +MakeAbstractInterpreter (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter)

    Parameter MakeAbstractInterpreterWithConfig.MakeAbstractInterpreter

    Parameters

    Signature

    module TransferFunctions = TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-HilConfig/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-HilConfig/index.html index d427fb0c307..3d44cd2ada2 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-HilConfig/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-HilConfig/index.html @@ -1,2 +1,2 @@ -HilConfig (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.HilConfig)

    Parameter MakeAbstractInterpreterWithConfig.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +HilConfig (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.HilConfig)

    Parameter MakeAbstractInterpreterWithConfig.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdMap/index.html index 23243f3bd7b..ee69a8b0993 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdSet/index.html index cfaaff7661d..5c6fe07884b 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/index.html index 56f2fb340e0..c8255e3a946 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/index.html index fb836c6f79d..d1f9b0149e1 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/Domain/index.html index 0ed6e0690af..e7529a2a8e8 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/index.html index a566762e128..0786cfdac66 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions)

    Parameter MakeAbstractInterpreterWithConfig.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig.TransferFunctions)

    Parameter MakeAbstractInterpreterWithConfig.TransferFunctions

    include TransferFunctions.S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/index.html b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/index.html index 75a1bc12ac5..88851ba086b 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/MakeAbstractInterpreterWithConfig/index.html @@ -1,10 +1,10 @@ -MakeAbstractInterpreterWithConfig (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig)

    Module LowerHil.MakeAbstractInterpreterWithConfig

    Wrapper around Interpreter to prevent clients from having to deal with IdAccessPathMapDomain.

    CAVEAT: the translation does not attempt to preserve the semantics in the case where side-effects happen between an assignment to a logical variable and the assignement of that logical variable to a program variable. For instance the following SIL program

        n$0 = *&x.f
    +MakeAbstractInterpreterWithConfig (infer.Absint.LowerHil.MakeAbstractInterpreterWithConfig)

    Module LowerHil.MakeAbstractInterpreterWithConfig

    Wrapper around Interpreter to prevent clients from having to deal with IdAccessPathMapDomain.

    CAVEAT: the translation does not attempt to preserve the semantics in the case where side-effects happen between an assignment to a logical variable and the assignement of that logical variable to a program variable. For instance the following SIL program

        n$0 = *&x.f
         _ = delete(&x)
         *&y = n$0

    becomes

        _ = delete(&x)
    -    *&y = *&x.f

    The latter is a use-after-delete of &x whereas the original SIL program is well behaved.

    Only use HIL if that is not something your checker needs to care about.

    Parameters

    Signature

    module Interpreter = + *&y = *&x.f

    The latter is a use-after-delete of &x whereas the original SIL program is well behaved.

    Only use HIL if that is not something your checker needs to care about.

    Parameters

    Signature

    val compute_post : Interpreter.TransferFunctions.analysis_data -> - initial:domain -> + initial:domain -> IR.Procdesc.t -> - domain option

    compute and return the postcondition for the given procedure starting from initial.

    \ No newline at end of file + domain option

    compute and return the postcondition for the given procedure starting from initial.

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/index.html b/website/static/odoc/next/infer/Absint/LowerHil/index.html index 4c4b21a5061..be13803d134 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/index.html @@ -1,5 +1,5 @@ -LowerHil (infer.Absint.LowerHil)

    Module Absint.LowerHil

    module type HilConfig = sig ... end
    module Make +LowerHil (infer.Absint.LowerHil)

    Module Absint.LowerHil

    module type HilConfig = sig ... end

    Functor for turning HIL transfer functions into SIL transfer functions

    module type S = sig ... end

    Wrapper around Interpreter to prevent clients from having to deal with IdAccessPathMapDomain.

    Simpler version of the above wrapper that uses the default HIL config

    \ No newline at end of file + sig ... end

    Simpler version of the above wrapper that uses the default HIL config

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-HilConfig/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-HilConfig/index.html index 8b723db42d2..a645c7a80cf 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-HilConfig/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-HilConfig/index.html @@ -1,2 +1,2 @@ -HilConfig (infer.Absint.LowerHil.HilConfig)

    Module type LowerHil.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +HilConfig (infer.Absint.LowerHil.HilConfig)

    Module type LowerHil.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html index c3ec63dcf13..c50be09a5fd 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html index 8599537f171..bca4f75e962 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/index.html index 7140769b60c..0b35d84a73d 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/index.html index e8f17f521ff..3a6a357b4e9 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/Domain/index.html index a8157f03d2f..867410c5f13 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.LowerHil.S.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/index.html index 09ab7b524e4..3169adfb72e 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/TransferFunctions/index.html @@ -1,8 +1,8 @@ -TransferFunctions (infer.Absint.LowerHil.S.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +TransferFunctions (infer.Absint.LowerHil.S.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    include TransferFunctions.S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/index.html index 867dd5afe17..37dd4ebf96a 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/Interpreter/index.html @@ -1,23 +1,23 @@ -Interpreter (infer.Absint.LowerHil.S.Interpreter)

    Module S.Interpreter

    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +Interpreter (infer.Absint.LowerHil.S.Interpreter)

    Module S.Interpreter

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/index.html b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/index.html index 6d0c4b100a1..ea11e7fa7a6 100644 --- a/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/LowerHil/module-type-S/index.html @@ -1,6 +1,6 @@ -S (infer.Absint.LowerHil.S)

    Module type LowerHil.S

    type domain
    val compute_post : +S (infer.Absint.LowerHil.S)

    Module type LowerHil.S

    type domain
    val compute_post : Interpreter.TransferFunctions.analysis_data -> - initial:domain -> + initial:domain -> IR.Procdesc.t -> - domain option

    compute and return the postcondition for the given procedure starting from initial.

    \ No newline at end of file + domain option

    compute and return the postcondition for the given procedure starting from initial.

    diff --git a/website/static/odoc/next/infer/Absint/MemoryAccess/index.html b/website/static/odoc/next/infer/Absint/MemoryAccess/index.html index 47c865886be..cb3410280b3 100644 --- a/website/static/odoc/next/infer/Absint/MemoryAccess/index.html +++ b/website/static/odoc/next/infer/Absint/MemoryAccess/index.html @@ -1,5 +1,5 @@ -MemoryAccess (infer.Absint.MemoryAccess)

    Module Absint.MemoryAccess

    module F = Stdlib.Format

    Memory Accesses

    The various kind of possible ways to access memory addresses and values. Can be used for edges in a memory graph representation or to represent values as access paths.

    type ('fieldname, 'array_index) t_ =
    1. | FieldAccess of 'fieldname
    2. | ArrayAccess of IR.Typ.t * 'array_index
    3. | TakeAddress
    4. | Dereference

    for internal use only, prefer using t

    val compare_t_ : +MemoryAccess (infer.Absint.MemoryAccess)

    Module Absint.MemoryAccess

    module F = Stdlib.Format

    Memory Accesses

    The various kind of possible ways to access memory addresses and values. Can be used for edges in a memory graph representation or to represent values as access paths.

    type ('fieldname, 'array_index) t_ =
    1. | FieldAccess of 'fieldname
    2. | ArrayAccess of IR.Typ.t * 'array_index
    3. | TakeAddress
    4. | Dereference

    for internal use only, prefer using t

    val compare_t_ : ('fieldname -> 'fieldname -> int) -> ('array_index -> 'array_index -> int) -> ('fieldname, 'array_index) t_ -> @@ -19,12 +19,8 @@ 'a t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S1 with type 'array_index t := 'array_index t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val yojson_of_t : ('array_index -> Ppx_yojson_conv_lib.Yojson.Safe.t) -> 'array_index t -> - Ppx_yojson_conv_lib.Yojson.Safe.t
    val loose_compare : - ('array_index -> 'array_index -> int) -> - 'array_index t -> - 'array_index t -> - int

    compares field names using Fieldname.compare_name insteado of Fieldname.compare

    val pp : + Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : (F.formatter -> 'array_index -> unit) -> F.formatter -> 'array_index t -> - unit
    val is_field_or_array_access : 'a t -> bool
    \ No newline at end of file + unit
    val is_field_or_array_access : 'a t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/MethodMatcher/index.html b/website/static/odoc/next/infer/Absint/MethodMatcher/index.html index 1b3ef15ce73..e7fa2ce24f7 100644 --- a/website/static/odoc/next/infer/Absint/MethodMatcher/index.html +++ b/website/static/odoc/next/infer/Absint/MethodMatcher/index.html @@ -1,2 +1,2 @@ -MethodMatcher (infer.Absint.MethodMatcher)

    Module Absint.MethodMatcher

    type t = IR.Tenv.t -> IR.Procname.t -> HilExp.t list -> bool

    pattern matcher for Java/C++ methods NB matching is modulo template arguments in C++ classes and functions

    type record = {
    1. search_superclasses : bool;
    2. method_prefix : bool;
    3. actuals_pred : HilExp.t list -> bool;
    4. classname : string;
    5. methods : string list;
    }
    val default : record

    record encapsulating the default arguments of call_matches. classname="" and methods=[]. Useful for with expressions

    val of_record : record -> t

    make a matcher out of a record; optional values use defaults

    val of_json : Yojson.Safe.t -> t

    Parse a JSon object into a matcher. The Json object must be a list of records, each corresponding to a single matcher. Each record must have a "classname" field with a string value, and a "methods" field with a list of strings. The record may also have boolean fields "search_superclasses" and "method_prefix". If absent, the defaults are used. The resulting matcher matches if one of the matchers in the list does.

    val of_list : t list -> t

    Or combinator

    val of_records : record list -> t

    shorthand for of_list (List.map ~f:of_record r)

    \ No newline at end of file +MethodMatcher (infer.Absint.MethodMatcher)

    Module Absint.MethodMatcher

    type t = IR.Tenv.t -> IR.Procname.t -> HilExp.t list -> bool

    pattern matcher for Java/C++ methods NB matching is modulo template arguments in C++ classes and functions

    type record = {
    1. search_superclasses : bool;
    2. method_prefix : bool;
    3. actuals_pred : HilExp.t list -> bool;
    4. classname : string;
    5. methods : string list;
    }
    val default : record

    record encapsulating the default arguments of call_matches. classname="" and methods=[]. Useful for with expressions

    val of_record : record -> t

    make a matcher out of a record; optional values use defaults

    val of_json : Yojson.Safe.t -> t

    Parse a JSon object into a matcher. The Json object must be a list of records, each corresponding to a single matcher. Each record must have a "classname" field with a string value, and a "methods" field with a list of strings. The record may also have boolean fields "search_superclasses" and "method_prefix". If absent, the defaults are used. The resulting matcher matches if one of the matchers in the list does.

    val of_list : t list -> t

    Or combinator

    val of_records : record list -> t

    shorthand for of_list (List.map ~f:of_record r)

    diff --git a/website/static/odoc/next/infer/Absint/Mleak_buckets/index.html b/website/static/odoc/next/infer/Absint/Mleak_buckets/index.html index 5d05597021a..2de88501109 100644 --- a/website/static/odoc/next/infer/Absint/Mleak_buckets/index.html +++ b/website/static/odoc/next/infer/Absint/Mleak_buckets/index.html @@ -1,2 +1,2 @@ -Mleak_buckets (infer.Absint.Mleak_buckets)

    Module Absint.Mleak_buckets

    This module handles buckets of memory leaks

    val should_raise_cpp_leak : string option
    val should_raise_leak_unknown_origin : bool
    val ml_bucket_unknown_origin : string
    \ No newline at end of file +Mleak_buckets (infer.Absint.Mleak_buckets)

    Module Absint.Mleak_buckets

    This module handles buckets of memory leaks

    val should_raise_cpp_leak : string option
    val should_raise_leak_unknown_origin : bool
    val ml_bucket_unknown_origin : string
    diff --git a/website/static/odoc/next/infer/Absint/NoReturnModels/index.html b/website/static/odoc/next/infer/Absint/NoReturnModels/index.html index 48c9065bc32..a761751cb31 100644 --- a/website/static/odoc/next/infer/Absint/NoReturnModels/index.html +++ b/website/static/odoc/next/infer/Absint/NoReturnModels/index.html @@ -1,2 +1,2 @@ -NoReturnModels (infer.Absint.NoReturnModels)

    Module Absint.NoReturnModels

    val no_return : bool
    \ No newline at end of file +NoReturnModels (infer.Absint.NoReturnModels)

    Module Absint.NoReturnModels

    val no_return : bool
    diff --git a/website/static/odoc/next/infer/Absint/NullsafeMode/index.html b/website/static/odoc/next/infer/Absint/NullsafeMode/index.html index 258288cab0d..3f467586ff0 100644 --- a/website/static/odoc/next/infer/Absint/NullsafeMode/index.html +++ b/website/static/odoc/next/infer/Absint/NullsafeMode/index.html @@ -1,2 +1,2 @@ -NullsafeMode (infer.Absint.NullsafeMode)

    Module Absint.NullsafeMode

    type t =
    1. | Default
    2. | Local
    3. | Strict
    val of_java_procname : IR.Tenv.t -> IR.Procname.Java.t -> t
    \ No newline at end of file +NullsafeMode (infer.Absint.NullsafeMode)

    Module Absint.NullsafeMode

    type t =
    1. | Default
    2. | Local
    3. | Strict
    val of_java_procname : IR.Tenv.t -> IR.Procname.Java.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/Passthrough/Set/index.html b/website/static/odoc/next/infer/Absint/Passthrough/Set/index.html index 9864ef8c9cb..d665eb64d92 100644 --- a/website/static/odoc/next/infer/Absint/Passthrough/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Passthrough/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Passthrough.Set)

    Module Passthrough.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Passthrough.Set)

    Module Passthrough.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Passthrough/index.html b/website/static/odoc/next/infer/Absint/Passthrough/index.html index d29c14506bd..992430691a5 100644 --- a/website/static/odoc/next/infer/Absint/Passthrough/index.html +++ b/website/static/odoc/next/infer/Absint/Passthrough/index.html @@ -1,2 +1,2 @@ -Passthrough (infer.Absint.Passthrough)

    Module Absint.Passthrough

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make : CallSite.t -> t
    val site : t -> CallSite.t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +Passthrough (infer.Absint.Passthrough)

    Module Absint.Passthrough

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make : CallSite.t -> t
    val site : t -> CallSite.t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/Absint/PatternMatch/CSharp/index.html b/website/static/odoc/next/infer/Absint/PatternMatch/CSharp/index.html index cbfab745fce..3346411ab7e 100644 --- a/website/static/odoc/next/infer/Absint/PatternMatch/CSharp/index.html +++ b/website/static/odoc/next/infer/Absint/PatternMatch/CSharp/index.html @@ -1,2 +1,2 @@ -CSharp (infer.Absint.PatternMatch.CSharp)

    Module PatternMatch.CSharp

    val implements : string -> IR.Tenv.t -> string -> bool
    val implements_one_of : string list -> IR.Tenv.t -> string -> bool
    \ No newline at end of file +CSharp (infer.Absint.PatternMatch.CSharp)

    Module PatternMatch.CSharp

    val implements : string -> IR.Tenv.t -> string -> bool
    val implements_one_of : string list -> IR.Tenv.t -> string -> bool
    diff --git a/website/static/odoc/next/infer/Absint/PatternMatch/Java/index.html b/website/static/odoc/next/infer/Absint/PatternMatch/Java/index.html index 7447273a401..92d0edad04a 100644 --- a/website/static/odoc/next/infer/Absint/PatternMatch/Java/index.html +++ b/website/static/odoc/next/infer/Absint/PatternMatch/Java/index.html @@ -1,5 +1,5 @@ -Java (infer.Absint.PatternMatch.Java)

    Module PatternMatch.Java

    val implements : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a given Java class

    val implements_one_of : string list -> IR.Tenv.t -> string -> bool

    Check whether class implements at least one of the given Java classes

    val implements_android : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Android

    val implements_androidx_map : IR.Tenv.t -> string -> bool

    Check whether class implements a AndroidX's Map

    val implements_app_activity : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.app.Activity

    val implements_app_fragment : IR.Tenv.t -> string -> bool

    Check whether class implements a class of androidx.fragment.app.Fragment

    val implements_arrays : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Arrays

    val implements_collection : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Collection

    val implements_collections : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Collections

    val implements_enumeration : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Enumeration

    val implements_google : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Google

    val implements_graphql_story : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.facebook.graphql.model.GraphQLStory

    val implements_infer_annotation : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Infer annotation

    val implements_inject : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Javax Inject

    val implements_io : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java IO

    val implements_iterable : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Iterable

    val implements_iterator : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Iterator

    val implements_jackson : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class from Jackson

    val implements_kotlin_intrinsics : IR.Tenv.t -> string -> bool

    Check whether class implements kotlin.jvm.internal.Intrinsics

    val implements_lang : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java's lang

    val implements_list : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's list

    val implements_map : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Map

    val implements_map_entry : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Map$Entry

    val implements_math : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Math

    val implements_nio : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java nio

    val implements_number : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Number

    val implements_org_json : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class from Json

    val implements_pseudo_collection : IR.Tenv.t -> string -> bool

    Check whether class implements a pseudo Collection with support for get() and size() methods

    val implements_psi_element : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.intellij.psi.PsiElement

    val implements_queue : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Queue

    val implements_regex : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of java.util.regex

    val implements_set : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Set

    val implements_sparse_float_array : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.facebook.litho.internal.SparseFloatArray

    val implements_system : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's System

    val implements_view_group : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.view.ViewGroup

    val implements_view_parent : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.view.ViewParent

    val implements_xmob_utils : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of xmod.utils

    val is_throwable : IR.Tenv.t -> IR.Typ.Name.t -> bool

    is_throwable tenv class_name checks if class_name is of type java.lang.Throwable

    val is_enum : IR.Tenv.t -> IR.Typ.Name.t -> bool

    Checks if the type is Java enum (extends java.lang.Enum)

    val check_class_attributes : +Java (infer.Absint.PatternMatch.Java)

    Module PatternMatch.Java

    val implements : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a given Java class

    val implements_one_of : string list -> IR.Tenv.t -> string -> bool

    Check whether class implements at least one of the given Java classes

    val implements_android : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Android

    val implements_androidx_map : IR.Tenv.t -> string -> bool

    Check whether class implements a AndroidX's Map

    val implements_app_activity : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.app.Activity

    val implements_app_fragment : IR.Tenv.t -> string -> bool

    Check whether class implements a class of androidx.fragment.app.Fragment

    val implements_arrays : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Arrays

    val implements_collection : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Collection

    val implements_collections : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Collections

    val implements_enumeration : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Enumeration

    val implements_google : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Google

    val implements_graphql_story : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.facebook.graphql.model.GraphQLStory

    val implements_infer_annotation : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of Infer annotation

    val implements_inject : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Javax Inject

    val implements_io : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java IO

    val implements_iterable : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Iterable

    val implements_iterator : IR.Tenv.t -> string -> bool

    Check whether class implements Java's Iterator

    val implements_jackson : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class from Jackson

    val implements_kotlin_intrinsics : IR.Tenv.t -> string -> bool

    Check whether class implements kotlin.jvm.internal.Intrinsics

    val implements_lang : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java's lang

    val implements_list : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's list

    val implements_map : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Map

    val implements_map_entry : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Map$Entry

    val implements_math : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Math

    val implements_nio : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a Java nio

    val implements_number : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Number

    val implements_org_json : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class from Json

    val implements_pseudo_collection : IR.Tenv.t -> string -> bool

    Check whether class implements a pseudo Collection with support for get() and size() methods

    val implements_psi_element : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.intellij.psi.PsiElement

    val implements_queue : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Queue

    val implements_regex : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of java.util.regex

    val implements_set : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's Set

    val implements_sparse_float_array : IR.Tenv.t -> string -> bool

    Check whether class implements a class of com.facebook.litho.internal.SparseFloatArray

    val implements_system : IR.Tenv.t -> string -> bool

    Check whether class implements a Java's System

    val implements_view_group : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.view.ViewGroup

    val implements_view_parent : IR.Tenv.t -> string -> bool

    Check whether class implements a class of android.view.ViewParent

    val implements_xmob_utils : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a class of xmod.utils

    val is_throwable : IR.Tenv.t -> IR.Typ.Name.t -> bool

    is_throwable tenv class_name checks if class_name is of type java.lang.Throwable

    val is_enum : IR.Tenv.t -> IR.Typ.Name.t -> bool

    Checks if the type is Java enum (extends java.lang.Enum)

    val check_class_attributes : (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> @@ -11,4 +11,4 @@ (IR.Annot.Item.t -> bool) -> IR.Tenv.t -> IR.Typ.Name.t -> - IR.Typ.Name.t list

    find superclasss with attributes (e.g., @ThreadSafe), including current class

    \ No newline at end of file + IR.Typ.Name.t list

    find superclasss with attributes (e.g., @ThreadSafe), including current class

    diff --git a/website/static/odoc/next/infer/Absint/PatternMatch/ObjectiveC/index.html b/website/static/odoc/next/infer/Absint/PatternMatch/ObjectiveC/index.html index 491545f594a..47175b9d742 100644 --- a/website/static/odoc/next/infer/Absint/PatternMatch/ObjectiveC/index.html +++ b/website/static/odoc/next/infer/Absint/PatternMatch/ObjectiveC/index.html @@ -1,2 +1,2 @@ -ObjectiveC (infer.Absint.PatternMatch.ObjectiveC)

    Module PatternMatch.ObjectiveC

    val implements : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a given ObjC class

    val implements_ns_string_variants : IR.Tenv.t -> string -> bool

    Check whether class implements NSString or NSAttributedString

    val conforms_to : protocol:string -> IR.Tenv.t -> string -> bool

    Check whether class conforms to a given ObjC protocol

    val implements_collection : IR.Tenv.t -> string -> bool
    val is_core_graphics_create_or_copy : IR.Tenv.t -> string -> bool
    val is_core_foundation_create_or_copy : IR.Tenv.t -> string -> bool
    val is_core_graphics_release : IR.Tenv.t -> string -> bool
    \ No newline at end of file +ObjectiveC (infer.Absint.PatternMatch.ObjectiveC)

    Module PatternMatch.ObjectiveC

    val implements : string -> IR.Tenv.t -> string -> bool

    Check whether class implements a given ObjC class

    val implements_ns_string_variants : IR.Tenv.t -> string -> bool

    Check whether class implements NSString or NSAttributedString

    val conforms_to : protocol:string -> IR.Tenv.t -> string -> bool

    Check whether class conforms to a given ObjC protocol

    val implements_collection : IR.Tenv.t -> string -> bool
    val is_core_graphics_create_or_copy : IR.Tenv.t -> string -> bool
    val is_core_foundation_create_or_copy : IR.Tenv.t -> string -> bool
    val is_core_graphics_release : IR.Tenv.t -> string -> bool
    diff --git a/website/static/odoc/next/infer/Absint/PatternMatch/index.html b/website/static/odoc/next/infer/Absint/PatternMatch/index.html index a3a431a8cd1..27f95c4be93 100644 --- a/website/static/odoc/next/infer/Absint/PatternMatch/index.html +++ b/website/static/odoc/next/infer/Absint/PatternMatch/index.html @@ -1,5 +1,5 @@ -PatternMatch (infer.Absint.PatternMatch)

    Module Absint.PatternMatch

    Module for Pattern matching.

    val get_this_type_nonstatic_methods_only : +PatternMatch (infer.Absint.PatternMatch)

    Module Absint.PatternMatch

    Module for Pattern matching.

    val get_this_type_nonstatic_methods_only : IR.ProcAttributes.t -> IR.Typ.t option

    Get the `this` type of a procedure. Should not be called on non-static methods, otherwise it can return a wrong type

    val get_type_name : IR.Typ.t -> string

    Get the name of a type

    val get_vararg_type_names : IR.Tenv.t -> @@ -14,11 +14,16 @@ (IR.Typ.Name.t -> 'a option) -> IR.Typ.Name.t -> 'a option

    Return the first non-None result found when applying the given function to supertypes of the named type, including the type itself

    val override_exists : - ?check_current_type:bool -> + ?check_current_type:bool -> (IR.Procname.t -> bool) -> IR.Tenv.t -> IR.Procname.t -> - bool

    Return true if applying the given predicate to an override of procname (including procname itself when check_current_type is true, which it is by default) returns true.

    val override_iter : + bool

    Return true if applying the given predicate to an override of procname (including procname itself when check_current_type is true, which it is by default) returns true.

    val override_find : + ?check_current_type:bool -> + (IR.Procname.t -> bool) -> + IR.Tenv.t -> + IR.Procname.t -> + IR.Procname.t option

    Check if the given predicate to an override of procname (including procname itself when check_current_type is true, which it is by default) returns true. If yes, return the name of the override.

    val override_iter : (IR.Procname.t -> unit) -> IR.Tenv.t -> IR.Procname.t -> @@ -27,4 +32,4 @@ IR.Typ.name -> IR.Annot.Item.t option
    val type_get_annotation : IR.Tenv.t -> IR.Typ.t -> IR.Annot.Item.t option
    val type_is_class : IR.Typ.t -> bool

    Is the type a class type

    val get_fields_nullified : IR.Procdesc.t -> IR.Fieldname.Set.t

    return the set of instance fields that are assigned to a null literal in procdesc

    val has_same_signature : IR.Procname.t -> - (IR.Procname.t -> bool) IStdlib.IStd.Staged.t

    For a given procname checks if the method has the same method name, number, order and types of parameters.)

    module ObjectiveC : sig ... end
    val is_entry_point : IR.Procname.t -> bool

    Does the function name correspond to a known entry point? Currently only matches "main"

    \ No newline at end of file + (IR.Procname.t -> bool) IStdlib.IStd.Staged.t

    For a given procname checks if the method has the same method name, number, order and types of parameters.)

    module ObjectiveC : sig ... end
    val is_entry_point : IR.Procname.t -> bool

    Does the function name correspond to a known entry point? Currently only matches "main"

    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdMap/index.html index 671a23d791f..83f2cdba668 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.Backward.Base.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.Backward.Base.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdSet/index.html index 96dc40dda08..f430a8a89ae 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.Backward.Base.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.Backward.Base.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/index.html index 27bf8bf8bf9..8fc333fbff1 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.ProcCfg.Backward.Base.Node)

    Module Base.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    \ No newline at end of file +Node (infer.Absint.ProcCfg.Backward.Base.Node)

    Module Base.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/index.html index 4c663f6426a..7dfda9332fc 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/argument-1-Base/index.html @@ -1,5 +1,5 @@ -Base (infer.Absint.ProcCfg.Backward.Base)

    Parameter Backward.Base

    type t
    type instrs_dir = IR.Instrs.not_reversed
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Base (infer.Absint.ProcCfg.Backward.Base)

    Parameter Backward.Base

    type t
    type instrs_dir = IR.Instrs.not_reversed
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/index.html index 11ced50b102..faf38a7ad1a 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Backward/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Backward/index.html @@ -1,5 +1,5 @@ -Backward (infer.Absint.ProcCfg.Backward)

    Module ProcCfg.Backward

    Wrapper that reverses the direction of the CFG

    Parameters

    Signature

    type t = Base.t
    type instrs_dir = IR.Instrs.reversed
    module Node = Base.Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Backward (infer.Absint.ProcCfg.Backward)

    Module ProcCfg.Backward

    Wrapper that reverses the direction of the CFG

    Parameters

    Signature

    type t = Base.t
    type instrs_dir = IR.Instrs.reversed
    module Node = Base.Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdMap/index.html index 749fac7b4fc..ae6b720dbff 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.DefaultNode.IdMap)

    Module DefaultNode.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.DefaultNode.IdMap)

    Module DefaultNode.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdSet/index.html index a51cba65845..7ecd8d2c879 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.DefaultNode.IdSet)

    Module DefaultNode.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.DefaultNode.IdSet)

    Module DefaultNode.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/index.html index 242409064ae..d521ddde62b 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/DefaultNode/index.html @@ -1,4 +1,4 @@ -DefaultNode (infer.Absint.ProcCfg.DefaultNode)

    Module ProcCfg.DefaultNode

    include NodeCommonS +DefaultNode (infer.Absint.ProcCfg.DefaultNode)

    Module ProcCfg.DefaultNode

    include NodeCommonS with type t = IR.Procdesc.Node.t - with type id = IR.Procdesc.Node.id
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    \ No newline at end of file + with type id = IR.Procdesc.Node.id
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Exceptional/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Exceptional/index.html index cf0aab9cadd..d5a00b9719a 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Exceptional/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Exceptional/index.html @@ -1,5 +1,5 @@ -Exceptional (infer.Absint.ProcCfg.Exceptional)

    Module ProcCfg.Exceptional

    Forward CFG with exceptional control-flow

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Exceptional (infer.Absint.ProcCfg.Exceptional)

    Module ProcCfg.Exceptional

    Forward CFG with exceptional control-flow

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/ExceptionalNoSinkToExitEdge/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/ExceptionalNoSinkToExitEdge/index.html index cdf11b55911..2f5aded7c2f 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/ExceptionalNoSinkToExitEdge/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/ExceptionalNoSinkToExitEdge/index.html @@ -1,5 +1,5 @@ -ExceptionalNoSinkToExitEdge (infer.Absint.ProcCfg.ExceptionalNoSinkToExitEdge)

    Module ProcCfg.ExceptionalNoSinkToExitEdge

    Forward CFG with exceptional control-flow, but no edge from exceptions sink to exit node.

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +ExceptionalNoSinkToExitEdge (infer.Absint.ProcCfg.ExceptionalNoSinkToExitEdge)

    Module ProcCfg.ExceptionalNoSinkToExitEdge

    Forward CFG with exceptional control-flow, but no edge from exceptions sink to exit node.

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdMap/index.html index 348b1bebffc..415f4b92cc7 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.InstrNode.IdMap)

    Module InstrNode.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.InstrNode.IdMap)

    Module InstrNode.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdSet/index.html index 00e03c0cb06..4c80e031adf 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.InstrNode.IdSet)

    Module InstrNode.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.InstrNode.IdSet)

    Module InstrNode.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/index.html index e6475cced8e..8f30d599e4e 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/InstrNode/index.html @@ -1,4 +1,4 @@ -InstrNode (infer.Absint.ProcCfg.InstrNode)

    Module ProcCfg.InstrNode

    type instr_index = int
    include NodeCommonS +InstrNode (infer.Absint.ProcCfg.InstrNode)

    Module ProcCfg.InstrNode

    type instr_index = int
    include NodeCommonS with type t = IR.Procdesc.Node.t * instr_index - and type id = IR.Procdesc.Node.id * instr_index
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    \ No newline at end of file + and type id = IR.Procdesc.Node.id * instr_index
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/V/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/V/index.html index 200b4d6d5fa..59fee99ba92 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/V/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/V/index.html @@ -1,2 +1,2 @@ -V (infer.Absint.ProcCfg.MakeOcamlGraph.V)

    Module MakeOcamlGraph.V

    type t = Base.Node.t
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val hash : t -> int
    \ No newline at end of file +V (infer.Absint.ProcCfg.MakeOcamlGraph.V)

    Module MakeOcamlGraph.V

    type t = Base.Node.t
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val hash : t -> int
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdMap/index.html index bca60b33a05..a50ae00cce0 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdSet/index.html index 3e81767f3df..270d593c267 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/index.html index 208af80980d..697d84fdc85 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node)

    Module Base.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    \ No newline at end of file +Node (infer.Absint.ProcCfg.MakeOcamlGraph.Base.Node)

    Module Base.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/index.html index c344ca472cd..fbcdd076303 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/argument-1-Base/index.html @@ -1,5 +1,5 @@ -Base (infer.Absint.ProcCfg.MakeOcamlGraph.Base)

    Parameter MakeOcamlGraph.Base

    type t
    type instrs_dir
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Base (infer.Absint.ProcCfg.MakeOcamlGraph.Base)

    Parameter MakeOcamlGraph.Base

    type t
    type instrs_dir
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/index.html index 67f353ea529..20294cc4393 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/MakeOcamlGraph/index.html @@ -1,2 +1,2 @@ -MakeOcamlGraph (infer.Absint.ProcCfg.MakeOcamlGraph)

    Module ProcCfg.MakeOcamlGraph

    Parameters

    module Base : S

    Signature

    type t = Base.t
    module V : sig ... end
    val pred : t -> Base.Node.t -> Base.Node.t list
    val succ : t -> Base.Node.t -> Base.Node.t list
    val fold_vertex : (Base.Node.t -> 'a -> 'a) -> t -> 'a -> 'a
    val iter_vertex : (Base.Node.t -> unit) -> t -> unit
    val iter_succ : (Base.Node.t -> unit) -> t -> Base.Node.t -> unit
    val nb_vertex : t -> int
    \ No newline at end of file +MakeOcamlGraph (infer.Absint.ProcCfg.MakeOcamlGraph)

    Module ProcCfg.MakeOcamlGraph

    Parameters

    module Base : S

    Signature

    type t = Base.t
    module V : sig ... end
    val pred : t -> Base.Node.t -> Base.Node.t list
    val succ : t -> Base.Node.t -> Base.Node.t list
    val fold_vertex : (Base.Node.t -> 'a -> 'a) -> t -> 'a -> 'a
    val iter_vertex : (Base.Node.t -> unit) -> t -> unit
    val iter_succ : (Base.Node.t -> unit) -> t -> Base.Node.t -> unit
    val nb_vertex : t -> int
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/Normal/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/Normal/index.html index c9b15b9faca..d382fb269ec 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/Normal/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/Normal/index.html @@ -1,5 +1,5 @@ -Normal (infer.Absint.ProcCfg.Normal)

    Module ProcCfg.Normal

    Forward CFG with no exceptional control-flow

    type t = IR.Procdesc.t
    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Normal (infer.Absint.ProcCfg.Normal)

    Module ProcCfg.Normal

    Forward CFG with no exceptional control-flow

    type t = IR.Procdesc.t
    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html index 437e22739a4..120361b9c16 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a InstrNode.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a InstrNode.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html index 9133d1d9bd0..3148d83cf3b 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/index.html index 9384a60a26b..bb76c7d9ce4 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node)

    Module NormalOneInstrPerNode.Node

    type instr_index = int
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    \ No newline at end of file +Node (infer.Absint.ProcCfg.NormalOneInstrPerNode.Node)

    Module NormalOneInstrPerNode.Node

    type instr_index = int
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/index.html index 996bf1cf021..414520b6669 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/NormalOneInstrPerNode/index.html @@ -1,5 +1,5 @@ -NormalOneInstrPerNode (infer.Absint.ProcCfg.NormalOneInstrPerNode)

    Module ProcCfg.NormalOneInstrPerNode

    type t = Normal.t
    type instrs_dir = IR.Instrs.not_reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +NormalOneInstrPerNode (infer.Absint.ProcCfg.NormalOneInstrPerNode)

    Module ProcCfg.NormalOneInstrPerNode

    type t = Normal.t
    type instrs_dir = IR.Instrs.not_reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/argument-1-Base/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/argument-1-Base/index.html index 3627375a04b..73fe226c1c8 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/argument-1-Base/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/argument-1-Base/index.html @@ -1,5 +1,5 @@ -Base (infer.Absint.ProcCfg.OneInstrPerNode.Base)

    Parameter OneInstrPerNode.Base

    type t
    type instrs_dir
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +Base (infer.Absint.ProcCfg.OneInstrPerNode.Base)

    Parameter OneInstrPerNode.Base

    type t
    type instrs_dir
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/index.html index 571e162fab4..87ed785f1e6 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/OneInstrPerNode/index.html @@ -1,5 +1,5 @@ -OneInstrPerNode (infer.Absint.ProcCfg.OneInstrPerNode)

    Module ProcCfg.OneInstrPerNode

    Parameters

    module Base : S with module Node = DefaultNode

    Signature

    include S +OneInstrPerNode (infer.Absint.ProcCfg.OneInstrPerNode)

    Module ProcCfg.OneInstrPerNode

    Parameters

    module Base : S with module Node = DefaultNode

    Signature

    include S with type t = Base.t and module Node = InstrNode and type instrs_dir = IR.Instrs.not_reversed
    type t = Base.t
    type instrs_dir = IR.Instrs.not_reversed
    module Node = InstrNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : @@ -10,4 +10,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/index.html index b1a521beaa6..8a302202998 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/index.html @@ -1,5 +1,5 @@ -ProcCfg (infer.Absint.ProcCfg)

    Module Absint.ProcCfg

    Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block

    module type NodeCommonS = sig ... end
    module InstrNode : sig ... end
    module type Node = sig ... end
    module type S = sig ... end
    module DefaultNode : +ProcCfg (infer.Absint.ProcCfg)

    Module Absint.ProcCfg

    Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block

    module type NodeCommonS = sig ... end
    module InstrNode : sig ... end
    module type Node = sig ... end
    module type S = sig ... end
    module DefaultNode : Node with type t = IR.Procdesc.Node.t and type id = IR.Procdesc.Node.id
    module Normal : S with type t = IR.Procdesc.t @@ -13,4 +13,4 @@ S with type t = Base.t and module Node = Base.Node - and type instrs_dir = IR.Instrs.reversed

    Wrapper that reverses the direction of the CFG

    module OneInstrPerNode (Base : S with module Node = DefaultNode) : sig ... end
    module NormalOneInstrPerNode : sig ... end
    module MakeOcamlGraph (Base : S) : sig ... end
    \ No newline at end of file + and type instrs_dir = IR.Instrs.reversed

    Wrapper that reverses the direction of the CFG

    module OneInstrPerNode (Base : S with module Node = DefaultNode) : sig ... end
    module NormalOneInstrPerNode : sig ... end
    module MakeOcamlGraph (Base : S) : sig ... end
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-ExceptionalS/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-ExceptionalS/index.html index 8a56054b960..4149d9c5f9b 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-ExceptionalS/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-ExceptionalS/index.html @@ -1,5 +1,5 @@ -ExceptionalS (infer.Absint.ProcCfg.ExceptionalS)

    Module type ProcCfg.ExceptionalS

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +ExceptionalS (infer.Absint.ProcCfg.ExceptionalS)

    Module type ProcCfg.ExceptionalS

    type instrs_dir = IR.Instrs.not_reversed
    module Node = DefaultNode
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdMap/index.html index eecbf8cf02e..36313ed3ead 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdSet/index.html index b206c343685..b8f83f3d964 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/index.html index b380af80d05..d8ecdc1c500 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.ProcCfg.Node)

    Module type ProcCfg.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    \ No newline at end of file +Node (infer.Absint.ProcCfg.Node)

    Module type ProcCfg.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdMap/index.html index 09a42fc7adb..5d3c658982c 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.NodeCommonS.IdMap)

    Module NodeCommonS.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.NodeCommonS.IdMap)

    Module NodeCommonS.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdSet/index.html index 1aeb9586cfe..c2f6b6d1e55 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.NodeCommonS.IdSet)

    Module NodeCommonS.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.NodeCommonS.IdSet)

    Module NodeCommonS.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/index.html index b53721b6ea1..1dc614b73d4 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-NodeCommonS/index.html @@ -1,2 +1,2 @@ -NodeCommonS (infer.Absint.ProcCfg.NodeCommonS)

    Module type ProcCfg.NodeCommonS

    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +NodeCommonS (infer.Absint.ProcCfg.NodeCommonS)

    Module type ProcCfg.NodeCommonS

    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdMap/index.html index 10753e49fa5..4499590aac2 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.ProcCfg.S.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.ProcCfg.S.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdSet/index.html index b83bfd23e19..e9327f748a5 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.ProcCfg.S.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.ProcCfg.S.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/index.html index 1cf6b8599f5..67b3cbed9bf 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.ProcCfg.S.Node)

    Module S.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    \ No newline at end of file +Node (infer.Absint.ProcCfg.S.Node)

    Module S.Node

    include NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : InstrNode.instr_index -> t -> InstrNode.t
    diff --git a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/index.html b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/index.html index 185c5117654..246946518c8 100644 --- a/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/ProcCfg/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Absint.ProcCfg.S)

    Module type ProcCfg.S

    type t
    type instrs_dir
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +S (infer.Absint.ProcCfg.S)

    Module type ProcCfg.S

    type t
    type instrs_dir
    module Node : Node
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/FuncArg/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/FuncArg/index.html index b8cdc1f391e..c816aab5ffb 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/FuncArg/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/FuncArg/index.html @@ -1,5 +1,5 @@ -FuncArg (infer.Absint.ProcnameDispatcher.Call.FuncArg)

    Module Call.FuncArg

    Little abstraction over arguments: currently actual args, we'll want formal args later

    type 'arg_payload t = {
    1. exp : IR.Exp.t;
    2. typ : IR.Typ.t;
    3. arg_payload : 'arg_payload;
    }
    val map_payload : - f:('arg_payload -> 'arg_payload') -> +FuncArg (infer.Absint.ProcnameDispatcher.Call.FuncArg)

    Module Call.FuncArg

    Little abstraction over arguments: currently actual args, we'll want formal args later

    type 'arg_payload t = {
    1. exp : IR.Exp.t;
    2. typ : IR.Typ.t;
    3. arg_payload : 'arg_payload;
    }
    val map_payload : + f:('arg_payload -> 'arg_payload') -> 'arg_payload t -> - 'arg_payload' t
    \ No newline at end of file + 'arg_payload' t
    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/index.html index 7fa13f9bdd8..5e9a9687300 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/Call/index.html @@ -1,5 +1,5 @@ -Call (infer.Absint.ProcnameDispatcher.Call)

    Module ProcnameDispatcher.Call

    module FuncArg : sig ... end

    Little abstraction over arguments: currently actual args, we'll want formal args later

    include Common +Call (infer.Absint.ProcnameDispatcher.Call)

    Module ProcnameDispatcher.Call

    module FuncArg : sig ... end

    Little abstraction over arguments: currently actual args, we'll want formal args later

    include Common with type ('context, 'f, 'arg_payload) dispatcher = 'context -> IR.Procname.t -> @@ -12,7 +12,7 @@ ('context, 'f, 'arg_payload) matcher list -> ('context, 'f, 'arg_payload) dispatcher

    Combines matchers to create a dispatcher

    val map_matcher : ('context, 'f1, 'arg_payload) matcher -> - f:('f1 -> 'f2) -> + f:('f1 -> 'f2) -> ('context, 'f2, 'arg_payload) matcher
    val any_typ : ('f, 'f, accept_more) template_arg

    Eats a type

    val capt_typ : (IR.Typ.t -> 'f, 'f, accept_more) template_arg

    Captures a type

    val capt_int : (IStdlib.IStd.Int64.t -> 'f, 'f, accept_more) template_arg

    Captures an int

    val capt_all : (IR.Typ.template_arg list -> 'f, 'f, end_of_list) template_arg

    Captures all template args

    val (~-) : string -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a name

    val (~+) : ('context -> string -> bool) -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a matching name that satisfies the given function

    val startsWith : string -> 'context -> string -> bool
    val endsWith : string -> 'context -> string -> bool
    val (&+) : @@ -44,7 +44,7 @@ ('context, 'f, 'arg_payload) dispatcher -> ('context, 'f, 'arg_payload) dispatcher

    Merges two dispatchers into a dispatcher

    val contramap_arg_payload : ('context, 'f, 'unwrapped_payload) matcher -> - f:('wrapped_payload -> 'unwrapped_payload) -> + f:('wrapped_payload -> 'unwrapped_payload) -> ('context, 'f, 'wrapped_payload) matcher
    type ('context, 'f_in, 'f_proc_out, 'f_out, 'arg_payload) args_matcher
    type ('context, 'arg_in, 'arg_out, 'f_in, 'f_out, 'arg_payload) one_arg
    val any_arg : ('context, unit, _, 'f, 'f, 'arg_payload) one_arg

    Eats one arg

    val capt_arg : ('context, 'arg_payload FuncArg.t, @@ -164,4 +164,4 @@ ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), captures ALL function arguments as a list, binds the function

    val ($!-->) : ('context, 'f_in, 'f_proc_out, 'f_out, 'arg_payload) args_matcher -> 'f_in -> - ('context, 'f_out, 'arg_payload) matcher

    Ends function arguments, accepts NO more function arguments. If the args do not match, raise an internal error.

    \ No newline at end of file + ('context, 'f_out, 'arg_payload) matcher

    Ends function arguments, accepts NO more function arguments. If the args do not match, raise an internal error.

    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/ProcName/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/ProcName/index.html index 87fa402079f..358855a24a5 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/ProcName/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/ProcName/index.html @@ -1,5 +1,5 @@ -ProcName (infer.Absint.ProcnameDispatcher.ProcName)

    Module ProcnameDispatcher.ProcName

    include Common +ProcName (infer.Absint.ProcnameDispatcher.ProcName)

    Module ProcnameDispatcher.ProcName

    include Common with type ('context, 'f, 'arg_payload) dispatcher = 'context -> IR.Procname.t -> @@ -10,7 +10,7 @@ ('context, 'f, 'arg_payload) matcher list -> ('context, 'f, 'arg_payload) dispatcher

    Combines matchers to create a dispatcher

    val map_matcher : ('context, 'f1, 'arg_payload) matcher -> - f:('f1 -> 'f2) -> + f:('f1 -> 'f2) -> ('context, 'f2, 'arg_payload) matcher
    val any_typ : ('f, 'f, accept_more) template_arg

    Eats a type

    val capt_typ : (IR.Typ.t -> 'f, 'f, accept_more) template_arg

    Captures a type

    val capt_int : (IStdlib.IStd.Int64.t -> 'f, 'f, accept_more) template_arg

    Captures an int

    val capt_all : (IR.Typ.template_arg list -> 'f, 'f, end_of_list) template_arg

    Captures all template args

    val (~-) : string -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a name

    val (~+) : ('context -> string -> bool) -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a matching name that satisfies the given function

    val startsWith : string -> 'context -> string -> bool
    val endsWith : string -> 'context -> string -> bool
    val (&+) : @@ -52,4 +52,4 @@ ('context, 'f_out, 'arg_payload) matcher
    val (&::.*-->) : ('context, 'f_in, 'f_out, 'arg_payload) name_matcher -> 'f_in -> - ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    \ No newline at end of file + ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/TypName/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/TypName/index.html index 6f84510d950..66b56c0d82e 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/TypName/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/TypName/index.html @@ -1,5 +1,5 @@ -TypName (infer.Absint.ProcnameDispatcher.TypName)

    Module ProcnameDispatcher.TypName

    include Common +TypName (infer.Absint.ProcnameDispatcher.TypName)

    Module ProcnameDispatcher.TypName

    include Common with type ('context, 'f, 'arg_payload) dispatcher = 'context -> IR.Typ.name -> @@ -10,7 +10,7 @@ ('context, 'f, 'arg_payload) matcher list -> ('context, 'f, 'arg_payload) dispatcher

    Combines matchers to create a dispatcher

    val map_matcher : ('context, 'f1, 'arg_payload) matcher -> - f:('f1 -> 'f2) -> + f:('f1 -> 'f2) -> ('context, 'f2, 'arg_payload) matcher
    val any_typ : ('f, 'f, accept_more) template_arg

    Eats a type

    val capt_typ : (IR.Typ.t -> 'f, 'f, accept_more) template_arg

    Captures a type

    val capt_int : (IStdlib.IStd.Int64.t -> 'f, 'f, accept_more) template_arg

    Captures an int

    val capt_all : (IR.Typ.template_arg list -> 'f, 'f, end_of_list) template_arg

    Captures all template args

    val (~-) : string -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a name

    val (~+) : ('context -> string -> bool) -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a matching name that satisfies the given function

    val startsWith : string -> 'context -> string -> bool
    val endsWith : string -> 'context -> string -> bool
    val (&+) : @@ -52,4 +52,4 @@ ('context, 'f_out, 'arg_payload) matcher
    val (&::.*-->) : ('context, 'f_in, 'f_out, 'arg_payload) name_matcher -> 'f_in -> - ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    \ No newline at end of file + ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/index.html index abf9282c0de..2380d56efc0 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/index.html @@ -1,5 +1,5 @@ -ProcnameDispatcher (infer.Absint.ProcnameDispatcher)

    Module Absint.ProcnameDispatcher

    type accept_more

    To be used in 'list_constraint

    and end_of_list
    type ('context, 'f_in, 'f_out, 'arg_payload) name_matcher
    type ('f_in, 'f_out_in_out, 'list_constraint) template_arg
    type ('context, 'f_in, 'f_out, 'list_constraint, 'arg_payload) templ_matcher
    module type Common = sig ... end
    module type NameCommon = sig ... end
    module ProcName : +ProcnameDispatcher (infer.Absint.ProcnameDispatcher)

    Module Absint.ProcnameDispatcher

    type accept_more

    To be used in 'list_constraint

    and end_of_list
    type ('context, 'f_in, 'f_out, 'arg_payload) name_matcher
    type ('f_in, 'f_out_in_out, 'list_constraint) template_arg
    type ('context, 'f_in, 'f_out, 'list_constraint, 'arg_payload) templ_matcher
    module type Common = sig ... end
    module type NameCommon = sig ... end
    module ProcName : NameCommon with type ('context, 'f, 'arg_payload) dispatcher = 'context -> @@ -9,4 +9,4 @@ with type ('context, 'f, 'arg_payload) dispatcher = 'context -> IR.Typ.name -> - 'f option
    module Call : sig ... end
    \ No newline at end of file + 'f option
    module Call : sig ... end
    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-Common/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-Common/index.html index bfb88b1c288..148bc5c3190 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-Common/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-Common/index.html @@ -1,9 +1,9 @@ -Common (infer.Absint.ProcnameDispatcher.Common)

    Module type ProcnameDispatcher.Common

    type ('context, 'f, 'arg_payload) matcher
    type ('context, 'f, 'arg_payload) dispatcher
    val make_dispatcher : +Common (infer.Absint.ProcnameDispatcher.Common)

    Module type ProcnameDispatcher.Common

    type ('context, 'f, 'arg_payload) matcher
    type ('context, 'f, 'arg_payload) dispatcher
    val make_dispatcher : ('context, 'f, 'arg_payload) matcher list -> ('context, 'f, 'arg_payload) dispatcher

    Combines matchers to create a dispatcher

    val map_matcher : ('context, 'f1, 'arg_payload) matcher -> - f:('f1 -> 'f2) -> + f:('f1 -> 'f2) -> ('context, 'f2, 'arg_payload) matcher
    val any_typ : ('f, 'f, accept_more) template_arg

    Eats a type

    val capt_typ : (IR.Typ.t -> 'f, 'f, accept_more) template_arg

    Captures a type

    val capt_int : (IStdlib.IStd.Int64.t -> 'f, 'f, accept_more) template_arg

    Captures an int

    val capt_all : (IR.Typ.template_arg list -> 'f, 'f, end_of_list) template_arg

    Captures all template args

    val (~-) : string -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a name

    val (~+) : ('context -> string -> bool) -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a matching name that satisfies the given function

    val startsWith : string -> 'context -> string -> bool
    val endsWith : string -> 'context -> string -> bool
    val (&+) : @@ -30,4 +30,4 @@ ('context, 'f_in, 'f_out, 'arg_payload) name_matcher

    Separates names that satisfies the given function (accepts ALL template arguments on the left one)

    val (<>::) : ('context, 'f_in, 'f_out, 'arg_payload) name_matcher -> string -> - ('context, 'f_in, 'f_out, 'arg_payload) name_matcher

    Separates names (accepts NO template arguments on the left one)

    \ No newline at end of file + ('context, 'f_in, 'f_out, 'arg_payload) name_matcher

    Separates names (accepts NO template arguments on the left one)

    diff --git a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-NameCommon/index.html b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-NameCommon/index.html index af41e444209..162b4457891 100644 --- a/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-NameCommon/index.html +++ b/website/static/odoc/next/infer/Absint/ProcnameDispatcher/module-type-NameCommon/index.html @@ -1,9 +1,9 @@ -NameCommon (infer.Absint.ProcnameDispatcher.NameCommon)

    Module type ProcnameDispatcher.NameCommon

    include Common
    type ('context, 'f, 'arg_payload) matcher
    type ('context, 'f, 'arg_payload) dispatcher
    val make_dispatcher : +NameCommon (infer.Absint.ProcnameDispatcher.NameCommon)

    Module type ProcnameDispatcher.NameCommon

    include Common
    type ('context, 'f, 'arg_payload) matcher
    type ('context, 'f, 'arg_payload) dispatcher
    val make_dispatcher : ('context, 'f, 'arg_payload) matcher list -> ('context, 'f, 'arg_payload) dispatcher

    Combines matchers to create a dispatcher

    val map_matcher : ('context, 'f1, 'arg_payload) matcher -> - f:('f1 -> 'f2) -> + f:('f1 -> 'f2) -> ('context, 'f2, 'arg_payload) matcher
    val any_typ : ('f, 'f, accept_more) template_arg

    Eats a type

    val capt_typ : (IR.Typ.t -> 'f, 'f, accept_more) template_arg

    Captures a type

    val capt_int : (IStdlib.IStd.Int64.t -> 'f, 'f, accept_more) template_arg

    Captures an int

    val capt_all : (IR.Typ.template_arg list -> 'f, 'f, end_of_list) template_arg

    Captures all template args

    val (~-) : string -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a name

    val (~+) : ('context -> string -> bool) -> ('context, 'f, 'f, 'arg_payload) name_matcher

    Starts a path with a matching name that satisfies the given function

    val startsWith : string -> 'context -> string -> bool
    val endsWith : string -> 'context -> string -> bool
    val (&+) : @@ -45,4 +45,4 @@ ('context, 'f_out, 'arg_payload) matcher
    val (&::.*-->) : ('context, 'f_in, 'f_out, 'arg_payload) name_matcher -> 'f_in -> - ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    \ No newline at end of file + ('context, 'f_out, 'arg_payload) matcher

    After a name, accepts ALL template arguments, accepts ALL path tails (names, templates), accepts ALL function arguments, binds the function

    diff --git a/website/static/odoc/next/infer/Absint/Reporting/index.html b/website/static/odoc/next/infer/Absint/Reporting/index.html index 1b78e49ff87..e70e7103928 100644 --- a/website/static/odoc/next/infer/Absint/Reporting/index.html +++ b/website/static/odoc/next/infer/Absint/Reporting/index.html @@ -1,38 +1,38 @@ -Reporting (infer.Absint.Reporting)

    Module Absint.Reporting

    Type of functions to report issues to the error_log in a spec.

    type log_t = - ?loc_instantiated:IBase.Location.t -> - ?ltr:Errlog.loc_trace -> - ?extras:ATDGenerated.Jsonbug_t.extra -> - ?suggestion:string -> +Reporting (infer.Absint.Reporting)

    Module Absint.Reporting

    Type of functions to report issues to the error_log in a spec.

    type log_t = + ?loc_instantiated:IBase.Location.t -> + ?ltr:Errlog.loc_trace -> + ?extras:ATDGenerated.Jsonbug_t.extra -> + ?suggestion:string -> IBase.Checker.t -> IBase.IssueType.t -> string -> unit
    val log_issue_from_summary : - ?severity_override:IBase.IssueType.severity -> + ?severity_override:IBase.IssueType.severity -> IR.Procdesc.t -> Errlog.t -> - node:Errlog.node -> - session:int -> - loc:IBase.Location.t -> - ltr:Errlog.loc_trace -> - ?extras:ATDGenerated.Jsonbug_t.extra -> + node:Errlog.node -> + session:int -> + loc:IBase.Location.t -> + ltr:Errlog.loc_trace -> + ?extras:ATDGenerated.Jsonbug_t.extra -> IBase.Checker.t -> IssueToReport.t -> - unit
    val log_issue : IR.Procdesc.t -> Errlog.t -> loc:IBase.Location.t -> log_t

    Add an issue to the given error log.

    val log_issue_external : + unit
    val log_issue : IR.Procdesc.t -> Errlog.t -> loc:IBase.Location.t -> log_t

    Add an issue to the given error log.

    val log_issue_external : IR.Procname.t -> - issue_log:IssueLog.t -> - ?severity_override:IBase.IssueType.severity -> - loc:IBase.Location.t -> - ltr:Errlog.loc_trace -> - ?access:string -> - ?extras:ATDGenerated.Jsonbug_t.extra -> - ?suggestion:string -> + issue_log:IssueLog.t -> + ?severity_override:IBase.IssueType.severity -> + loc:IBase.Location.t -> + ltr:Errlog.loc_trace -> + ?access:string -> + ?extras:ATDGenerated.Jsonbug_t.extra -> + ?suggestion:string -> IBase.Checker.t -> IBase.IssueType.t -> string -> IssueLog.t

    Log an issue to the error log in IssueLog associated with the given procname.

    val is_suppressed : - ?field_name:IR.Fieldname.t option -> + ?field_name:IR.Fieldname.t option -> IR.Tenv.t -> IR.ProcAttributes.t -> IBase.IssueType.t -> - bool

    should an issue report be suppressed due to a @SuppressLint("issue") annotation?

    \ No newline at end of file + bool

    should an issue report be suppressed due to a @SuppressLint("issue") annotation?

    diff --git a/website/static/odoc/next/infer/Absint/Sanitizer/Dummy/index.html b/website/static/odoc/next/infer/Absint/Sanitizer/Dummy/index.html index 74d98541065..01193463e7e 100644 --- a/website/static/odoc/next/infer/Absint/Sanitizer/Dummy/index.html +++ b/website/static/odoc/next/infer/Absint/Sanitizer/Dummy/index.html @@ -1,2 +1,2 @@ -Dummy (infer.Absint.Sanitizer.Dummy)

    Module Sanitizer.Dummy

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Dummy (infer.Absint.Sanitizer.Dummy)

    Module Sanitizer.Dummy

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/Sanitizer/index.html index a0b4166c2a3..c37b8ee7315 100644 --- a/website/static/odoc/next/infer/Absint/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.Sanitizer)

    Module Absint.Sanitizer

    module F = Stdlib.Format
    module type S = sig ... end

    Sanitizers for filtering traces in taint analysis

    module Dummy : S
    \ No newline at end of file +Sanitizer (infer.Absint.Sanitizer)

    Module Absint.Sanitizer

    module F = Stdlib.Format
    module type S = sig ... end

    Sanitizers for filtering traces in taint analysis

    module Dummy : S
    diff --git a/website/static/odoc/next/infer/Absint/Sanitizer/module-type-S/index.html b/website/static/odoc/next/infer/Absint/Sanitizer/module-type-S/index.html index 87687ec03cc..0afc9165261 100644 --- a/website/static/odoc/next/infer/Absint/Sanitizer/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/Sanitizer/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.Absint.Sanitizer.S)

    Module type Sanitizer.S

    Sanitizers for filtering traces in taint analysis

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : F.formatter -> t -> unit
    \ No newline at end of file +S (infer.Absint.Sanitizer.S)

    Module type Sanitizer.S

    Sanitizers for filtering traces in taint analysis

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdMap/index.html index 08c19bf5608..cae26ce4301 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.Scheduler.ReversePostorder.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.Scheduler.ReversePostorder.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdSet/index.html index 282927188ac..c86e1bf8eac 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.Scheduler.ReversePostorder.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.Scheduler.ReversePostorder.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/index.html index 14d0c0cd05b..fdc0ab1edf4 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.Scheduler.ReversePostorder.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.Scheduler.ReversePostorder.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/index.html b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/index.html index d51b93d44a5..35ad108d797 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.Scheduler.ReversePostorder.CFG)

    Parameter ReversePostorder.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.Scheduler.ReversePostorder.CFG)

    Parameter ReversePostorder.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/index.html b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/index.html index a87a7bc6633..1d9b4a0a750 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/ReversePostorder/index.html @@ -1,2 +1,2 @@ -ReversePostorder (infer.Absint.Scheduler.ReversePostorder)

    Module Scheduler.ReversePostorder

    simple scheduler that visits CFG nodes in reverse postorder. fast/precise for straightline code and conditionals; not as good for loops (may visit nodes after a loop multiple times).

    Parameters

    module CFG : ProcCfg.S

    Signature

    module CFG = CFG
    type t
    val schedule_succs : t -> CFG.Node.t -> t

    schedule the successors of node

    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option

    remove and return the node with the highest priority, the ids of its visited predecessors, and the new schedule

    val empty : CFG.t -> t
    \ No newline at end of file +ReversePostorder (infer.Absint.Scheduler.ReversePostorder)

    Module Scheduler.ReversePostorder

    simple scheduler that visits CFG nodes in reverse postorder. fast/precise for straightline code and conditionals; not as good for loops (may visit nodes after a loop multiple times).

    Parameters

    module CFG : ProcCfg.S

    Signature

    module CFG = CFG
    type t
    val schedule_succs : t -> CFG.Node.t -> t

    schedule the successors of node

    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option

    remove and return the node with the highest priority, the ids of its visited predecessors, and the new schedule

    val empty : CFG.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/index.html b/website/static/odoc/next/infer/Absint/Scheduler/index.html index 12be546c7f2..7c289d0f357 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/index.html @@ -1,2 +1,2 @@ -Scheduler (infer.Absint.Scheduler)

    Module Absint.Scheduler

    module type S = sig ... end
    module ReversePostorder (CFG : ProcCfg.S) : S with module CFG = CFG

    simple scheduler that visits CFG nodes in reverse postorder. fast/precise for straightline code and conditionals; not as good for loops (may visit nodes after a loop multiple times).

    \ No newline at end of file +Scheduler (infer.Absint.Scheduler)

    Module Absint.Scheduler

    module type S = sig ... end
    module ReversePostorder (CFG : ProcCfg.S) : S with module CFG = CFG

    simple scheduler that visits CFG nodes in reverse postorder. fast/precise for straightline code and conditionals; not as good for loops (may visit nodes after a loop multiple times).

    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdMap/index.html index fe245f8a5c1..63ddfb4c7a1 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.Scheduler.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.Scheduler.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdSet/index.html index 53a7ccb94d0..df6f90ced49 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.Scheduler.S.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.Scheduler.S.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/index.html index 1537141d7a0..1bb9118904a 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.Scheduler.S.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.Scheduler.S.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/index.html b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/index.html index a9563998ae4..529cd90f4a3 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.Scheduler.S.CFG)

    Module S.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.Scheduler.S.CFG)

    Module S.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/index.html b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/index.html index 5ce379ed858..72aaa86a679 100644 --- a/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/Scheduler/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.Absint.Scheduler.S)

    Module type Scheduler.S

    module CFG : ProcCfg.S
    type t
    val schedule_succs : t -> CFG.Node.t -> t

    schedule the successors of node

    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option

    remove and return the node with the highest priority, the ids of its visited predecessors, and the new schedule

    val empty : CFG.t -> t
    \ No newline at end of file +S (infer.Absint.Scheduler.S)

    Module type Scheduler.S

    module CFG : ProcCfg.S
    type t
    val schedule_succs : t -> CFG.Node.t -> t

    schedule the successors of node

    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option

    remove and return the node with the highest priority, the ids of its visited predecessors, and the new schedule

    val empty : CFG.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/Sink/Make/Set/index.html b/website/static/odoc/next/infer/Absint/Sink/Make/Set/index.html index 56f95f1072d..2f76da81d46 100644 --- a/website/static/odoc/next/infer/Absint/Sink/Make/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/Make/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Sink.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Sink.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Sink/Make/argument-1-Kind/index.html b/website/static/odoc/next/infer/Absint/Sink/Make/argument-1-Kind/index.html index dca5a6b6afd..25d0eabab9b 100644 --- a/website/static/odoc/next/infer/Absint/Sink/Make/argument-1-Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/Make/argument-1-Kind/index.html @@ -1,7 +1,7 @@ -Kind (infer.Absint.Sink.Make.Kind)

    Parameter Make.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : +Kind (infer.Absint.Sink.Make.Kind)

    Parameter Make.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : IR.Procname.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - (t * IStdlib.IntSet.t) list

    return Some kind if the given procname/actuals are a sink, None otherwise

    \ No newline at end of file + (t * IStdlib.IntSet.t) list

    return Some kind if the given procname/actuals are a sink, None otherwise

    diff --git a/website/static/odoc/next/infer/Absint/Sink/Make/index.html b/website/static/odoc/next/infer/Absint/Sink/Make/index.html index 3bd05223176..d533cb9e8c6 100644 --- a/website/static/odoc/next/infer/Absint/Sink/Make/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.Absint.Sink.Make)

    Module Sink.Make

    Parameters

    module Kind : Kind

    Signature

    include TaintTraceElem.S with module Kind = Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +Make (infer.Absint.Sink.Make)

    Module Sink.Make

    Parameters

    module Kind : Kind

    Signature

    include TaintTraceElem.S with module Kind = Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/Sink/index.html b/website/static/odoc/next/infer/Absint/Sink/index.html index 86514b5a5cd..9915f8fedfd 100644 --- a/website/static/odoc/next/infer/Absint/Sink/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Absint.Sink)

    Module Absint.Sink

    module type Kind = sig ... end
    module type S = sig ... end
    module Make (Kind : Kind) : S with module Kind = Kind
    \ No newline at end of file +Sink (infer.Absint.Sink)

    Module Absint.Sink

    module type Kind = sig ... end
    module type S = sig ... end
    module Make (Kind : Kind) : S with module Kind = Kind
    diff --git a/website/static/odoc/next/infer/Absint/Sink/module-type-Kind/index.html b/website/static/odoc/next/infer/Absint/Sink/module-type-Kind/index.html index 511f6108939..df0fa9f5211 100644 --- a/website/static/odoc/next/infer/Absint/Sink/module-type-Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/module-type-Kind/index.html @@ -1,7 +1,7 @@ -Kind (infer.Absint.Sink.Kind)

    Module type Sink.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : +Kind (infer.Absint.Sink.Kind)

    Module type Sink.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : IR.Procname.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - (t * IStdlib.IntSet.t) list

    return Some kind if the given procname/actuals are a sink, None otherwise

    \ No newline at end of file + (t * IStdlib.IntSet.t) list

    return Some kind if the given procname/actuals are a sink, None otherwise

    diff --git a/website/static/odoc/next/infer/Absint/Sink/module-type-S/Kind/index.html b/website/static/odoc/next/infer/Absint/Sink/module-type-S/Kind/index.html index 2d1a6e6a34e..3478d2c77a6 100644 --- a/website/static/odoc/next/infer/Absint/Sink/module-type-S/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/module-type-S/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.Sink.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.Sink.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Sink/module-type-S/Set/index.html b/website/static/odoc/next/infer/Absint/Sink/module-type-S/Set/index.html index cf8db7e7f23..1ee6d45952d 100644 --- a/website/static/odoc/next/infer/Absint/Sink/module-type-S/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/module-type-S/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Sink.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Sink.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Sink/module-type-S/index.html b/website/static/odoc/next/infer/Absint/Sink/module-type-S/index.html index 253a34389ee..9a517e72418 100644 --- a/website/static/odoc/next/infer/Absint/Sink/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/Sink/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.Absint.Sink.S)

    Module type Sink.S

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +S (infer.Absint.Sink.S)

    Module type Sink.S

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sanitizer/index.html index 55561288b1c..b4e601c7788 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.SinkTrace.Make.Sanitizer)

    Module Make.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.SinkTrace.Make.Sanitizer)

    Module Make.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/AccessMap/index.html index 1233707a522..93c5effb971 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.SinkTrace.Make.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.SinkTrace.Make.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/TraceDomain/index.html index be5acb98ea3..54f5edd43f9 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.SinkTrace.Make.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Absint.SinkTrace.Make.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/index.html index 5970c10ef84..218ed3fcff3 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Absint.SinkTrace.Make.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Absint.SinkTrace.Make.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/FootprintConfig/index.html index 26960bce316..cbff7216429 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Absint.SinkTrace.Make.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Absint.SinkTrace.Make.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Known/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Known/index.html index 338459826a1..2b8ff15e61d 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Absint.SinkTrace.Make.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Absint.SinkTrace.Make.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Sanitizers/index.html index b9d03464d25..d1966b286e4 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Absint.SinkTrace.Make.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Absint.SinkTrace.Make.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/index.html index f59fd6f34a3..d0d9db805e8 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Absint.SinkTrace.Make.Sources)

    Module Make.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Absint.SinkTrace.Make.Sources)

    Module Make.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Kind/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Kind/index.html index d626498e54c..d7693c5685e 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.SinkTrace.Make.TaintTraceElem.Kind)

    Module TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.SinkTrace.Make.TaintTraceElem.Kind)

    Module TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Set/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Set/index.html index 4a494352f49..c29bc771221 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Set/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.SinkTrace.Make.TaintTraceElem.Set)

    Module TaintTraceElem.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.SinkTrace.Make.TaintTraceElem.Set)

    Module TaintTraceElem.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/index.html index 53050a0d6be..f826655e934 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/argument-1-TaintTraceElem/index.html @@ -1,2 +1,2 @@ -TaintTraceElem (infer.Absint.SinkTrace.Make.TaintTraceElem)

    Parameter Make.TaintTraceElem

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +TaintTraceElem (infer.Absint.SinkTrace.Make.TaintTraceElem)

    Parameter Make.TaintTraceElem

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/Make/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/Make/index.html index c1fe6ee3495..081c71f05a1 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/Make/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/Make/index.html @@ -1,5 +1,5 @@ -Make (infer.Absint.SinkTrace.Make)

    Module SinkTrace.Make

    Parameters

    Signature

    include TaintTrace.S +Make (infer.Absint.SinkTrace.Make)

    Module SinkTrace.Make

    Parameters

    Signature

    include TaintTrace.S with module Source = Source.Dummy with module Sink = MakeSink(TaintTraceElem)
    include TaintTrace.Spec with module Source = Source.Dummy @@ -7,27 +7,27 @@ Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    type sink_path = Passthrough.Set.t * (Sink.t * Passthrough.Set.t) list

    A path from some procedure via the given passthroughs to the given call stack, with passthroughs for each callee

    val get_reportable_sink_paths : t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path list

    get a path for each of the reportable flows to a sink in this trace

    val get_reportable_sink_path : Sink.t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path option

    get a report for a single sink

    val with_callsite : t -> CallSite.t -> t

    update sink with the given call site

    val of_sink : Sink.t -> t
    val to_sink_loc_trace : - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> sink_path -> - Errlog.loc_trace_elem list
    \ No newline at end of file + Errlog.loc_trace_elem list diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/Set/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/Set/index.html index 748deb8e236..967a86ef9f6 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/Set/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.SinkTrace.MakeSink.Set)

    Module MakeSink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.SinkTrace.MakeSink.Set)

    Module MakeSink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Kind/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Kind/index.html index e81352cd794..2680963264d 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.SinkTrace.MakeSink.TaintTraceElem.Kind)

    Module TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.SinkTrace.MakeSink.TaintTraceElem.Kind)

    Module TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Set/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Set/index.html index 44844e68d28..700231f4863 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Set/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.SinkTrace.MakeSink.TaintTraceElem.Set)

    Module TaintTraceElem.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.SinkTrace.MakeSink.TaintTraceElem.Set)

    Module TaintTraceElem.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/index.html index 29cb2c9ab5c..babc83e8d41 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/argument-1-TaintTraceElem/index.html @@ -1,2 +1,2 @@ -TaintTraceElem (infer.Absint.SinkTrace.MakeSink.TaintTraceElem)

    Parameter MakeSink.TaintTraceElem

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +TaintTraceElem (infer.Absint.SinkTrace.MakeSink.TaintTraceElem)

    Parameter MakeSink.TaintTraceElem

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/index.html index 84205a7233d..c609e4cfc65 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/MakeSink/index.html @@ -1,4 +1,4 @@ -MakeSink (infer.Absint.SinkTrace.MakeSink)

    Module SinkTrace.MakeSink

    Parameters

    Signature

    include TaintTraceElem.S +MakeSink (infer.Absint.SinkTrace.MakeSink)

    Module SinkTrace.MakeSink

    Parameters

    Signature

    include TaintTraceElem.S with module Kind = TaintTraceElem.Kind - with type t = TaintTraceElem.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = TaintTraceElem.Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + with type t = TaintTraceElem.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = TaintTraceElem.Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/index.html index e13af862cc2..d9bbdae8840 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/index.html @@ -1,8 +1,8 @@ -SinkTrace (infer.Absint.SinkTrace)

    Module Absint.SinkTrace

    module type S = sig ... end

    Suffix of a normal trace: just sinks and passthroughs, but no sources

    module MakeSink +SinkTrace (infer.Absint.SinkTrace)

    Module Absint.SinkTrace

    module type S = sig ... end

    Suffix of a normal trace: just sinks and passthroughs, but no sources

    \ No newline at end of file + and module Sink = MakeSink(TaintTraceElem)
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sanitizer/index.html index b40dc1036fd..504c44fa18a 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.SinkTrace.S.Sanitizer)

    Module S.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.SinkTrace.S.Sanitizer)

    Module S.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Kind/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Kind/index.html index 44da6766537..329d01e892e 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.SinkTrace.S.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.SinkTrace.S.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Set/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Set/index.html index 4b2ad32c20a..f3d26b95fd1 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.SinkTrace.S.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.SinkTrace.S.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/index.html index 0105be097c0..8934fb38221 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Absint.SinkTrace.S.Sink)

    Module S.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +Sink (infer.Absint.SinkTrace.S.Sink)

    Module S.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Kind/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Kind/index.html index ecbe580b835..e06404fbe99 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.SinkTrace.S.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.SinkTrace.S.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Set/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Set/index.html index c0c37c72c81..fbef9310058 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Set/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.SinkTrace.S.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.SinkTrace.S.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/index.html index bcbdf565183..e473a028fad 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Absint.SinkTrace.S.Source)

    Module S.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Absint.SinkTrace.S.Source)

    Module S.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html index d164ebd9a81..074e3951086 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.SinkTrace.S.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.SinkTrace.S.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html index 430f3266f6c..e369395b968 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.SinkTrace.S.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Absint.SinkTrace.S.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/index.html index e9a517cff64..03118902c1b 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Absint.SinkTrace.S.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Absint.SinkTrace.S.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/FootprintConfig/index.html index f56f3958cd0..e27a12781b6 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Absint.SinkTrace.S.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Absint.SinkTrace.S.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Known/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Known/index.html index e1d2f7f9210..b81a3e45354 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Absint.SinkTrace.S.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Absint.SinkTrace.S.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Sanitizers/index.html index 3976fcdc276..5307b14cef4 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Absint.SinkTrace.S.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Absint.SinkTrace.S.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/index.html index ae8b1425f75..6a31b77d932 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Absint.SinkTrace.S.Sources)

    Module S.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Absint.SinkTrace.S.Sources)

    Module S.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/index.html b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/index.html index 2701fc392b4..a128cf2ef16 100644 --- a/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/SinkTrace/module-type-S/index.html @@ -1,29 +1,29 @@ -S (infer.Absint.SinkTrace.S)

    Module type SinkTrace.S

    Suffix of a normal trace: just sinks and passthroughs, but no sources

    include TaintTrace.S
    include TaintTrace.Spec
    module Source : Source.S
    module Sink : Sink.S
    val get_report : +S (infer.Absint.SinkTrace.S)

    Module type SinkTrace.S

    Suffix of a normal trace: just sinks and passthroughs, but no sources

    include TaintTrace.S
    include TaintTrace.Spec
    module Source : Source.S
    module Sink : Sink.S
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    type sink_path = Passthrough.Set.t * (Sink.t * Passthrough.Set.t) list

    A path from some procedure via the given passthroughs to the given call stack, with passthroughs for each callee

    val get_reportable_sink_paths : t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path list

    get a path for each of the reportable flows to a sink in this trace

    val get_reportable_sink_path : Sink.t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path option

    get a report for a single sink

    val with_callsite : t -> CallSite.t -> t

    update sink with the given call site

    val of_sink : Sink.t -> t
    val to_sink_loc_trace : - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> sink_path -> - Errlog.loc_trace_elem list
    \ No newline at end of file + Errlog.loc_trace_elem list
    diff --git a/website/static/odoc/next/infer/Absint/Source/Dummy/Kind/index.html b/website/static/odoc/next/infer/Absint/Source/Dummy/Kind/index.html index 2fef1f28753..4c5e02aa9f1 100644 --- a/website/static/odoc/next/infer/Absint/Source/Dummy/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Dummy/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.Source.Dummy.Kind)

    Module Dummy.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.Source.Dummy.Kind)

    Module Dummy.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/Dummy/Set/index.html b/website/static/odoc/next/infer/Absint/Source/Dummy/Set/index.html index 5c96ac2dcef..4dcb29269e6 100644 --- a/website/static/odoc/next/infer/Absint/Source/Dummy/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Dummy/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Source.Dummy.Set)

    Module Dummy.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Source.Dummy.Set)

    Module Dummy.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/Dummy/index.html b/website/static/odoc/next/infer/Absint/Source/Dummy/index.html index 591992542df..e6b7bfc511d 100644 --- a/website/static/odoc/next/infer/Absint/Source/Dummy/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Dummy/index.html @@ -1,10 +1,10 @@ -Dummy (infer.Absint.Source.Dummy)

    Module Source.Dummy

    include TaintTraceElem.S with type t = unit
    type t = unit
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Dummy (infer.Absint.Source.Dummy)

    Module Source.Dummy

    include TaintTraceElem.S with type t = unit
    type t = unit
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/Source/Make/Set/index.html b/website/static/odoc/next/infer/Absint/Source/Make/Set/index.html index ac7c02a3d34..803d7c1eb78 100644 --- a/website/static/odoc/next/infer/Absint/Source/Make/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Make/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Source.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Source.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/Make/argument-1-Kind/index.html b/website/static/odoc/next/infer/Absint/Source/Make/argument-1-Kind/index.html index aca0f805fff..7d62895166e 100644 --- a/website/static/odoc/next/infer/Absint/Source/Make/argument-1-Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Make/argument-1-Kind/index.html @@ -1,10 +1,10 @@ -Kind (infer.Absint.Source.Make.Kind)

    Parameter Make.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : - caller_pname:IR.Procname.t -> +Kind (infer.Absint.Source.Make.Kind)

    Parameter Make.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : + caller_pname:IR.Procname.t -> IR.Procname.t -> HilExp.t list -> IR.Tenv.t -> (t * int option) list

    return Some (kind) if the procedure with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(kind) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(kind) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/Source/Make/index.html b/website/static/odoc/next/infer/Absint/Source/Make/index.html index 411c3594524..49f2fe36540 100644 --- a/website/static/odoc/next/infer/Absint/Source/Make/index.html +++ b/website/static/odoc/next/infer/Absint/Source/Make/index.html @@ -1,10 +1,10 @@ -Make (infer.Absint.Source.Make)

    Module Source.Make

    Parameters

    module Kind : Kind

    Signature

    include TaintTraceElem.S with module Kind = Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Make (infer.Absint.Source.Make)

    Module Source.Make

    Parameters

    module Kind : Kind

    Signature

    include TaintTraceElem.S with module Kind = Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind = Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/Source/index.html b/website/static/odoc/next/infer/Absint/Source/index.html index 4bc4e4c03c6..65de04544af 100644 --- a/website/static/odoc/next/infer/Absint/Source/index.html +++ b/website/static/odoc/next/infer/Absint/Source/index.html @@ -1,4 +1,4 @@ -Source (infer.Absint.Source)

    Module Absint.Source

    val all_formals_untainted : +Source (infer.Absint.Source)

    Module Absint.Source

    val all_formals_untainted : IR.Procdesc.t -> - (IR.Mangled.t * IR.Typ.t * 'a option) list

    specify that all the formals of the procdesc are not tainted

    module type Kind = sig ... end
    module type S = sig ... end
    module Make (Kind : Kind) : S with module Kind = Kind
    module Dummy : S with type t = unit
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * 'a option) list

    specify that all the formals of the procdesc are not tainted

    module type Kind = sig ... end
    module type S = sig ... end
    module Make (Kind : Kind) : S with module Kind = Kind
    module Dummy : S with type t = unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/module-type-Kind/index.html b/website/static/odoc/next/infer/Absint/Source/module-type-Kind/index.html index 0afc4cb9d52..4661580a9bf 100644 --- a/website/static/odoc/next/infer/Absint/Source/module-type-Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Source/module-type-Kind/index.html @@ -1,10 +1,10 @@ -Kind (infer.Absint.Source.Kind)

    Module type Source.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : - caller_pname:IR.Procname.t -> +Kind (infer.Absint.Source.Kind)

    Module type Source.Kind

    include TaintTraceElem.Kind
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    val get : + caller_pname:IR.Procname.t -> IR.Procname.t -> HilExp.t list -> IR.Tenv.t -> (t * int option) list

    return Some (kind) if the procedure with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(kind) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(kind) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/Source/module-type-S/Kind/index.html b/website/static/odoc/next/infer/Absint/Source/module-type-S/Kind/index.html index 0543ba41c56..e73e2c6c658 100644 --- a/website/static/odoc/next/infer/Absint/Source/module-type-S/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/Source/module-type-S/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.Source.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.Source.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/module-type-S/Set/index.html b/website/static/odoc/next/infer/Absint/Source/module-type-S/Set/index.html index abf01e0cd2d..b03e291fd2c 100644 --- a/website/static/odoc/next/infer/Absint/Source/module-type-S/Set/index.html +++ b/website/static/odoc/next/infer/Absint/Source/module-type-S/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.Source.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.Source.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/Source/module-type-S/index.html b/website/static/odoc/next/infer/Absint/Source/module-type-S/index.html index 76fc2a9bd98..bf8cf50e974 100644 --- a/website/static/odoc/next/infer/Absint/Source/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/Source/module-type-S/index.html @@ -1,10 +1,10 @@ -S (infer.Absint.Source.S)

    Module type Source.S

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +S (infer.Absint.Source.S)

    Module type Source.S

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/SubtypingCheck/index.html b/website/static/odoc/next/infer/Absint/SubtypingCheck/index.html index 51f2ae7a4e8..330414c8bd2 100644 --- a/website/static/odoc/next/infer/Absint/SubtypingCheck/index.html +++ b/website/static/odoc/next/infer/Absint/SubtypingCheck/index.html @@ -1,6 +1,6 @@ -SubtypingCheck (infer.Absint.SubtypingCheck)

    Module Absint.SubtypingCheck

    Subtype checking

    val check_subtype : IR.Tenv.t -> IR.Typ.t -> IR.Typ.t -> bool

    check_subtype t1 t2 checks whether t1 is a subtype of t2, given the type environment tenv.

    val subtype_case_analysis : +SubtypingCheck (infer.Absint.SubtypingCheck)

    Module Absint.SubtypingCheck

    Subtype checking

    val check_subtype : IR.Tenv.t -> IR.Typ.t -> IR.Typ.t -> bool

    check_subtype t1 t2 checks whether t1 is a subtype of t2, given the type environment tenv.

    val subtype_case_analysis : IR.Tenv.t -> IR.Exp.t -> IR.Exp.t -> - IR.Exp.t option * IR.Exp.t option

    subtype_case_analysis tenv tecp1 texp2 performs case analysis on texp1 <: texp2, and returns the updated types in the true and false case, if they are possible

    \ No newline at end of file + IR.Exp.t option * IR.Exp.t option

    subtype_case_analysis tenv tecp1 texp2 performs case analysis on texp1 <: texp2, and returns the updated types in the true and false case, if they are possible

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sanitizer/index.html index 9de763b27ed..63797dcd798 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.TaintTrace.Make.Sanitizer)

    Module Make.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.TaintTrace.Make.Sanitizer)

    Module Make.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/AccessMap/index.html index f0dcd89c4a4..7bc55de0a82 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.TaintTrace.Make.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.TaintTrace.Make.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/TraceDomain/index.html index 0aa47207b88..268fd058aac 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.TaintTrace.Make.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Absint.TaintTrace.Make.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/index.html index 0caf5f1349a..9154306be86 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Absint.TaintTrace.Make.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Absint.TaintTrace.Make.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/FootprintConfig/index.html index b747d76f795..fa02d947881 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Absint.TaintTrace.Make.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Absint.TaintTrace.Make.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Known/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Known/index.html index e6e4900a92e..d276d5d2de0 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Absint.TaintTrace.Make.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Absint.TaintTrace.Make.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Sanitizers/index.html index 699ac63f510..29de86dd9f8 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Absint.TaintTrace.Make.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Absint.TaintTrace.Make.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/index.html index e33897d70f2..c631b5f46b3 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Absint.TaintTrace.Make.Sources)

    Module Make.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Absint.TaintTrace.Make.Sources)

    Module Make.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sanitizer/index.html index 9d83761b033..5fcfa5f797b 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.TaintTrace.Make.Spec.Sanitizer)

    Module Spec.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.TaintTrace.Make.Spec.Sanitizer)

    Module Spec.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Kind/index.html index f7804a6d8f8..fe70c355290 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.Make.Spec.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.Make.Spec.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Set/index.html index b14acc54238..82c9863683d 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.Make.Spec.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.Make.Spec.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/index.html index 7519d5dc5eb..07b4e23df3e 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Absint.TaintTrace.Make.Spec.Sink)

    Module Spec.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +Sink (infer.Absint.TaintTrace.Make.Spec.Sink)

    Module Spec.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Kind/index.html index ad62b82cc30..b43dbf5361d 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.Make.Spec.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.Make.Spec.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Set/index.html index d89bd0f1efe..80c9e61c173 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.Make.Spec.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.Make.Spec.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/index.html index 31c6c6ada93..f87937d8736 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Absint.TaintTrace.Make.Spec.Source)

    Module Spec.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Absint.TaintTrace.Make.Spec.Source)

    Module Spec.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/index.html index dfa975d2e18..85f49f33abf 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/argument-1-Spec/index.html @@ -1,6 +1,6 @@ -Spec (infer.Absint.TaintTrace.Make.Spec)

    Parameter Make.Spec

    module Source : Source.S
    module Sink : Sink.S
    val get_report : +Spec (infer.Absint.TaintTrace.Make.Spec)

    Parameter Make.Spec

    module Source : Source.S
    module Sink : Sink.S
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    \ No newline at end of file + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/Make/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/Make/index.html index 725dcb2b988..f3a042c8baa 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/Make/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/Make/index.html @@ -1,19 +1,19 @@ -Make (infer.Absint.TaintTrace.Make)

    Module TaintTrace.Make

    Parameters

    module Spec : Spec

    Signature

    include Spec with module Source = Spec.Source with module Sink = Spec.Sink
    module Source = Spec.Source
    module Sink = Spec.Sink
    val get_report : +Make (infer.Absint.TaintTrace.Make)

    Module TaintTrace.Make

    Parameters

    module Spec : Spec

    Signature

    include Spec with module Source = Spec.Source with module Sink = Spec.Sink
    module Source = Spec.Source
    module Sink = Spec.Sink
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/index.html index 24b8c3dfc18..b28672efb15 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/index.html @@ -1,4 +1,4 @@ -TaintTrace (infer.Absint.TaintTrace)

    Module Absint.TaintTrace

    module F = Stdlib.Format
    module type Spec = sig ... end
    module type S = sig ... end
    module Make +TaintTrace (infer.Absint.TaintTrace)

    Module Absint.TaintTrace

    module F = Stdlib.Format
    module type Spec = sig ... end
    module type S = sig ... end
    module Make (Spec : Spec) : - S with module Source = Spec.Source and module Sink = Spec.Sink
    \ No newline at end of file + S with module Source = Spec.Source and module Sink = Spec.Sink
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sanitizer/index.html index 16ea2d8b502..086d3b9e16d 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.TaintTrace.S.Sanitizer)

    Module S.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.TaintTrace.S.Sanitizer)

    Module S.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Kind/index.html index 6aa1bd8fa3a..788d92b5d44 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.S.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.S.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Set/index.html index af99b927923..bb831117139 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.S.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.S.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/index.html index ea0039a6d70..2f57f4705f5 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Absint.TaintTrace.S.Sink)

    Module S.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +Sink (infer.Absint.TaintTrace.S.Sink)

    Module S.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Kind/index.html index 8fc9e2a53ad..9ffb89405b8 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.S.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.S.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Set/index.html index c49e2fcd3a5..6104f93b9d3 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.S.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.S.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/index.html index cb1884b3d12..2c281a10764 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Absint.TaintTrace.S.Source)

    Module S.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Absint.TaintTrace.S.Source)

    Module S.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/AccessMap/index.html index 1fd6209192d..149c474f78d 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Absint.TaintTrace.S.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Absint.TaintTrace.S.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/TraceDomain/index.html index 952a44b528a..8c95e90a278 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Absint.TaintTrace.S.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Absint.TaintTrace.S.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/index.html index a05c0c7aa31..9ac3f018825 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Absint.TaintTrace.S.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Absint.TaintTrace.S.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/FootprintConfig/index.html index b99f4fe58cc..6ba61b63dc7 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Absint.TaintTrace.S.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Absint.TaintTrace.S.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Known/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Known/index.html index c77403f63d9..d60b201471c 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Absint.TaintTrace.S.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Absint.TaintTrace.S.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Sanitizers/index.html index 3ba60514814..6f33d6d620a 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Absint.TaintTrace.S.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Absint.TaintTrace.S.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/index.html index 97f60c48053..c77778b440b 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Absint.TaintTrace.S.Sources)

    Module S.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Absint.TaintTrace.S.Sources)

    Module S.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/index.html index 9234b81007d..eb7ccc37243 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-S/index.html @@ -1,19 +1,19 @@ -S (infer.Absint.TaintTrace.S)

    Module type TaintTrace.S

    include Spec
    module Source : Source.S
    module Sink : Sink.S
    val get_report : +S (infer.Absint.TaintTrace.S)

    Module type TaintTrace.S

    include Spec
    module Source : Source.S
    module Sink : Sink.S
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include AbstractDomain.WithBottom
    include AbstractDomain.S
    include AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sanitizer/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sanitizer/index.html index cad3f6ea478..5566318f32f 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Absint.TaintTrace.Spec.Sanitizer)

    Module Spec.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Absint.TaintTrace.Spec.Sanitizer)

    Module Spec.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Kind/index.html index 1a942ba5197..3e5d9e88137 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.Spec.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.Spec.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Set/index.html index 3118fb52a13..e73014b8df0 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.Spec.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.Spec.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/index.html index dcf5791e3db..afc5e5484be 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Absint.TaintTrace.Spec.Sink)

    Module Spec.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file +Sink (infer.Absint.TaintTrace.Spec.Sink)

    Module Spec.Sink

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : CallSite.t -> HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Kind/index.html index a7359fccdf8..8ef0d7c2da8 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTrace.Spec.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTrace.Spec.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Set/index.html index e931caba9f8..a7c5f403aa9 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTrace.Spec.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTrace.Spec.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/index.html index c7e735b8ce2..c5d98a8fa9c 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Absint.TaintTrace.Spec.Source)

    Module Spec.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Absint.TaintTrace.Spec.Source)

    Module Spec.Source

    include TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> CallSite.t -> HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/index.html b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/index.html index 2b8247fe9b7..ede2399fa9d 100644 --- a/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTrace/module-type-Spec/index.html @@ -1,6 +1,6 @@ -Spec (infer.Absint.TaintTrace.Spec)

    Module type TaintTrace.Spec

    module Source : Source.S
    module Sink : Sink.S
    val get_report : +Spec (infer.Absint.TaintTrace.Spec)

    Module type TaintTrace.Spec

    module Source : Source.S
    module Sink : Sink.S
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    \ No newline at end of file + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    diff --git a/website/static/odoc/next/infer/Absint/TaintTraceElem/index.html b/website/static/odoc/next/infer/Absint/TaintTraceElem/index.html index dc9b903d72e..c8fa8ed187b 100644 --- a/website/static/odoc/next/infer/Absint/TaintTraceElem/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTraceElem/index.html @@ -1,2 +1,2 @@ -TaintTraceElem (infer.Absint.TaintTraceElem)

    Module Absint.TaintTraceElem

    module F = Stdlib.Format
    module type Kind = sig ... end
    module type S = sig ... end
    \ No newline at end of file +TaintTraceElem (infer.Absint.TaintTraceElem)

    Module Absint.TaintTraceElem

    module F = Stdlib.Format
    module type Kind = sig ... end
    module type S = sig ... end
    diff --git a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-Kind/index.html index 1a535f3bcb0..34adc678703 100644 --- a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTraceElem.Kind)

    Module type TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTraceElem.Kind)

    Module type TaintTraceElem.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Kind/index.html b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Kind/index.html index 6ed69ff9fc7..b3190b82211 100644 --- a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Kind/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Absint.TaintTraceElem.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Absint.TaintTraceElem.S.Kind)

    Module S.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Set/index.html b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Set/index.html index a6b2664d2c6..5e9ad14fb9f 100644 --- a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Set/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Absint.TaintTraceElem.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Absint.TaintTraceElem.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/index.html b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/index.html index cc1030bcb77..8821fc872a3 100644 --- a/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/TaintTraceElem/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.Absint.TaintTraceElem.S)

    Module type TaintTraceElem.S

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +S (infer.Absint.TaintTraceElem.S)

    Module type TaintTraceElem.S

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : Kind
    val call_site : t -> CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> CallSite.t -> t
    val with_callsite : t -> CallSite.t -> t
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/Absint/TaskSchedulerTypes/index.html b/website/static/odoc/next/infer/Absint/TaskSchedulerTypes/index.html index c57e5a6bf65..712980dae94 100644 --- a/website/static/odoc/next/infer/Absint/TaskSchedulerTypes/index.html +++ b/website/static/odoc/next/infer/Absint/TaskSchedulerTypes/index.html @@ -1,2 +1,2 @@ -TaskSchedulerTypes (infer.Absint.TaskSchedulerTypes)

    Module Absint.TaskSchedulerTypes

    type target =
    1. | Procname of IR.Procname.t
    2. | File of IBase.SourceFile.t
    3. | ProcUID of string
      (*

      matches primary key of procedures and specs tables; see Database.ml

      *)
    \ No newline at end of file +TaskSchedulerTypes (infer.Absint.TaskSchedulerTypes)

    Module Absint.TaskSchedulerTypes

    type target =
    1. | Procname of IR.Procname.t
    2. | File of IBase.SourceFile.t
    3. | ProcUID of string
      (*

      matches primary key of procedures and specs tables; see Database.ml

      *)
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/index.html index 12ce6ba07b5..60b9be9fae3 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/index.html @@ -1,2 +1,2 @@ -TransferFunctions (infer.Absint.TransferFunctions)

    Module Absint.TransferFunctions

    Transfer functions that push abstract states across instructions. A typical client should implement the Make signature to allow the transfer functions to be used with any kind of CFG.

    module type S = sig ... end
    module type SIL = sig ... end
    module type HIL = sig ... end
    type join_policy_t =
    1. | UnderApproximateAfter of int

    When the set of disjuncts gets bigger than n then just stop adding new states to it, drop any further states on the floor. This corresponds to an under-approximation/bounded approach.

    type widen_policy_t =
    1. | UnderApproximateAfterNumIterations of int
    module type DisjunctiveConfig = sig ... end
    module type DisjReady = sig ... end
    \ No newline at end of file +TransferFunctions (infer.Absint.TransferFunctions)

    Module Absint.TransferFunctions

    Transfer functions that push abstract states across instructions. A typical client should implement the Make signature to allow the transfer functions to be used with any kind of CFG.

    module type S = sig ... end
    module type SIL = sig ... end
    module type HIL = sig ... end
    type join_policy_t =
    1. | UnderApproximateAfter of int

    When the set of disjuncts gets bigger than n then just stop adding new states to it, drop any further states on the floor. This corresponds to an under-approximation/bounded approach.

    type widen_policy_t =
    1. | UnderApproximateAfterNumIterations of int
    module type DisjunctiveConfig = sig ... end
    module type DisjReady = sig ... end
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdMap/index.html index de6d646848a..4b755b4c3f3 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.TransferFunctions.DisjReady.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.TransferFunctions.DisjReady.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdSet/index.html index 239efccc53a..36d030aa5da 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.TransferFunctions.DisjReady.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.TransferFunctions.DisjReady.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/index.html index 4dec3df5e31..2566ab97959 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.TransferFunctions.DisjReady.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.TransferFunctions.DisjReady.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/index.html index bfd0ca59f3b..96a441d442b 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.TransferFunctions.DisjReady.CFG)

    Module DisjReady.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.TransferFunctions.DisjReady.CFG)

    Module DisjReady.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/DisjDomain/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/DisjDomain/index.html index f0f18eeaa6a..043ba34a6b0 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/DisjDomain/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/DisjDomain/index.html @@ -1,2 +1,2 @@ -DisjDomain (infer.Absint.TransferFunctions.DisjReady.DisjDomain)

    Module DisjReady.DisjDomain

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    \ No newline at end of file +DisjDomain (infer.Absint.TransferFunctions.DisjReady.DisjDomain)

    Module DisjReady.DisjDomain

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/NonDisjDomain/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/NonDisjDomain/index.html index e78430fa1af..ce0ad45fa33 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/NonDisjDomain/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/NonDisjDomain/index.html @@ -1,2 +1,2 @@ -NonDisjDomain (infer.Absint.TransferFunctions.DisjReady.NonDisjDomain)

    Module DisjReady.NonDisjDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +NonDisjDomain (infer.Absint.TransferFunctions.DisjReady.NonDisjDomain)

    Module DisjReady.NonDisjDomain

    include AbstractDomain.S
    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/index.html index 939fa75f97a..30afb26de61 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjReady/index.html @@ -1,5 +1,5 @@ -DisjReady (infer.Absint.TransferFunctions.DisjReady)

    Module type TransferFunctions.DisjReady

    module CFG : ProcCfg.S
    type analysis_data
    val exec_instr : +DisjReady (infer.Absint.TransferFunctions.DisjReady)

    Module type TransferFunctions.DisjReady

    module CFG : ProcCfg.S
    type analysis_data
    val exec_instr : (DisjDomain.t * NonDisjDomain.t) -> analysis_data -> CFG.Node.t -> @@ -7,4 +7,8 @@ DisjDomain.t list * NonDisjDomain.t
    val remember_dropped_disjuncts : DisjDomain.t list -> NonDisjDomain.t -> - NonDisjDomain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + NonDisjDomain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    val pp_disjunct : + IStdlib.Pp.print_kind -> + Stdlib.Format.formatter -> + DisjDomain.t -> + unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjunctiveConfig/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjunctiveConfig/index.html index 6578cab8048..5ba0f7bf368 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjunctiveConfig/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-DisjunctiveConfig/index.html @@ -1,2 +1,2 @@ -DisjunctiveConfig (infer.Absint.TransferFunctions.DisjunctiveConfig)

    Module type TransferFunctions.DisjunctiveConfig

    val join_policy : join_policy_t
    val widen_policy : widen_policy_t
    \ No newline at end of file +DisjunctiveConfig (infer.Absint.TransferFunctions.DisjunctiveConfig)

    Module type TransferFunctions.DisjunctiveConfig

    val join_policy : join_policy_t
    val widen_policy : widen_policy_t
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdMap/index.html index 46fd4427e43..da6f1e0920d 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.TransferFunctions.HIL.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.TransferFunctions.HIL.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdSet/index.html index 96b81c07985..c2ea5d855ac 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.TransferFunctions.HIL.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.TransferFunctions.HIL.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/index.html index 1cc3bbe518c..36ece69120b 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.TransferFunctions.HIL.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.TransferFunctions.HIL.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/index.html index 5ce915b0c5c..bb2b56b0639 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.TransferFunctions.HIL.CFG)

    Module HIL.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.TransferFunctions.HIL.CFG)

    Module HIL.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/Domain/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/Domain/index.html index 3e9eabe85e9..f047018f787 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.TransferFunctions.HIL.Domain)

    Module HIL.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.TransferFunctions.HIL.Domain)

    Module HIL.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/index.html index 539ee57887d..2e8c3f0eb85 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-HIL/index.html @@ -1,8 +1,8 @@ -HIL (infer.Absint.TransferFunctions.HIL)

    Module type TransferFunctions.HIL

    include S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +HIL (infer.Absint.TransferFunctions.HIL)

    Module type TransferFunctions.HIL

    include S with type instr := HilInstr.t
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdMap/index.html index 71e20a6eea8..423fcbbaa01 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.TransferFunctions.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.TransferFunctions.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdSet/index.html index 623c5c85aa3..4c424ff75ca 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.TransferFunctions.S.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.TransferFunctions.S.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/index.html index a77952f5ec7..d56fb17c0a7 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.TransferFunctions.S.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.TransferFunctions.S.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/index.html index 8c372895fa4..34a98c8587b 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.TransferFunctions.S.CFG)

    Module S.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.TransferFunctions.S.CFG)

    Module S.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/Domain/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/Domain/index.html index 038fdb4d62c..483a5034e36 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.TransferFunctions.S.Domain)

    Module S.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.TransferFunctions.S.Domain)

    Module S.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/index.html index c01d992b182..e4ae9bb62a3 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-S/index.html @@ -1,8 +1,8 @@ -S (infer.Absint.TransferFunctions.S)

    Module type TransferFunctions.S

    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    type instr

    type of the instructions the transfer functions operate on

    val exec_instr : +S (infer.Absint.TransferFunctions.S)

    Module type TransferFunctions.S

    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    type instr

    type of the instructions the transfer functions operate on

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdMap/index.html index 7b03fbe31e0..57b75cf4908 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Absint.TransferFunctions.SIL.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Absint.TransferFunctions.SIL.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdSet/index.html index 1b64285be7f..5cb3ec9c0b4 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Absint.TransferFunctions.SIL.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Absint.TransferFunctions.SIL.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/index.html index 4e24ccbaf8f..4c69f3debe1 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Absint.TransferFunctions.SIL.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file +Node (infer.Absint.TransferFunctions.SIL.CFG.Node)

    Module CFG.Node

    include ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/index.html index fe38f602108..6e2bf361df7 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Absint.TransferFunctions.SIL.CFG)

    Module SIL.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Absint.TransferFunctions.SIL.CFG)

    Module SIL.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/Domain/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/Domain/index.html index c0b3fe268e8..941aa426a43 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/Domain/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Absint.TransferFunctions.SIL.Domain)

    Module SIL.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Absint.TransferFunctions.SIL.Domain)

    Module SIL.Domain

    abstract domain whose state we propagate

    include AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/index.html b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/index.html index f0b1df98ab5..ce01dbbabfc 100644 --- a/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/index.html +++ b/website/static/odoc/next/infer/Absint/TransferFunctions/module-type-SIL/index.html @@ -1,8 +1,8 @@ -SIL (infer.Absint.TransferFunctions.SIL)

    Module type TransferFunctions.SIL

    include S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : +SIL (infer.Absint.TransferFunctions.SIL)

    Module type TransferFunctions.SIL

    include S with type instr := IR.Sil.instr
    module CFG : ProcCfg.S

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/Absint/index.html b/website/static/odoc/next/infer/Absint/index.html index 6ec27f26232..ae779be0fd4 100644 --- a/website/static/odoc/next/infer/Absint/index.html +++ b/website/static/odoc/next/infer/Absint/index.html @@ -1,2 +1,2 @@ -Absint (infer.Absint)

    Module Absint

    module AbstractDomain : sig ... end
    module AbstractInterpreter : sig ... end
    module AccessPath : sig ... end

    Module for naming heap locations via the path used to access them (e.g., x.f.g, ya.b)

    module AccessTree : sig ... end
    module AnalysisCallbacks : sig ... end
    module AnalysisState : sig ... end

    State of symbolic execution

    module AndroidFramework : sig ... end

    Android lifecycle types and their lifecycle methods that are called by the framework

    module Annotations : sig ... end

    Annotations.

    module Bindings : sig ... end
    module CallSite : sig ... end
    module ConcurrencyModels : sig ... end
    module Decompile : sig ... end
    module Errlog : sig ... end

    Module for error logs.

    module Exe_env : sig ... end

    Execution environments are a means to get a function's type environment and integer widths and cache those

    module ExplicitTrace : sig ... end
    module FormalMap : sig ... end
    module HilExp : sig ... end
    module HilInstr : sig ... end
    module IdAccessPathMapDomain : sig ... end

    mapping of ids to raw access paths. useful for id-normalizing access paths

    module InterproceduralAnalysis : sig ... end
    module IntraproceduralAnalysis : sig ... end
    module IssueLog : sig ... end
    module IssueToReport : sig ... end
    module Localise : sig ... end

    Support for localisation

    module LowerHil : sig ... end
    module MemoryAccess : sig ... end
    module MethodMatcher : sig ... end
    module Mleak_buckets : sig ... end

    This module handles buckets of memory leaks

    module NoReturnModels : sig ... end
    module NullsafeMode : sig ... end
    module Passthrough : sig ... end
    module PatternMatch : sig ... end

    Module for Pattern matching.

    module ProcCfg : sig ... end

    Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block

    module ProcnameDispatcher : sig ... end
    module Reporting : sig ... end

    Type of functions to report issues to the error_log in a spec.

    module Sanitizer : sig ... end
    module Scheduler : sig ... end
    module Sink : sig ... end
    module SinkTrace : sig ... end
    module Source : sig ... end
    module SubtypingCheck : sig ... end
    module TaintTrace : sig ... end
    module TaintTraceElem : sig ... end
    module TaskSchedulerTypes : sig ... end
    module TransferFunctions : sig ... end

    Transfer functions that push abstract states across instructions. A typical client should implement the Make signature to allow the transfer functions to be used with any kind of CFG.

    \ No newline at end of file +Absint (infer.Absint)

    Module Absint

    module AbstractDomain : sig ... end
    module AbstractInterpreter : sig ... end
    module AccessPath : sig ... end

    Module for naming heap locations via the path used to access them (e.g., x.f.g, ya.b)

    module AccessTree : sig ... end
    module AnalysisCallbacks : sig ... end
    module AnalysisResult : sig ... end
    module AnalysisState : sig ... end

    State of symbolic execution

    module AndroidFramework : sig ... end

    Android lifecycle types and their lifecycle methods that are called by the framework

    module Annotations : sig ... end

    Annotations.

    module Bindings : sig ... end
    module CallSite : sig ... end
    module ConcurrencyModels : sig ... end
    module Decompile : sig ... end
    module Errlog : sig ... end

    Module for error logs.

    module Exe_env : sig ... end

    Execution environments are a means to get a function's type environment and integer widths and cache those

    module ExplicitTrace : sig ... end
    module FormalMap : sig ... end
    module HilExp : sig ... end
    module HilInstr : sig ... end
    module IdAccessPathMapDomain : sig ... end

    mapping of ids to raw access paths. useful for id-normalizing access paths

    module InterproceduralAnalysis : sig ... end
    module IntraproceduralAnalysis : sig ... end
    module IssueLog : sig ... end
    module IssueToReport : sig ... end
    module Localise : sig ... end

    Support for localisation

    module LowerHil : sig ... end
    module MemoryAccess : sig ... end
    module MethodMatcher : sig ... end
    module Mleak_buckets : sig ... end

    This module handles buckets of memory leaks

    module NoReturnModels : sig ... end
    module NullsafeMode : sig ... end
    module Passthrough : sig ... end
    module PatternMatch : sig ... end

    Module for Pattern matching.

    module ProcCfg : sig ... end

    Control-flow graph for a single procedure (as opposed to cfg.ml, which represents a cfg for a file). Defines useful wrappers that allows us to do tricks like turn a forward cfg to into a backward one, or view a cfg as having a single instruction per block

    module ProcnameDispatcher : sig ... end
    module Reporting : sig ... end

    Type of functions to report issues to the error_log in a spec.

    module Sanitizer : sig ... end
    module Scheduler : sig ... end
    module Sink : sig ... end
    module SinkTrace : sig ... end
    module Source : sig ... end
    module SubtypingCheck : sig ... end
    module TaintTrace : sig ... end
    module TaintTraceElem : sig ... end
    module TaskSchedulerTypes : sig ... end
    module TransferFunctions : sig ... end

    Transfer functions that push abstract states across instructions. A typical client should implement the Make signature to allow the transfer functions to be used with any kind of CFG.

    diff --git a/website/static/odoc/next/infer/BO/AbsLoc/Allocsite/index.html b/website/static/odoc/next/infer/BO/AbsLoc/Allocsite/index.html index cfecc470d23..8319f9b68bc 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/Allocsite/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/Allocsite/index.html @@ -1,10 +1,10 @@ -Allocsite (infer.BO.AbsLoc.Allocsite)

    Module AbsLoc.Allocsite

    type t = private
    1. | Unknown
    2. | Symbol of Symb.SymbolPath.partial
    3. | Known of {
      1. proc_name : string;
        (*

        the name of the procedure (builtin) which created the allocsite

        *)
      2. caller_pname : IR.Procname.t option;
        (*

        the name of the procedure for that the allocsite was created. That is, the procedure that called proc_name

        *)
      3. node_hash : int;
        (*

        hash of the node being allocated

        *)
      4. inst_num : int;
        (*

        order of the instruction in the node, i.e. n-th instruction

        *)
      5. dimension : int;
        (*

        depth of nested array

        *)
      6. represents_multiple_values : bool;
      7. path : Symb.SymbolPath.partial option;
      }
    4. | LiteralString of string
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val unknown : t
    val is_unknown : t -> bool
    val make : +Allocsite (infer.BO.AbsLoc.Allocsite)

    Module AbsLoc.Allocsite

    type t = private
    1. | Unknown
    2. | Symbol of Symb.SymbolPath.partial
    3. | Known of {
      1. proc_name : string;
        (*

        the name of the procedure (builtin) which created the allocsite

        *)
      2. caller_pname : IR.Procname.t option;
        (*

        the name of the procedure for that the allocsite was created. That is, the procedure that called proc_name

        *)
      3. node_hash : int;
        (*

        hash of the node being allocated

        *)
      4. inst_num : int;
        (*

        order of the instruction in the node, i.e. n-th instruction

        *)
      5. dimension : int;
        (*

        depth of nested array

        *)
      6. represents_multiple_values : bool;
      7. path : Symb.SymbolPath.partial option;
      }
    4. | LiteralString of string
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val unknown : t
    val is_unknown : t -> bool
    val make : IR.Procname.t -> - caller_pname:IR.Procname.t option -> - node_hash:int -> - inst_num:int -> - dimension:int -> - path:Symb.SymbolPath.partial option -> - represents_multiple_values:bool -> - t
    val make_symbol : Symb.SymbolPath.partial -> t
    val literal_string : string -> t
    val get_param_path : t -> Symb.SymbolPath.partial option
    val eq : t -> t -> Boolean.t
    \ No newline at end of file + caller_pname:IR.Procname.t option -> + node_hash:int -> + inst_num:int -> + dimension:int -> + path:Symb.SymbolPath.partial option -> + represents_multiple_values:bool -> + t
    val make_symbol : Symb.SymbolPath.partial -> t
    val literal_string : string -> t
    val get_param_path : t -> Symb.SymbolPath.partial option
    val eq : t -> t -> Boolean.t
    diff --git a/website/static/odoc/next/infer/BO/AbsLoc/Loc/index.html b/website/static/odoc/next/infer/BO/AbsLoc/Loc/index.html index a678bc6626d..c034c8c6cf9 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/Loc/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/Loc/index.html @@ -1,2 +1,2 @@ -Loc (infer.BO.AbsLoc.Loc)

    Module AbsLoc.Loc

    type prim = private
    1. | Var of IR.Var.t
    2. | Allocsite of Allocsite.t
    val compare_prim : prim -> prim -> int
    include Ppx_compare_lib.Comparable.S with type t := t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val of_allocsite : Allocsite.t -> t
    val of_c_strlen : t -> t

    It appends the strlen field.

    val of_id : IR.Ident.t -> t
    val of_path : Symb.SymbolPath.partial -> t
    val of_pvar : IR.Pvar.t -> t
    val of_var : IR.Var.t -> t
    val unknown : t
    val exists_pvar : f:(IR.Pvar.t -> bool) -> t -> bool

    It checks if a pvar in location satisfies f.

    val exists_str : f:(string -> bool) -> t -> bool

    It checks if a variable or a field name in the location path satisfies f.

    val get_literal_string : t -> string option
    val get_literal_string_strlen : t -> string option
    val get_path : t -> Symb.SymbolPath.partial option
    val get_param_path : t -> Symb.SymbolPath.partial option

    As get_path, but returns None if the path doesn't correspond to parameter passed by reference.

    val is_trans_field_of : loc:t -> field_loc:t -> bool

    Checks if field_loc is a direct or indirect field of loc.

    val is_frontend_tmp : t -> bool
    val is_global : t -> bool
    val get_global_array_initializer : t -> IR.Procname.t option

    Return the name of global initializer when given abstract location represents a global constant array value

    val is_pretty : t -> bool

    It checks if it is representable with pretty form, e.g., with a path or with a variable name.

    val is_return : t -> bool
    val is_unknown : t -> bool
    val represents_multiple_values : t -> bool
    val is_objc_collection_internal_array : t -> bool
    val append_field : ?typ:IR.Typ.t -> t -> IR.Fieldname.t -> t

    It appends field. typ is the type of fn.

    \ No newline at end of file +Loc (infer.BO.AbsLoc.Loc)

    Module AbsLoc.Loc

    type prim = private
    1. | Var of IR.Var.t
    2. | Allocsite of Allocsite.t
    val compare_prim : prim -> prim -> int
    include Ppx_compare_lib.Comparable.S with type t := t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val of_allocsite : Allocsite.t -> t
    val of_c_strlen : t -> t

    It appends the strlen field.

    val of_id : IR.Ident.t -> t
    val of_path : Symb.SymbolPath.partial -> t
    val of_pvar : IR.Pvar.t -> t
    val of_var : IR.Var.t -> t
    val unknown : t
    val exists_pvar : f:(IR.Pvar.t -> bool) -> t -> bool

    It checks if a pvar in location satisfies f.

    val exists_str : f:(string -> bool) -> t -> bool

    It checks if a variable or a field name in the location path satisfies f.

    val get_literal_string : t -> string option
    val get_literal_string_strlen : t -> string option
    val get_path : t -> Symb.SymbolPath.partial option
    val get_param_path : t -> Symb.SymbolPath.partial option

    As get_path, but returns None if the path doesn't correspond to parameter passed by reference.

    val is_trans_field_of : loc:t -> field_loc:t -> bool

    Checks if field_loc is a direct or indirect field of loc.

    val is_frontend_tmp : t -> bool
    val is_global : t -> bool
    val get_global_array_initializer : t -> IR.Procname.t option

    Return the name of global initializer when given abstract location represents a global constant array value

    val is_pretty : t -> bool

    It checks if it is representable with pretty form, e.g., with a path or with a variable name.

    val is_return : t -> bool
    val is_unknown : t -> bool
    val represents_multiple_values : t -> bool
    val is_objc_collection_internal_array : t -> bool
    val append_field : ?typ:IR.Typ.t -> t -> IR.Fieldname.t -> t

    It appends field. typ is the type of fn.

    diff --git a/website/static/odoc/next/infer/BO/AbsLoc/LocSet/index.html b/website/static/odoc/next/infer/BO/AbsLoc/LocSet/index.html index 8206083fb9a..f3f24ee8ac7 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/LocSet/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/LocSet/index.html @@ -1,2 +1,2 @@ -LocSet (infer.BO.AbsLoc.LocSet)

    Module AbsLoc.LocSet

    include IStdlib.IStd.Caml.Set.S with type elt = Loc.t
    type elt = Loc.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +LocSet (infer.BO.AbsLoc.LocSet)

    Module AbsLoc.LocSet

    include IStdlib.IStd.Caml.Set.S with type elt = Loc.t
    type elt = Loc.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html b/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html index 2baf159bb6c..58406336056 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html @@ -1,2 +1,2 @@ -PowLoc (infer.BO.AbsLoc.PowLoc)

    Module AbsLoc.PowLoc

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val compare : t -> t -> int
    val get_parent_field : t -> t
    val append_field : ?typ:IR.Typ.t -> t -> fn:IR.Fieldname.t -> t
    val append_star_field : t -> fn:IR.Fieldname.t -> t
    val bot : t
    val add : Loc.t -> t -> t
    val of_list : Loc.t list -> t
    val exists : (Loc.t -> bool) -> t -> bool
    val mem : Loc.t -> t -> bool
    val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
    val min_elt_opt : t -> Loc.t option
    val singleton : Loc.t -> t
    val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
    val cast : IR.Typ.t -> t -> t
    val of_c_strlen : t -> t

    It appends the strlen field.

    val unknown : t
    val exists_str : f:(string -> bool) -> t -> bool

    It checks if a variable or a field name in the location path satisfies f.

    val is_bot : t -> bool
    type eval_locpath = Symb.SymbolPath.partial -> t

    Type for evaluating a path to an abstract location.

    val subst : t -> eval_locpath -> t

    It substitutes paths in the abstract location using eval_locpath.

    val subst_loc : Loc.t -> eval_locpath -> t

    It substitutes paths in the abstract location using eval_locpath.

    val lift_cmp : Boolean.EqualOrder.t -> t -> t -> Boolean.t

    It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

    val to_set : t -> LocSet.t
    val get_linked_list_next : lhs:t -> rhs:t -> Loc.t option

    It checks whether rhs is of lhs.any_field, which is a heuristic for detecting a linked list, e.g. x = x.next(). It returns Some lhs if the condition is satisfied, None otherwise.

    val is_unknown : t -> bool
    val is_single_known_loc : t -> bool

    Returns true if the set consists of a single known location.

    \ No newline at end of file +PowLoc (infer.BO.AbsLoc.PowLoc)

    Module AbsLoc.PowLoc

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val compare : t -> t -> int
    val get_parent_field : t -> t
    val append_field : ?typ:IR.Typ.t -> t -> fn:IR.Fieldname.t -> t
    val append_star_field : t -> fn:IR.Fieldname.t -> t
    val bot : t
    val add : Loc.t -> t -> t
    val of_list : Loc.t list -> t
    val exists : (Loc.t -> bool) -> t -> bool
    val mem : Loc.t -> t -> bool
    val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
    val min_elt_opt : t -> Loc.t option
    val singleton : Loc.t -> t
    val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
    val cast : IR.Typ.t -> t -> t
    val of_c_strlen : t -> t

    It appends the strlen field.

    val unknown : t
    val exists_str : f:(string -> bool) -> t -> bool

    It checks if a variable or a field name in the location path satisfies f.

    val is_bot : t -> bool
    type eval_locpath = Symb.SymbolPath.partial -> t

    Type for evaluating a path to an abstract location.

    val subst : t -> eval_locpath -> t

    It substitutes paths in the abstract location using eval_locpath.

    val subst_loc : Loc.t -> eval_locpath -> t

    It substitutes paths in the abstract location using eval_locpath.

    val lift_cmp : Boolean.EqualOrder.t -> t -> t -> Boolean.t

    It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

    val to_set : t -> LocSet.t
    val get_linked_list_next : lhs:t -> rhs:t -> Loc.t option

    It checks whether rhs is of lhs.any_field, which is a heuristic for detecting a linked list, e.g. x = x.next(). It returns Some lhs if the condition is satisfied, None otherwise.

    val is_unknown : t -> bool
    val is_single_known_loc : t -> bool

    Returns true if the set consists of a single known location.

    diff --git a/website/static/odoc/next/infer/BO/AbsLoc/index.html b/website/static/odoc/next/infer/BO/AbsLoc/index.html index 36dcccd6a93..065ec1753c6 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/index.html @@ -1,2 +1,2 @@ -AbsLoc (infer.BO.AbsLoc)

    Module BO.AbsLoc

    module Allocsite : sig ... end
    module Loc : sig ... end
    module PowLoc : sig ... end
    val can_strong_update : PowLoc.t -> bool

    It checks if the abstract location can be updated strongly.

    \ No newline at end of file +AbsLoc (infer.BO.AbsLoc)

    Module BO.AbsLoc

    module Allocsite : sig ... end
    module Loc : sig ... end
    module PowLoc : sig ... end
    val can_strong_update : PowLoc.t -> bool

    It checks if the abstract location can be updated strongly.

    diff --git a/website/static/odoc/next/infer/BO/ArrayBlk/ArrInfo/index.html b/website/static/odoc/next/infer/BO/ArrayBlk/ArrInfo/index.html index 5c4910693c9..88f130d964b 100644 --- a/website/static/odoc/next/infer/BO/ArrayBlk/ArrInfo/index.html +++ b/website/static/odoc/next/infer/BO/ArrayBlk/ArrInfo/index.html @@ -1,2 +1,2 @@ -ArrInfo (infer.BO.ArrayBlk.ArrInfo)

    Module ArrayBlk.ArrInfo

    type t
    val byte_size : t -> Itv.t

    Return size of array block as bytes

    val get_offset : t -> Itv.t

    Return current offset of array block

    val get_size : t -> Itv.t

    Return size of array block, i.e., number of cells

    \ No newline at end of file +ArrInfo (infer.BO.ArrayBlk.ArrInfo)

    Module ArrayBlk.ArrInfo

    type t
    val byte_size : t -> Itv.t

    Return size of array block as bytes

    val get_offset : t -> Itv.t

    Return current offset of array block

    val get_size : t -> Itv.t

    Return size of array block, i.e., number of cells

    diff --git a/website/static/odoc/next/infer/BO/ArrayBlk/index.html b/website/static/odoc/next/infer/BO/ArrayBlk/index.html index dd9d9ac737c..8d81ffea451 100644 --- a/website/static/odoc/next/infer/BO/ArrayBlk/index.html +++ b/website/static/odoc/next/infer/BO/ArrayBlk/index.html @@ -1,5 +1,5 @@ -ArrayBlk (infer.BO.ArrayBlk)

    Module BO.ArrayBlk

    module ArrInfo : sig ... end
    include Absint.AbstractDomain.MapS +ArrayBlk (infer.BO.ArrayBlk)

    Module BO.ArrayBlk

    module ArrInfo : sig ... end
    include Absint.AbstractDomain.MapS with type key = AbsLoc.Allocsite.t and type value = ArrInfo.t
    include IStdlib.PrettyPrintable.PPMonoMap with type key = AbsLoc.Allocsite.t @@ -11,18 +11,18 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val compare : t -> t -> int
    val bot : t
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val compare : t -> t -> int
    val bot : t
    val make_c : AbsLoc.Allocsite.t -> - offset:Itv.t -> - size:Itv.t -> - stride:Itv.t -> - t

    Make an array block for C

    val make_java : AbsLoc.Allocsite.t -> length:Itv.t -> t

    Make an array block for Java

    val unknown : t
    val get_pow_loc : t -> AbsLoc.PowLoc.t

    Return all allocsites as PowLoc.t

    val is_bot : t -> bool
    val is_unknown : t -> bool
    val is_symbolic : t -> bool

    Check if there is a symbolic integer value in its offset or size

    val lift_cmp_itv : + offset:Itv.t -> + size:Itv.t -> + stride:Itv.t -> + t

    Make an array block for C

    val make_java : AbsLoc.Allocsite.t -> length:Itv.t -> t

    Make an array block for Java

    val unknown : t
    val get_pow_loc : t -> AbsLoc.PowLoc.t

    Return all allocsites as PowLoc.t

    val is_bot : t -> bool
    val is_unknown : t -> bool
    val is_symbolic : t -> bool

    Check if there is a symbolic integer value in its offset or size

    val lift_cmp_itv : (Itv.t -> Itv.t -> Boolean.t) -> Boolean.EqualOrder.t -> t -> t -> - Boolean.t

    Lift a comparison of Itv.t and Loc.t to that of t. The comparison for Itv.t is used for integer values such as offset and size, and the comparison for Loc.t is used for allocsites.

    val transform_length : f:(Itv.t -> Itv.t) -> t -> t

    Apply f to all sizes

    val prune_binop : IR.Binop.t -> t -> t -> t

    prune_binop bop x y returns a pruned value of x by bop and y.

    val prune_eq : t -> t -> t

    prune_eq x y returns a pruned value of x by == y.

    val prune_ne : t -> t -> t

    prune_ne x y returns a pruned value of x by != y.

    val prune_offset_le_size : t -> t

    Prune offset by offset <= size

    val minus_offset : t -> Itv.t -> t
    val plus_offset : t -> Itv.t -> t
    val diff : t -> t -> Itv.t

    Return difference of offsets between given array blocks

    val normalize : t -> t

    Normalize all interval values such as offset and size in it. Thus, if an interval value is invalid, the interval value is replaced with bottom.

    val subst : + Boolean.t

    Lift a comparison of Itv.t and Loc.t to that of t. The comparison for Itv.t is used for integer values such as offset and size, and the comparison for Loc.t is used for allocsites.

    val transform_length : f:(Itv.t -> Itv.t) -> t -> t

    Apply f to all sizes

    val prune_binop : IR.Binop.t -> t -> t -> t

    prune_binop bop x y returns a pruned value of x by bop and y.

    val prune_eq : t -> t -> t

    prune_eq x y returns a pruned value of x by == y.

    val prune_ne : t -> t -> t

    prune_ne x y returns a pruned value of x by != y.

    val prune_offset_le_size : t -> t

    Prune offset by offset <= size

    val minus_offset : t -> Itv.t -> t
    val plus_offset : t -> Itv.t -> t
    val diff : t -> t -> Itv.t

    Return difference of offsets between given array blocks

    val normalize : t -> t

    Normalize all interval values such as offset and size in it. Thus, if an interval value is invalid, the interval value is replaced with bottom.

    Substitute symbolic abstract locations and symbolic interval value in the array block. eval_sym is to get substituted interval values and eval_locpath is to get substituted abstract locaion values. It also returns a set of abstract locations containing non-allocsite locations from the substitution results. Since the key of ArrayBlk.t is AbsLoc.Allocsite.t, they cannot be written in this domain.

    val set_length : Itv.t -> t -> t
    val set_offset : Itv.t -> t -> t
    val set_stride : Z.t -> t -> t
    val get_symbols : t -> Symb.SymbolSet.t

    Return all symbols for integer values in it

    val get_offset : ?cost_mode:bool -> t -> Itv.t

    Return offset of the array block. If cost_mode is true, it returns a conservative (bigger than correct one), but not correct offset results.

    val get_size : ?cost_mode:bool -> t -> Itv.t

    Return size of the array block. If cost_mode is true, it returns a conservative (bigger than correct one), but not correct size results.

    \ No newline at end of file + AbsLoc.PowLoc.t * t

    Substitute symbolic abstract locations and symbolic interval value in the array block. eval_sym is to get substituted interval values and eval_locpath is to get substituted abstract locaion values. It also returns a set of abstract locations containing non-allocsite locations from the substitution results. Since the key of ArrayBlk.t is AbsLoc.Allocsite.t, they cannot be written in this domain.

    val set_length : Itv.t -> t -> t
    val set_offset : Itv.t -> t -> t
    val set_stride : Z.t -> t -> t
    val get_symbols : t -> Symb.SymbolSet.t

    Return all symbols for integer values in it

    val get_offset : ?cost_mode:bool -> t -> Itv.t

    Return offset of the array block. If cost_mode is true, it returns a conservative (bigger than correct one), but not correct offset results.

    val get_size : ?cost_mode:bool -> t -> Itv.t

    Return size of the array block. If cost_mode is true, it returns a conservative (bigger than correct one), but not correct size results.

    diff --git a/website/static/odoc/next/infer/BO/Boolean/EqualOrder/index.html b/website/static/odoc/next/infer/BO/Boolean/EqualOrder/index.html index 3e67d9ffcc2..5fedc5552ec 100644 --- a/website/static/odoc/next/infer/BO/Boolean/EqualOrder/index.html +++ b/website/static/odoc/next/infer/BO/Boolean/EqualOrder/index.html @@ -1,2 +1,2 @@ -EqualOrder (infer.BO.Boolean.EqualOrder)

    Module Boolean.EqualOrder

    This module provides abstract transfer functions for comparisons on unordered values, only based on equality, like abstract locations.

    type b = t
    type t = {
    1. on_equal : b;
    2. on_not_equal : b;
    }
    val eq : t
    val ne : t
    val strict_cmp : t

    > or <

    val loose_cmp : t

    >= or <=

    val top : t
    val of_equal : t -> b -> b
    \ No newline at end of file +EqualOrder (infer.BO.Boolean.EqualOrder)

    Module Boolean.EqualOrder

    This module provides abstract transfer functions for comparisons on unordered values, only based on equality, like abstract locations.

    type b = t
    type t = {
    1. on_equal : b;
    2. on_not_equal : b;
    }
    val eq : t
    val ne : t
    val strict_cmp : t

    > or <

    val loose_cmp : t

    >= or <=

    val top : t
    val of_equal : t -> b -> b
    diff --git a/website/static/odoc/next/infer/BO/Boolean/index.html b/website/static/odoc/next/infer/BO/Boolean/index.html index 3906acafc91..b2c754bb3be 100644 --- a/website/static/odoc/next/infer/BO/Boolean/index.html +++ b/website/static/odoc/next/infer/BO/Boolean/index.html @@ -1,2 +1,2 @@ -Boolean (infer.BO.Boolean)

    Module BO.Boolean

    type t =
    1. | Bottom
    2. | False
    3. | True
    4. | Top
    val of_bool : bool -> t
    val equal : t -> t -> bool
    val is_false : t -> bool
    val is_true : t -> bool
    val not_ : t -> t
    val and_ : t -> t -> t
    val or_ : t -> t -> t
    module EqualOrder : sig ... end

    This module provides abstract transfer functions for comparisons on unordered values, only based on equality, like abstract locations.

    \ No newline at end of file +Boolean (infer.BO.Boolean)

    Module BO.Boolean

    type t =
    1. | Bottom
    2. | False
    3. | True
    4. | Top
    val of_bool : bool -> t
    val equal : t -> t -> bool
    val is_false : t -> bool
    val is_true : t -> bool
    val not_ : t -> t
    val and_ : t -> t -> t
    val or_ : t -> t -> t
    module EqualOrder : sig ... end

    This module provides abstract transfer functions for comparisons on unordered values, only based on equality, like abstract locations.

    diff --git a/website/static/odoc/next/infer/BO/Bounds/Bound/index.html b/website/static/odoc/next/infer/BO/Bounds/Bound/index.html index d130e824477..efacf06e4d9 100644 --- a/website/static/odoc/next/infer/BO/Bounds/Bound/index.html +++ b/website/static/odoc/next/infer/BO/Bounds/Bound/index.html @@ -1,15 +1,15 @@ -Bound (infer.BO.Bounds.Bound)

    Module Bounds.Bound

    type t
    val mk_MultB : (Z.t * t * t) -> t

    It makes a bound of Bound.MultB, which represents a multiplication of two bounds. For example, MultB (1, x, y) represents 1 + x × y.

    type eval_sym = t Symb.Symbol.eval
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val of_int : int -> t
    val of_big_int : Z.t -> t
    val minf : t
    val mone : t
    val zero : t
    val one : t
    val z255 : t
    val pinf : t
    val of_normal_path : +Bound (infer.BO.Bounds.Bound)

    Module Bounds.Bound

    type t
    val mk_MultB : (Z.t * t * t) -> t

    It makes a bound of Bound.MultB, which represents a multiplication of two bounds. For example, MultB (1, x, y) represents 1 + x × y.

    type eval_sym = t Symb.Symbol.eval
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val of_int : int -> t
    val of_big_int : Z.t -> t
    val minf : t
    val mone : t
    val zero : t
    val one : t
    val z255 : t
    val pinf : t
    val of_normal_path : Symb.Symbol.make_t -> - unsigned:bool -> - ?non_int:bool -> + unsigned:bool -> + ?non_int:bool -> Symb.SymbolPath.partial -> t
    val of_offset_path : - is_void:bool -> + is_void:bool -> Symb.Symbol.make_t -> Symb.SymbolPath.partial -> t
    val of_length_path : - is_void:bool -> + is_void:bool -> Symb.Symbol.make_t -> Symb.SymbolPath.partial -> - t
    val of_modeled_path : Symb.Symbol.make_t -> Symb.SymbolPath.partial -> t
    val of_minmax_bound_min : t -> t -> t
    val of_minmax_bound_max : t -> t -> t
    val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_zero : t -> bool
    val is_infty : t -> bool
    val is_not_infty : t -> bool
    val is_minf : t -> bool
    val is_pinf : t -> bool
    val is_symbolic : t -> bool
    val le : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val eq : t -> t -> bool
    val underapprox_min : t -> t -> t
    val overapprox_min : t -> t -> t
    val underapprox_max : t -> t -> t
    val overapprox_max : t -> t -> t
    val widen_l : t -> t -> t
    val widen_l_thresholds : thresholds:Z.t list -> t -> t -> t
    val widen_u : t -> t -> t
    val widen_u_thresholds : thresholds:Z.t list -> t -> t -> t
    val get_const : t -> Z.t option
    val plus_l : weak:bool -> t -> t -> t
    val plus_u : weak:bool -> t -> t -> t
    val mult_const_l : Ints.NonZeroInt.t -> t -> t
    val mult_const_u : Ints.NonZeroInt.t -> t -> t
    val neg : t -> t
    val div_const_l : t -> Ints.NonZeroInt.t -> t option
    val div_const_u : t -> Ints.NonZeroInt.t -> t option
    val get_symbols : t -> Symb.SymbolSet.t
    val has_void_ptr_symb : t -> bool
    val are_similar : t -> t -> bool
    val simplify_bound_ends_from_paths : t -> t
    val simplify_min_one : t -> t
    val simplify_minimum_length : t -> t

    Simplifies c1 +/- min(c2, length) to c1 +- min(0,c2)

    val remove_positive_length_symbol : t -> t

    Removes positive symbols that are coming from length paths

    val get_same_one_symbol : t -> t -> Symb.SymbolPath.t option

    It returns a symbol s when the two bounds are all linear expressions of the symbol 1⋅s.

    val is_same_one_symbol : t -> t -> bool

    It returns true when the two bounds are linear expressions of the same one symbol 1⋅s.

    val is_incr_of : Symb.SymbolPath.partial -> t -> bool

    Check if bound is path+1 when called is_incr_of path bound

    val exists_str : f:(string -> bool) -> t -> bool
    \ No newline at end of file + t
    val of_modeled_path : Symb.Symbol.make_t -> Symb.SymbolPath.partial -> t
    val of_minmax_bound_min : t -> t -> t
    val of_minmax_bound_max : t -> t -> t
    val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_zero : t -> bool
    val is_infty : t -> bool
    val is_not_infty : t -> bool
    val is_minf : t -> bool
    val is_pinf : t -> bool
    val is_symbolic : t -> bool
    val le : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val eq : t -> t -> bool
    val underapprox_min : t -> t -> t
    val overapprox_min : t -> t -> t
    val underapprox_max : t -> t -> t
    val overapprox_max : t -> t -> t
    val widen_l : t -> t -> t
    val widen_l_thresholds : thresholds:Z.t list -> t -> t -> t
    val widen_u : t -> t -> t
    val widen_u_thresholds : thresholds:Z.t list -> t -> t -> t
    val get_const : t -> Z.t option
    val plus_l : weak:bool -> t -> t -> t
    val plus_u : weak:bool -> t -> t -> t
    val mult_const_l : Ints.NonZeroInt.t -> t -> t
    val mult_const_u : Ints.NonZeroInt.t -> t -> t
    val neg : t -> t
    val div_const_l : t -> Ints.NonZeroInt.t -> t option
    val div_const_u : t -> Ints.NonZeroInt.t -> t option
    val get_symbols : t -> Symb.SymbolSet.t
    val has_void_ptr_symb : t -> bool
    val are_similar : t -> t -> bool
    val simplify_bound_ends_from_paths : t -> t
    val simplify_min_one : t -> t
    val simplify_minimum_length : t -> t

    Simplifies c1 +/- min(c2, length) to c1 +- min(0,c2)

    val remove_positive_length_symbol : t -> t

    Removes positive symbols that are coming from length paths

    val get_same_one_symbol : t -> t -> Symb.SymbolPath.t option

    It returns a symbol s when the two bounds are all linear expressions of the symbol 1⋅s.

    val is_same_one_symbol : t -> t -> bool

    It returns true when the two bounds are linear expressions of the same one symbol 1⋅s.

    val is_incr_of : Symb.SymbolPath.partial -> t -> bool

    Check if bound is path+1 when called is_incr_of path bound

    val exists_str : f:(string -> bool) -> t -> bool
    diff --git a/website/static/odoc/next/infer/BO/Bounds/BoundTrace/index.html b/website/static/odoc/next/infer/BO/Bounds/BoundTrace/index.html index 144ad25534a..7ae85d7aad9 100644 --- a/website/static/odoc/next/infer/BO/Bounds/BoundTrace/index.html +++ b/website/static/odoc/next/infer/BO/Bounds/BoundTrace/index.html @@ -1,2 +1,2 @@ -BoundTrace (infer.BO.Bounds.BoundTrace)

    Module Bounds.BoundTrace

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val length : t -> int
    val make_err_trace : depth:int -> t -> Absint.Errlog.loc_trace
    val of_loop : IBase.Location.t -> t
    \ No newline at end of file +BoundTrace (infer.BO.Bounds.BoundTrace)

    Module Bounds.BoundTrace

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val length : t -> int
    val make_err_trace : depth:int -> t -> Absint.Errlog.loc_trace
    val of_loop : IBase.Location.t -> t
    diff --git a/website/static/odoc/next/infer/BO/Bounds/NonNegativeBound/index.html b/website/static/odoc/next/infer/BO/Bounds/NonNegativeBound/index.html index e731596111c..11d5172afa1 100644 --- a/website/static/odoc/next/infer/BO/Bounds/NonNegativeBound/index.html +++ b/website/static/odoc/next/infer/BO/Bounds/NonNegativeBound/index.html @@ -1,7 +1,7 @@ -NonNegativeBound (infer.BO.Bounds.NonNegativeBound)

    Module Bounds.NonNegativeBound

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val of_loop_bound : IBase.Location.t -> Bound.t -> t
    val of_modeled_function : string -> IBase.Location.t -> Bound.t -> t
    val of_big_int : trace:BoundTrace.t -> Z.t -> t
    val pp : hum:bool -> Stdlib.Format.formatter -> t -> unit
    val make_err_trace : t -> string * Absint.Errlog.loc_trace
    val mask_min_max_constant : t -> t
    val zero : IBase.Location.t -> t
    val int_lb : t -> Ints.NonNegativeInt.t
    val int_ub : t -> Ints.NonNegativeInt.t option
    val subst : +NonNegativeBound (infer.BO.Bounds.NonNegativeBound)

    Module Bounds.NonNegativeBound

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val of_loop_bound : IBase.Location.t -> Bound.t -> t
    val of_modeled_function : string -> IBase.Location.t -> Bound.t -> t
    val of_big_int : trace:BoundTrace.t -> Z.t -> t
    val pp : hum:bool -> Stdlib.Format.formatter -> t -> unit
    val make_err_trace : t -> string * Absint.Errlog.loc_trace
    val mask_min_max_constant : t -> t
    val zero : IBase.Location.t -> t
    val int_lb : t -> Ints.NonNegativeInt.t
    val int_ub : t -> Ints.NonNegativeInt.t option
    val split_mult : t -> (t * t) option
    \ No newline at end of file + (Ints.NonNegativeInt.t, t, BoundTrace.t) valclass
    val split_mult : t -> (t * t) option
    diff --git a/website/static/odoc/next/infer/BO/Bounds/index.html b/website/static/odoc/next/infer/BO/Bounds/index.html index c3a38d664c0..ee1ad6acf65 100644 --- a/website/static/odoc/next/infer/BO/Bounds/index.html +++ b/website/static/odoc/next/infer/BO/Bounds/index.html @@ -1,2 +1,2 @@ -Bounds (infer.BO.Bounds)

    Module BO.Bounds

    module F = Stdlib.Format
    module Bound : sig ... end
    module BoundTrace : sig ... end
    type ('c, 's, 't) valclass =
    1. | Constant of 'c
    2. | Symbolic of 's
    3. | ValTop of 't
    module NonNegativeBound : sig ... end
    \ No newline at end of file +Bounds (infer.BO.Bounds)

    Module BO.Bounds

    module F = Stdlib.Format
    module Bound : sig ... end
    module BoundTrace : sig ... end
    type ('c, 's, 't) valclass =
    1. | Constant of 'c
    2. | Symbolic of 's
    3. | ValTop of 't
    module NonNegativeBound : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunAnalysis/index.html b/website/static/odoc/next/infer/BO/BufferOverrunAnalysis/index.html index 285670aea4a..13c9c7113ed 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunAnalysis/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunAnalysis/index.html @@ -1,5 +1,5 @@ -BufferOverrunAnalysis (infer.BO.BufferOverrunAnalysis)

    Module BO.BufferOverrunAnalysis

    type invariant_map
    val cached_compute_invariant_map : +BufferOverrunAnalysis (infer.BO.BufferOverrunAnalysis)

    Module BO.BufferOverrunAnalysis

    \ No newline at end of file + BufferOverrunAnalysisSummary.t option
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunAnalysisSummary/index.html b/website/static/odoc/next/infer/BO/BufferOverrunAnalysisSummary/index.html index 44bbf4f8198..87280adae7c 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunAnalysisSummary/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunAnalysisSummary/index.html @@ -1,2 +1,2 @@ -BufferOverrunAnalysisSummary (infer.BO.BufferOverrunAnalysisSummary)

    Module BO.BufferOverrunAnalysisSummary

    val pp : Stdlib.Format.formatter -> t -> unit
    type get_summary = IR.Procname.t -> t option
    \ No newline at end of file +BufferOverrunAnalysisSummary (infer.BO.BufferOverrunAnalysisSummary)

    Module BO.BufferOverrunAnalysisSummary

    val pp : Stdlib.Format.formatter -> t -> unit
    type get_summary = IR.Procname.t -> t option
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunChecker/index.html b/website/static/odoc/next/infer/BO/BufferOverrunChecker/index.html index 75265cde2ca..adf5c843489 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunChecker/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunChecker/index.html @@ -1,5 +1,5 @@ -BufferOverrunChecker (infer.BO.BufferOverrunChecker)

    Module BO.BufferOverrunChecker

    val checker : +BufferOverrunChecker (infer.BO.BufferOverrunChecker)

    Module BO.BufferOverrunChecker

    \ No newline at end of file + BufferOverrunCheckerSummary.t option
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunCheckerSummary/index.html b/website/static/odoc/next/infer/BO/BufferOverrunCheckerSummary/index.html index 5db71b459df..fdf3e215028 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunCheckerSummary/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunCheckerSummary/index.html @@ -1,2 +1,2 @@ -BufferOverrunCheckerSummary (infer.BO.BufferOverrunCheckerSummary)

    Module BO.BufferOverrunCheckerSummary

    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +BufferOverrunCheckerSummary (infer.BO.BufferOverrunCheckerSummary)

    Module BO.BufferOverrunCheckerSummary

    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasRet/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasRet/index.html index da0642f4865..27193c1f4cb 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasRet/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasRet/index.html @@ -1,2 +1,2 @@ -AliasRet (infer.BO.BufferOverrunDomain.AliasRet)

    Module BufferOverrunDomain.AliasRet

    Alias domain for return values of callees

    \ No newline at end of file +AliasRet (infer.BO.BufferOverrunDomain.AliasRet)

    Module BufferOverrunDomain.AliasRet

    Alias domain for return values of callees

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTarget/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTarget/index.html index 88f6b09f1df..53d2ab320d7 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTarget/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTarget/index.html @@ -1,2 +1,2 @@ -AliasTarget (infer.BO.BufferOverrunDomain.AliasTarget)

    Module BufferOverrunDomain.AliasTarget

    type alias_typ =
    1. | Eq
      (*

      The value of alias target is exactly the same to the alias key.

      *)
    2. | Le
      (*

      The value of alias target is less than or equal to the alias key. For example, if there is an alias between %r and size(x)+i with the Le type, it means size(x)+i <= %r.

      *)
    type t =
    1. | Simple of {
      1. i : IR.IntLit.t;
      2. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      Since Sil distinguishes logical and program variables, we need a relation for pruning values of program variables. For example, a C statement if(x){...} is translated to %r=load(x); if(%r){...} in Sil. At the load statement, we record the alias between the values of %r and x, then we can prune not only the value of %r, but also that of x inside the if branch. The java_tmp field is an additional slot for keeping one more alias of temporary variable in Java. The i field is to express %r=load(x)+i.

      *)
    2. | Empty
      (*

      For pruning vector.length with vector::empty() results, we adopt a specific relation between %r and v->elements, where %r=v.empty(). So, if %r!=0, v's array length (v->elements->length) is pruned by =0. On the other hand, if %r==0, v's array length is pruned by >=1.

      *)
    3. | Size of {
      1. alias_typ : alias_typ;
      2. i : IR.IntLit.t;
      3. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for pruning vector's length. When there is a function call, %r=x.size(), the alias target for %r becomes AliasTarget.size {l=x.elements}. The java_tmp field is an additional slot for keeping one more alias of temporary variable in Java. The i field is to express %r=x.size()+i, which is required to follow the semantics of Array.add inside loops precisely.

      *)
    4. | Fgets
      (*

      This is for pruning return values of fgets. If the result of fgets is not null, the length of return value will be pruned to greater than or equal to 1.

      *)
    5. | IteratorSimple of {
      1. i : IR.IntLit.t;
      2. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking a relation between an iterator offset and an integer value. If %r has an alias to IteratorSimple {l; i}, which means that %r's iterator offset is same to l.

      *)
    6. | IteratorOffset of {
      1. alias_typ : alias_typ;
      2. i : IR.IntLit.t;
      3. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking a relation between an iterator offset and the length of the underlying collection. If %r has an alias to IteratorOffset {l; i}, which means that %r's iterator offset is same to length(l)+i.

      *)
    7. | IteratorHasNext of {
      1. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking return values of the hasNext function. If %r has an alias to HasNext {l}, which means that %r is same to l.hasNext().

      *)
    8. | IteratorNextObject of {
      1. objc_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking the return values of nextObject function. If %r has an alias to nextObject {l}, which means that %r is the same to l.nextObject().

      *)
    9. | Top

    Relations between values of logical variables(registers) and program variables

    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val equal : t -> t -> bool
    \ No newline at end of file +AliasTarget (infer.BO.BufferOverrunDomain.AliasTarget)

    Module BufferOverrunDomain.AliasTarget

    type alias_typ =
    1. | Eq
      (*

      The value of alias target is exactly the same to the alias key.

      *)
    2. | Le
      (*

      The value of alias target is less than or equal to the alias key. For example, if there is an alias between %r and size(x)+i with the Le type, it means size(x)+i <= %r.

      *)
    type t =
    1. | Simple of {
      1. i : IR.IntLit.t;
      2. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      Since Sil distinguishes logical and program variables, we need a relation for pruning values of program variables. For example, a C statement if(x){...} is translated to %r=load(x); if(%r){...} in Sil. At the load statement, we record the alias between the values of %r and x, then we can prune not only the value of %r, but also that of x inside the if branch. The java_tmp field is an additional slot for keeping one more alias of temporary variable in Java. The i field is to express %r=load(x)+i.

      *)
    2. | Empty
      (*

      For pruning vector.length with vector::empty() results, we adopt a specific relation between %r and v->elements, where %r=v.empty(). So, if %r!=0, v's array length (v->elements->length) is pruned by =0. On the other hand, if %r==0, v's array length is pruned by >=1.

      *)
    3. | Size of {
      1. alias_typ : alias_typ;
      2. i : IR.IntLit.t;
      3. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for pruning vector's length. When there is a function call, %r=x.size(), the alias target for %r becomes AliasTarget.size {l=x.elements}. The java_tmp field is an additional slot for keeping one more alias of temporary variable in Java. The i field is to express %r=x.size()+i, which is required to follow the semantics of Array.add inside loops precisely.

      *)
    4. | Fgets
      (*

      This is for pruning return values of fgets. If the result of fgets is not null, the length of return value will be pruned to greater than or equal to 1.

      *)
    5. | IteratorSimple of {
      1. i : IR.IntLit.t;
      2. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking a relation between an iterator offset and an integer value. If %r has an alias to IteratorSimple {l; i}, which means that %r's iterator offset is same to l.

      *)
    6. | IteratorOffset of {
      1. alias_typ : alias_typ;
      2. i : IR.IntLit.t;
      3. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking a relation between an iterator offset and the length of the underlying collection. If %r has an alias to IteratorOffset {l; i}, which means that %r's iterator offset is same to length(l)+i.

      *)
    7. | IteratorHasNext of {
      1. java_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking return values of the hasNext function. If %r has an alias to HasNext {l}, which means that %r is same to l.hasNext().

      *)
    8. | IteratorNextObject of {
      1. objc_tmp : AbsLoc.Loc.t option;
      }
      (*

      This is for tracking the return values of nextObject function. If %r has an alias to nextObject {l}, which means that %r is the same to l.nextObject().

      *)
    9. | Top

    Relations between values of logical variables(registers) and program variables

    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTargets/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTargets/index.html index 85779cda43d..19d3dbb5317 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTargets/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/AliasTargets/index.html @@ -1,5 +1,5 @@ -AliasTargets (infer.BO.BufferOverrunDomain.AliasTargets)

    Module BufferOverrunDomain.AliasTargets

    include Absint.AbstractDomain.InvertedMapS +AliasTargets (infer.BO.BufferOverrunDomain.AliasTargets)

    Module BufferOverrunDomain.AliasTargets

    include Absint.AbstractDomain.InvertedMapS with type key = KeyRhs.t and type value = AliasTarget.t
    include IStdlib.PrettyPrintable.PPMonoMap with type key = KeyRhs.t @@ -11,4 +11,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val exists2 : (key -> value -> key -> value -> bool) -> t -> t -> bool
    val find_simple_alias : t -> key option

    Find a simple alias from the set of aliases

    val subst : subst_loc:(key -> key option) -> t -> t

    Substitute alias target value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val exists2 : (key -> value -> key -> value -> bool) -> t -> t -> bool
    val find_simple_alias : t -> key option

    Find a simple alias from the set of aliases

    val subst : subst_loc:(key -> key option) -> t -> t

    Substitute alias target value

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/CoreVal/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/CoreVal/index.html index 665ec96ce79..f631930f03d 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/CoreVal/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/CoreVal/index.html @@ -1,2 +1,2 @@ -CoreVal (infer.BO.BufferOverrunDomain.CoreVal)

    Module BufferOverrunDomain.CoreVal

    CoreVal is similar to Val, but its compare function is defined only on core parts, interval, pointers, and array blocks, of abstract value. This domain is to keep pruned values, where we do not need to care about the other fields in the abstract values.

    type t = Val.t
    \ No newline at end of file +CoreVal (infer.BO.BufferOverrunDomain.CoreVal)

    Module BufferOverrunDomain.CoreVal

    CoreVal is similar to Val, but its compare function is defined only on core parts, interval, pointers, and array blocks, of abstract value. This domain is to keep pruned values, where we do not need to care about the other fields in the abstract values.

    type t = Val.t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvThresholds/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvThresholds/index.html index 5a1e9b25de3..82ae1a3e11a 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvThresholds/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvThresholds/index.html @@ -1,2 +1,2 @@ -ItvThresholds (infer.BO.BufferOverrunDomain.ItvThresholds)

    Module BufferOverrunDomain.ItvThresholds

    Set of integers for threshold widening

    include IStdlib.PrettyPrintable.PPSet with type elt = Z.t
    include IStdlib.IStd.Caml.Set.S with type elt = Z.t
    type elt = Z.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +ItvThresholds (infer.BO.BufferOverrunDomain.ItvThresholds)

    Module BufferOverrunDomain.ItvThresholds

    Set of integers for threshold widening

    include IStdlib.PrettyPrintable.PPSet with type elt = Z.t
    include IStdlib.IStd.Caml.Set.S with type elt = Z.t
    type elt = Z.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvUpdatedBy/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvUpdatedBy/index.html index 9677d71b8a8..14aa6127808 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvUpdatedBy/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ItvUpdatedBy/index.html @@ -1,2 +1,2 @@ -ItvUpdatedBy (infer.BO.BufferOverrunDomain.ItvUpdatedBy)

    Module BufferOverrunDomain.ItvUpdatedBy

    Domain for recording which operations are used for evaluating interval values

    type t
    \ No newline at end of file +ItvUpdatedBy (infer.BO.BufferOverrunDomain.ItvUpdatedBy)

    Module BufferOverrunDomain.ItvUpdatedBy

    Domain for recording which operations are used for evaluating interval values

    type t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/KeyRhs/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/KeyRhs/index.html index 2630de02beb..fc9541b1cc3 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/KeyRhs/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/KeyRhs/index.html @@ -1,2 +1,2 @@ -KeyRhs (infer.BO.BufferOverrunDomain.KeyRhs)

    Module BufferOverrunDomain.KeyRhs

    Right hand side of the alias domain. See AliasTarget.

    type t = AbsLoc.Loc.t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    \ No newline at end of file +KeyRhs (infer.BO.BufferOverrunDomain.KeyRhs)

    Module BufferOverrunDomain.KeyRhs

    Right hand side of the alias domain. See AliasTarget.

    type t = AbsLoc.Loc.t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/LatestPrune/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/LatestPrune/index.html index dc6ac961bb0..3c2ce46d764 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/LatestPrune/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/LatestPrune/index.html @@ -1,7 +1,7 @@ -LatestPrune (infer.BO.BufferOverrunDomain.LatestPrune)

    Module BufferOverrunDomain.LatestPrune

    Domain to keep latest pruned values

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val is_top : t -> bool
    val subst : - ret_id:IR.Ident.t -> +LatestPrune (infer.BO.BufferOverrunDomain.LatestPrune)

    Module BufferOverrunDomain.LatestPrune

    Domain to keep latest pruned values

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val is_top : t -> bool
    val subst : + ret_id:IR.Ident.t -> eval_sym_trace -> IBase.Location.t -> t -> - (t, [ `SubstBottom | `SubstFail ]) IStdlib.IStd.result

    Substitute the latest pruned values. If the result is bottom, which means the path is unreachable. The substitution can be failed when a callee variable can be substituted to multiple abstract locations.

    \ No newline at end of file + (t, [ `SubstBottom | `SubstFail ]) IStdlib.IStd.result

    Substitute the latest pruned values. If the result is bottom, which means the path is unreachable. The substitution can be failed when a callee variable can be substituted to multiple abstract locations.

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/LoopHeadLoc/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/LoopHeadLoc/index.html index fb240c3e04f..cdcc2cceab7 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/LoopHeadLoc/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/LoopHeadLoc/index.html @@ -1,2 +1,2 @@ -LoopHeadLoc (infer.BO.BufferOverrunDomain.LoopHeadLoc)

    Module BufferOverrunDomain.LoopHeadLoc

    \ No newline at end of file +LoopHeadLoc (infer.BO.BufferOverrunDomain.LoopHeadLoc)

    Module BufferOverrunDomain.LoopHeadLoc

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Mem/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Mem/index.html index fc9c8dfbe08..621cc4daad7 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Mem/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Mem/index.html @@ -1,66 +1,66 @@ -Mem (infer.BO.BufferOverrunDomain.Mem)

    Module BufferOverrunDomain.Mem

    type 'has_oenv t0 =
    1. | Unreachable
      (*

      Memory of unreachable node

      *)
    2. | ExcRaised
      (*

      Memory of node that can be reachable only with exception raises that we want to ignore

      *)
    3. | Reachable of 'has_oenv MemReach.t0
    type no_oenv_t = IStdlib.GOption.none t0

    Memory type without an environment for on-demand symbol evaluation

    Memory type with an environment for on-demand symbol evaluation

    val unset_oenv : t -> no_oenv_t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val pp : Stdlib.Format.formatter -> _ t0 -> unit
    val unreachable : t
    val is_reachable : t -> bool
    type get_summary = IR.Procname.t -> no_oenv_t option
    val exc_raised : t
    val is_rep_multi_loc : AbsLoc.Loc.t -> _ t0 -> bool

    Check if an abstract location represents multiple concrete locations.

    val is_stack_loc : AbsLoc.Loc.t -> _ t0 -> bool

    Check if an abstract location is a stack variable, e.g., n$0.

    val set_prune_pairs : PrunePairs.t -> t -> t
    val set_latest_prune : LatestPrune.t -> t -> t
    val set_first_idx_of_null : AbsLoc.Loc.t -> Val.t -> t -> t

    In C string, set the index of the first null character, i.e., end of string, when called by set_first_idx_of_null loc_to_string index_value mem.

    val unset_first_idx_of_null : AbsLoc.Loc.t -> Val.t -> t -> t

    In C string, unset the index of the first null character, i.e., end of string, when called by unset_first_idx_of_null loc_to_string index_value mem. This is unsound because the index can be assigned as previous index + 1 that is a heuristic to keep string lengths in some loops.

    val get_c_strlen : AbsLoc.PowLoc.t -> _ t0 -> Val.t

    Get C string length that is set/unset by set_first_idex_of_null and unset_first_idex_of_null

    val get_latest_prune : _ t0 -> LatestPrune.t
    val get_reachable_locs_from : +Mem (infer.BO.BufferOverrunDomain.Mem)

    Module BufferOverrunDomain.Mem

    type 'has_oenv t0 =
    1. | Unreachable
      (*

      Memory of unreachable node

      *)
    2. | ExcRaised
      (*

      Memory of node that can be reachable only with exception raises that we want to ignore

      *)
    3. | Reachable of 'has_oenv MemReach.t0
    type no_oenv_t = IStdlib.GOption.none t0

    Memory type without an environment for on-demand symbol evaluation

    Memory type with an environment for on-demand symbol evaluation

    val unset_oenv : t -> no_oenv_t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val pp : Stdlib.Format.formatter -> _ t0 -> unit
    val unreachable : t
    val is_reachable : t -> bool
    type get_summary = IR.Procname.t -> no_oenv_t option
    val exc_raised : t
    val is_rep_multi_loc : AbsLoc.Loc.t -> _ t0 -> bool

    Check if an abstract location represents multiple concrete locations.

    val is_stack_loc : AbsLoc.Loc.t -> _ t0 -> bool

    Check if an abstract location is a stack variable, e.g., n$0.

    val set_prune_pairs : PrunePairs.t -> t -> t
    val set_latest_prune : LatestPrune.t -> t -> t
    val set_first_idx_of_null : AbsLoc.Loc.t -> Val.t -> t -> t

    In C string, set the index of the first null character, i.e., end of string, when called by set_first_idx_of_null loc_to_string index_value mem.

    val unset_first_idx_of_null : AbsLoc.Loc.t -> Val.t -> t -> t

    In C string, unset the index of the first null character, i.e., end of string, when called by unset_first_idx_of_null loc_to_string index_value mem. This is unsound because the index can be assigned as previous index + 1 that is a heuristic to keep string lengths in some loops.

    val get_c_strlen : AbsLoc.PowLoc.t -> _ t0 -> Val.t

    Get C string length that is set/unset by set_first_idex_of_null and unset_first_idex_of_null

    val get_latest_prune : _ t0 -> LatestPrune.t
    val get_reachable_locs_from : (IR.Pvar.t * IR.Typ.t) list -> AbsLoc.LocSet.t -> _ t0 -> AbsLoc.LocSet.t

    Get reachable locations from formals and locs when called get_reachable_locs_from formals locs mem

    val add_stack : - ?represents_multiple_values:bool -> + ?represents_multiple_values:bool -> AbsLoc.Loc.t -> Val.t -> t -> t

    Add an abstract value for stack variables such as n$0

    val add_stack_loc : AbsLoc.Loc.t -> t -> t
    val add_heap : - ?represents_multiple_values:bool -> + ?represents_multiple_values:bool -> AbsLoc.Loc.t -> Val.t -> t -> t

    Add an abstract value for non-stack variables

    val add_heap_set : - ?represents_multiple_values:bool -> + ?represents_multiple_values:bool -> AbsLoc.PowLoc.t -> Val.t -> t -> t
    val add_unknown : (IR.Ident.t * IR.Typ.t) -> - location:IBase.Location.t -> + location:IBase.Location.t -> t -> t

    Add an unknown value for stack variables

    val add_unknown_from : (IR.Ident.t * IR.Typ.t) -> - callee_pname:IR.Procname.t -> - location:IBase.Location.t -> + callee_pname:IR.Procname.t -> + location:IBase.Location.t -> t -> - t

    Add an unknown return value of callee_pname for stack variables

    val remove_vars : IR.Var.t list -> t -> t

    Remove temporary variables and if Config.bo_exit_frontend_gener_vars is true also frontend generated variables

    val find : AbsLoc.Loc.t -> _ t0 -> Val.t
    val find_opt : AbsLoc.Loc.t -> _ t0 -> Val.t option
    val find_set : ?typ:IR.Typ.t -> AbsLoc.PowLoc.t -> _ t0 -> Val.t
    val find_stack : AbsLoc.Loc.t -> _ t0 -> Val.t
    val find_alias_id : IR.Ident.t -> _ t0 -> AliasTargets.t

    Find aliases between given ident

    val find_alias_loc : AbsLoc.Loc.t -> _ t0 -> AliasTargets.t

    Find aliases between given abstract location

    val find_simple_alias : IR.Ident.t -> _ t0 -> (AbsLoc.Loc.t * IR.IntLit.t) list

    Find simple aliases between given ident. It returns a list of pairs of abstract locations and integer which represent aliases id == x + i.

    val find_size_alias : + t

    Add an unknown return value of callee_pname for stack variables

    val remove_vars : IR.Var.t list -> t -> t

    Remove temporary variables and if Config.bo_exit_frontend_gener_vars is true also frontend generated variables

    val find : AbsLoc.Loc.t -> _ t0 -> Val.t
    val find_opt : AbsLoc.Loc.t -> _ t0 -> Val.t option
    val find_set : ?typ:IR.Typ.t -> AbsLoc.PowLoc.t -> _ t0 -> Val.t
    val find_stack : AbsLoc.Loc.t -> _ t0 -> Val.t
    val find_alias_id : IR.Ident.t -> _ t0 -> AliasTargets.t

    Find aliases between given ident

    val find_alias_loc : AbsLoc.Loc.t -> _ t0 -> AliasTargets.t

    Find aliases between given abstract location

    val find_simple_alias : IR.Ident.t -> _ t0 -> (AbsLoc.Loc.t * IR.IntLit.t) list

    Find simple aliases between given ident. It returns a list of pairs of abstract locations and integer which represent aliases id == x + i.

    val find_size_alias : IR.Ident.t -> _ t0 -> (AliasTarget.alias_typ * AbsLoc.Loc.t * IR.IntLit.t * AbsLoc.Loc.t option) list

    Find size aliases between given ident. It returns a list of four elements, alias type == or >=, location x, integer i, java temporary variable $irvar0. This represents id == $irvar0 (== or >=) x.size() + i.

    Find aliases bound to the return variable

    val fgets_alias : IR.Ident.t -> AbsLoc.PowLoc.t -> t -> t

    Set fgets alias between an ident and an abstract location

    val apply_latest_prune : IR.Exp.t -> t -> t * PrunePairs.t

    Apply latest_prunes when given e : Exp.t is true. It returns pruned memory and pairs of pruned locations and values.

    val load_alias : IR.Ident.t -> AbsLoc.Loc.t -> AliasTarget.t -> t -> t

    Add an alias between ident and abstract location with given alias target

    val load_empty_alias : IR.Ident.t -> AbsLoc.Loc.t -> t -> t

    Add an empty alias between ident and abstract location, i.e., ident == loc.empty()

    val load_simple_alias : IR.Ident.t -> AbsLoc.Loc.t -> t -> t

    Add a simple alias between ident and abstract location, i.e., ident == loc

    val load_size_alias : IR.Ident.t -> AbsLoc.Loc.t -> t -> t

    Add a size alias between ident and abstract location, i.e., ident == loc.size()

    val store_simple_alias : AbsLoc.Loc.t -> IR.Exp.t -> t -> t

    Add a simple alias between abstract location and expression, i.e., loc == exp

    val forget_size_alias : AbsLoc.PowLoc.t -> t -> t

    Forget size aliases of given locs

    val incr_size_alias : AbsLoc.PowLoc.t -> t -> t

    Update size aliases when the size of loc is increased by one. For example if there was an alias ident == loc.size() + i, this changes it to ident == loc.size() + i - 1, since loc.size() has been increased.

    val incr_or_not_size_alias : AbsLoc.PowLoc.t -> t -> t

    Update size aliases when the size of loc may be increased by one. For example if there was an alias ident == loc.size() + i, this changes it to ident >= loc.size() + i - 1

    val add_iterator_has_next_alias : IR.Ident.t -> IR.Exp.t -> t -> t

    Add an AliasTarget.IteratorHasNext alias when ident = iterator.hasNext() is called

    val add_iterator_next_object_alias : - ret_id:IR.Ident.t -> - iterator:IR.Ident.t -> + ret_id:IR.Ident.t -> + iterator:IR.Ident.t -> t -> t

    Add an AliasTarget.IteratorNextObject alias when ident = iterator.nextObject() is called

    val incr_iterator_simple_alias_on_call : eval_sym_trace -> - callee_exit_mem:no_oenv_t -> + callee_exit_mem:no_oenv_t -> t -> t

    Update AliasTarget.IteratorSimple alias at function calls

    val add_iterator_alias : IR.Ident.t -> t -> t

    Add AliasTarget.IteratorSimple and AliasTarget.IteratorOffset aliases when Iteratable.iterator() is called

    val incr_iterator_offset_alias : IR.Exp.t -> t -> t

    Update iterator offset alias when iterator.next() is called

    val update_mem : - ?force_strong_update:IStdlib.IStd.Bool.t -> + ?force_strong_update:IStdlib.IStd.Bool.t -> AbsLoc.PowLoc.t -> Val.t -> t -> t

    Add a map from locations to a value. If the given set of locations is a singleton set and the only element represents one concrete abstract location or force_strong_update is true, it does strong update. Otherwise, weak update.

    val strong_update : AbsLoc.PowLoc.t -> Val.t -> t -> t
    val update_latest_prune : - updated_locs:AbsLoc.PowLoc.t -> + updated_locs:AbsLoc.PowLoc.t -> IR.Exp.t -> IR.Exp.t -> t -> - t

    Update latest prunes when store(x,1) or store(x,0) is called after assume statement

    val forget_unreachable_locs : formals:(IR.Pvar.t * IR.Typ.t) list -> t -> t

    Forget unreachable locations from formals

    val transform_mem : f:(Val.t -> Val.t) -> AbsLoc.PowLoc.t -> t -> t

    Apply f to values bound to given locs

    val add_cpp_iterator_cmp_alias : + t

    Update latest prunes when store(x,1) or store(x,0) is called after assume statement

    val forget_unreachable_locs : formals:(IR.Pvar.t * IR.Typ.t) list -> t -> t

    Forget unreachable locations from formals

    val transform_mem : f:(Val.t -> Val.t) -> AbsLoc.PowLoc.t -> t -> t

    Apply f to values bound to given locs

    val add_cpp_iterator_cmp_alias : IR.Ident.t -> - iter_lhs:IR.Pvar.t -> - iter_rhs:IR.Pvar.t -> + iter_lhs:IR.Pvar.t -> + iter_rhs:IR.Pvar.t -> t -> t

    Add a compare alias from ret_id to iter_lhs: Pvar.t and iter_rhs: Pvar.t comparison, i.e., ret_id -> {iter_lhs != iter_rhs} where the meaning of != is determined by whether iter_rhs is coming from begin or end

    val add_cpp_iter_begin_alias : IR.Pvar.t -> t -> t

    Add a begin alias for pvar

    val add_cpp_iter_end_alias : IR.Pvar.t -> t -> t

    Add a end alias for pvar

    val find_cpp_iterator_alias : IR.Ident.t -> t -> (IR.Pvar.t * IR.Pvar.t * IR.Binop.t) option

    Find the cpp iterator alias ret_id -> {iter_lhs (binop) iter_rhs}

    val propagate_cpp_iter_begin_or_end_alias : - new_pvar:IR.Pvar.t -> - existing_pvar:IR.Pvar.t -> + new_pvar:IR.Pvar.t -> + existing_pvar:IR.Pvar.t -> t -> - t

    Propagate the being/end alias information from existing to new

    \ No newline at end of file + t

    Propagate the being/end alias information from existing to new

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/MemReach/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/MemReach/index.html index 9172b74eaf1..c7018118f59 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/MemReach/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/MemReach/index.html @@ -1,6 +1,6 @@ -MemReach (infer.BO.BufferOverrunDomain.MemReach)

    Module BufferOverrunDomain.MemReach

    Domain for memory of reachable node

    type 'has_oenv t0

    'has_oenv represents an environment for on-demand symbol evaluation, which is required during the analysis, but not in the summary

    val range : - filter_loc:(AbsLoc.Loc.t -> LoopHeadLoc.t option) -> - node_id:IR.Procdesc.Node.id -> +MemReach (infer.BO.BufferOverrunDomain.MemReach)

    Module BufferOverrunDomain.MemReach

    Domain for memory of reachable node

    type 'has_oenv t0

    'has_oenv represents an environment for on-demand symbol evaluation, which is required during the analysis, but not in the summary

    val range : + filter_loc:(AbsLoc.Loc.t -> LoopHeadLoc.t option) -> + node_id:IR.Procdesc.Node.id -> t -> - Polynomials.NonNegativePolynomial.t

    Return the multiplication of the ranges of all the abstract locations in memory that satisfy the function filter_loc which filters abstract locations we should care about, e.g., control variables that decide how many times a node is executed

    \ No newline at end of file + Polynomials.NonNegativePolynomial.t

    Return the multiplication of the ranges of all the abstract locations in memory that satisfy the function filter_loc which filters abstract locations we should care about, e.g., control variables that decide how many times a node is executed

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ModeledRange/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ModeledRange/index.html index 2ab1afef240..b5a7bef219b 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/ModeledRange/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/ModeledRange/index.html @@ -1,6 +1,6 @@ -ModeledRange (infer.BO.BufferOverrunDomain.ModeledRange)

    Module BufferOverrunDomain.ModeledRange

    ModeledRange represents how many times the interval value can be updated by modeled functions. This domain is to support the case where there are mismatches between value of a control variable and actual number of loop iterations. For example,

    while((c = file_channel.read(buf)) != -1) { ... }

    the loop will iterate as many times as the file size, but the control variable c does not have that value. In these cases, it assigns a symbolic value of the file size to the modeled range of c, which is used when calculating the overall cost.

    type t
    val of_big_int : trace:Bounds.BoundTrace.t -> Z.t -> t
    val of_modeled_function : +ModeledRange (infer.BO.BufferOverrunDomain.ModeledRange)

    Module BufferOverrunDomain.ModeledRange

    ModeledRange represents how many times the interval value can be updated by modeled functions. This domain is to support the case where there are mismatches between value of a control variable and actual number of loop iterations. For example,

    while((c = file_channel.read(buf)) != -1) { ... }

    the loop will iterate as many times as the file size, but the control variable c does not have that value. In these cases, it assigns a symbolic value of the file size to the modeled range of c, which is used when calculating the overall cost.

    type t
    val of_big_int : trace:Bounds.BoundTrace.t -> Z.t -> t
    val of_modeled_function : IR.Procname.t -> IBase.Location.t -> Bounds.Bound.t -> - t
    \ No newline at end of file + t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunePairs/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunePairs/index.html index 71e5a9b6774..55aced63545 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunePairs/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunePairs/index.html @@ -1,5 +1,5 @@ -PrunePairs (infer.BO.BufferOverrunDomain.PrunePairs)

    Module BufferOverrunDomain.PrunePairs

    PrunePairs is a map from abstract locations to abstract values that represents pruned results in the latest pruning. It uses InvertedMap because more pruning means smaller abstract states.

    include Absint.AbstractDomain.InvertedMapS +PrunePairs (infer.BO.BufferOverrunDomain.PrunePairs)

    Module BufferOverrunDomain.PrunePairs

    PrunePairs is a map from abstract locations to abstract values that represents pruned results in the latest pruning. It uses InvertedMap because more pruning means smaller abstract states.

    include Absint.AbstractDomain.InvertedMapS with type key = AbsLoc.Loc.t and type value = PrunedVal.t
    include IStdlib.PrettyPrintable.PPMonoMap with type key = AbsLoc.Loc.t @@ -11,4 +11,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val is_reachable : t -> bool

    Check if a path is reachable, by using its pruned values

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val is_reachable : t -> bool

    Check if a path is reachable, by using its pruned values

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunedVal/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunedVal/index.html index ac129bdc02a..4985bcbc505 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunedVal/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PrunedVal/index.html @@ -1,2 +1,2 @@ -PrunedVal (infer.BO.BufferOverrunDomain.PrunedVal)

    Module BufferOverrunDomain.PrunedVal

    Domain to keep pruned history, which are pairs of a pruned value and an assumed expression

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val make : Val.t -> PruningExp.t -> t
    \ No newline at end of file +PrunedVal (infer.BO.BufferOverrunDomain.PrunedVal)

    Module BufferOverrunDomain.PrunedVal

    Domain to keep pruned history, which are pairs of a pruned value and an assumed expression

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val make : Val.t -> PruningExp.t -> t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PruningExp/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PruningExp/index.html index 539b2783be6..25b6050e011 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/PruningExp/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/PruningExp/index.html @@ -1,2 +1,2 @@ -PruningExp (infer.BO.BufferOverrunDomain.PruningExp)

    Module BufferOverrunDomain.PruningExp

    Domain to keep assumed expressions

    type t =
    1. | Unknown
    2. | Binop of {
      1. bop : IR.Binop.t;
      2. lhs : CoreVal.t;
      3. rhs : CoreVal.t;
      }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val make : IR.Binop.t -> lhs:Val.t -> rhs:Val.t -> t
    \ No newline at end of file +PruningExp (infer.BO.BufferOverrunDomain.PruningExp)

    Module BufferOverrunDomain.PruningExp

    Domain to keep assumed expressions

    type t =
    1. | Unknown
    2. | Binop of {
      1. bop : IR.Binop.t;
      2. lhs : CoreVal.t;
      3. rhs : CoreVal.t;
      }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val make : IR.Binop.t -> lhs:Val.t -> rhs:Val.t -> t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Reachability/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Reachability/index.html index c22dea67fad..2c9476cf537 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Reachability/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Reachability/index.html @@ -1,6 +1,6 @@ -Reachability (infer.BO.BufferOverrunDomain.Reachability)

    Module BufferOverrunDomain.Reachability

    Domain for reachability check

    type t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Stdlib.Format.formatter -> t -> unit
    val make : LatestPrune.t -> t
    val add_latest_prune : LatestPrune.t -> t -> t

    Add latest pruned information to this domain

    val subst : +Reachability (infer.BO.BufferOverrunDomain.Reachability)

    Module BufferOverrunDomain.Reachability

    Domain for reachability check

    type t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Stdlib.Format.formatter -> t -> unit
    val make : LatestPrune.t -> t
    val add_latest_prune : LatestPrune.t -> t -> t

    Add latest pruned information to this domain

    val subst : t -> eval_sym_trace -> IBase.Location.t -> - [ `Reachable of t | `Unreachable ]

    Substitute a reachability value

    \ No newline at end of file + [ `Reachable of t | `Unreachable ]

    Substitute a reachability value

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html index ed187f206b7..3885012e2c5 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html @@ -1,2 +1,2 @@ -Itv (infer.BO.BufferOverrunDomain.Val.Itv)

    Module Val.Itv

    val nat : t

    [0,+oo]

    val pos : t

    [1,+oo]

    val top : t

    [-oo,+oo]

    val zero : t

    [0,0]

    val one : t

    [1,1]

    val zero_255 : t

    [0,255]

    val m1_255 : t

    [-1,255]

    val unknown_bool : t

    [0,1]

    \ No newline at end of file +Itv (infer.BO.BufferOverrunDomain.Val.Itv)

    Module Val.Itv

    val nat : t

    [0,+oo]

    val pos : t

    [1,+oo]

    val top : t

    [-oo,+oo]

    val zero : t

    [0,0]

    val one : t

    [1,1]

    val zero_255 : t

    [0,255]

    val m1_255 : t

    [-1,255]

    val unknown_bool : t

    [0,1]

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/index.html index 9d1f21dd26a..2152474fa67 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/index.html @@ -1,72 +1,72 @@ -Val (infer.BO.BufferOverrunDomain.Val)

    Module BufferOverrunDomain.Val

    type t = {
    1. itv : Itv.t;
      (*

      Interval

      *)
    2. itv_thresholds : ItvThresholds.t;
    3. itv_updated_by : ItvUpdatedBy.t;
    4. modeled_range : ModeledRange.t;
    5. powloc : AbsLoc.PowLoc.t;
      (*

      Simple pointers

      *)
    6. arrayblk : ArrayBlk.t;
      (*

      Array blocks

      *)
    7. func_ptrs : FuncPtr.Set.t;
      (*

      Function pointers

      *)
    8. traces : BufferOverrunTrace.Set.t;
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bot : t
    val unknown : t
    val of_big_int : ItvThresholds.elt -> t
    val of_c_array_alloc : +Val (infer.BO.BufferOverrunDomain.Val)

    Module BufferOverrunDomain.Val

    type t = {
    1. itv : Itv.t;
      (*

      Interval

      *)
    2. itv_thresholds : ItvThresholds.t;
    3. itv_updated_by : ItvUpdatedBy.t;
    4. modeled_range : ModeledRange.t;
    5. powloc : AbsLoc.PowLoc.t;
      (*

      Simple pointers

      *)
    6. arrayblk : ArrayBlk.t;
      (*

      Array blocks

      *)
    7. func_ptrs : FuncPtr.Set.t;
      (*

      Function pointers

      *)
    8. traces : BufferOverrunTrace.Set.t;
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bot : t
    val unknown : t
    val of_big_int : ItvThresholds.elt -> t
    val of_c_array_alloc : AbsLoc.Allocsite.t -> - stride:int option -> - offset:Itv.t -> - size:Itv.t -> - traces:BufferOverrunTrace.Set.t -> + stride:int option -> + offset:Itv.t -> + size:Itv.t -> + traces:BufferOverrunTrace.Set.t -> t

    Construct C array allocation. stride is a byte size of cell, offset is initial offset of pointer which is usually zero, and size is a total number of cells.

    val of_java_array_alloc : AbsLoc.Allocsite.t -> - length:Itv.t -> - traces:BufferOverrunTrace.Set.t -> - t

    Construct Java array allocation. size is a total number of cells

    val of_int : int -> t
    val of_int_lit : IR.IntLit.t -> t
    val of_itv : ?traces:BufferOverrunTrace.Set.t -> Itv.t -> t
    val of_literal_string : IR.IntegerWidths.t -> string -> t
    val of_loc : ?traces:BufferOverrunTrace.Set.t -> AbsLoc.Loc.t -> t

    Create a value for a pointer pointing to x.

    val of_pow_loc : traces:BufferOverrunTrace.Set.t -> AbsLoc.PowLoc.t -> t

    Create a value for a pointer pointing to locations in powloc.

    val of_func_ptrs : FuncPtr.Set.t -> t
    val unknown_locs : t
    val unknown_from : + length:Itv.t -> + traces:BufferOverrunTrace.Set.t -> + t

    Construct Java array allocation. size is a total number of cells

    val of_int : int -> t
    val of_int_lit : IR.IntLit.t -> t
    val of_itv : ?traces:BufferOverrunTrace.Set.t -> Itv.t -> t
    val of_literal_string : IR.IntegerWidths.t -> string -> t
    val of_loc : ?traces:BufferOverrunTrace.Set.t -> AbsLoc.Loc.t -> t

    Create a value for a pointer pointing to x.

    val of_pow_loc : traces:BufferOverrunTrace.Set.t -> AbsLoc.PowLoc.t -> t

    Create a value for a pointer pointing to locations in powloc.

    val of_func_ptrs : FuncPtr.Set.t -> t
    val unknown_locs : t
    val unknown_from : IR.Typ.t -> - callee_pname:IR.Procname.t option -> - location:IBase.Location.t -> - t

    Unknown return value of callee_pname

    val is_bot : t -> bool

    Check if the value is bottom

    val is_unknown : t -> bool

    Return true if the value represents an unknown value. Note that this does not mean that it is identical with Dom.Val.unknown. This is because an unknown value is bound to a particular location (this affects fields sym, offset_sym, and size_sym - see MemReach.add_heap) and a to particular assignment (this affects the field traces - see Val.add_assign_trace_elem).

    val is_mone : t -> bool

    Check if the value is [-1,-1]

    val array_sizeof : t -> Itv.t

    Get array size

    val get_all_locs : t -> AbsLoc.PowLoc.t

    Get all locations, including pointers and array blocks

    val get_array_locs : t -> AbsLoc.PowLoc.t

    Get locations of array blocks

    val get_array_blk : t -> ArrayBlk.t
    val get_range_of_iterator : t -> t

    Get a range of an iterator value, for example, if iterator value is [lb,ub], it returns [0,ub].

    val get_itv : t -> Itv.t
    val get_modeled_range : t -> ModeledRange.t
    val get_pow_loc : t -> AbsLoc.PowLoc.t
    val get_func_ptrs : t -> FuncPtr.Set.t
    val get_traces : t -> BufferOverrunTrace.Set.t
    val set_array_length : IBase.Location.t -> length:t -> t -> t
    val set_array_offset : IBase.Location.t -> Itv.t -> t -> t
    val set_array_stride : Z.t -> t -> t
    val set_itv_updated_by_addition : t -> t
    val set_itv_updated_by_multiplication : t -> t
    val set_itv_updated_by_unknown : t -> t
    val set_modeled_range : ModeledRange.t -> t -> t
    val lnot : t -> t
    val neg : t -> t
    val plus_a : - ?f_trace: + callee_pname:IR.Procname.t option -> + location:IBase.Location.t -> + t

    Unknown return value of callee_pname

    val is_bot : t -> bool

    Check if the value is bottom

    val is_unknown : t -> bool

    Return true if the value represents an unknown value. Note that this does not mean that it is identical with Dom.Val.unknown. This is because an unknown value is bound to a particular location (this affects fields sym, offset_sym, and size_sym - see MemReach.add_heap) and a to particular assignment (this affects the field traces - see Val.add_assign_trace_elem).

    val is_mone : t -> bool

    Check if the value is [-1,-1]

    val array_sizeof : t -> Itv.t

    Get array size

    val get_all_locs : t -> AbsLoc.PowLoc.t

    Get all locations, including pointers and array blocks

    val get_array_locs : t -> AbsLoc.PowLoc.t

    Get locations of array blocks

    val get_array_blk : t -> ArrayBlk.t
    val get_range_of_iterator : t -> t

    Get a range of an iterator value, for example, if iterator value is [lb,ub], it returns [0,ub].

    val get_itv : t -> Itv.t
    val get_modeled_range : t -> ModeledRange.t
    val get_pow_loc : t -> AbsLoc.PowLoc.t
    val get_func_ptrs : t -> FuncPtr.Set.t
    val get_traces : t -> BufferOverrunTrace.Set.t
    val set_array_length : IBase.Location.t -> length:t -> t -> t
    val set_array_offset : IBase.Location.t -> Itv.t -> t -> t
    val set_array_stride : Z.t -> t -> t
    val set_itv_updated_by_addition : t -> t
    val set_itv_updated_by_multiplication : t -> t
    val set_itv_updated_by_unknown : t -> t
    val set_modeled_range : ModeledRange.t -> t -> t
    val lnot : t -> t
    val neg : t -> t

    Semantics of Binop.PlusA. f_trace merges traces of the operands. If f_trace is not given, it uses a default heuristic merge function.

    val plus_pi : t -> t -> t
    val minus_a : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val minus_pi : t -> t -> t
    val minus_pp : t -> t -> t
    val mult : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val div : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val mod_sem : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val shiftlt : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val shiftrt : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> t
    val lt_sem : t -> t -> t
    val gt_sem : t -> t -> t
    val le_sem : t -> t -> t
    val ge_sem : t -> t -> t
    val eq_sem : t -> t -> t
    val ne_sem : t -> t -> t
    val band_sem : - ?f_trace: + ?f_trace: (BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t -> BufferOverrunTrace.Set.t) -> t -> t -> - t
    val land_sem : t -> t -> t
    val lor_sem : t -> t -> t
    val unknown_bit : t -> t

    Semantic function for some bit operators which are hard to express in the domain, e.g., Unop.BNot.

    val prune_eq : t -> t -> t

    Pruning semantics for Binop.Eq. This prunes value of x when given x == y, i.e., prune_eq x y.

    val prune_ne : t -> t -> t

    Pruning semantics for Binop.Ne. This prunes value of x when given x != y, i.e., prune_ne x y.

    val prune_lt : t -> t -> t

    Pruning semantics for Binop.Lt. This prunes value of x when given x < y, i.e., prune_lt x y.

    val prune_ne_zero : t -> t

    Prune value of x when given x != 0

    val prune_eq_zero : t -> t

    Prune value of x when given x == 0

    val prune_ge_one : t -> t

    Prune value of x when given x >= 1

    val prune_length_lt : t -> Itv.t -> t

    Prune length of x when given x.length() < i

    val prune_length_le : t -> Itv.t -> t

    Prune length of x when given x.length() <= i

    val prune_length_eq : t -> Itv.t -> t

    Prune length of x when given x.length() == i

    val prune_length_eq_zero : t -> t

    Prune length of x when given x.length() == 0

    val prune_length_ge_one : t -> t

    Prune length of x when given x.length() >= 1

    val prune_binop : IR.Binop.t -> t -> t -> t

    Prune value of x when given x bop y, i.e., prune_binop bop x y

    val add_assign_trace_elem : IBase.Location.t -> AbsLoc.PowLoc.t -> t -> t

    Add assign trace for given abstract locations

    val cast : IR.Typ.t -> t -> t

    Semantics of cast. This updates type information in pointer values, rather than re-calculating sizes of array blocks.

    val subst : t -> eval_sym_trace -> IBase.Location.t -> t

    Substitution of symbols in the value

    val transform_array_length : IBase.Location.t -> f:(Itv.t -> Itv.t) -> t -> t

    Apply f on array lengths in the value

    module Itv : sig ... end
    \ No newline at end of file + t
    val land_sem : t -> t -> t
    val lor_sem : t -> t -> t
    val unknown_bit : t -> t

    Semantic function for some bit operators which are hard to express in the domain, e.g., Unop.BNot.

    val prune_eq : t -> t -> t

    Pruning semantics for Binop.Eq. This prunes value of x when given x == y, i.e., prune_eq x y.

    val prune_ne : t -> t -> t

    Pruning semantics for Binop.Ne. This prunes value of x when given x != y, i.e., prune_ne x y.

    val prune_lt : t -> t -> t

    Pruning semantics for Binop.Lt. This prunes value of x when given x < y, i.e., prune_lt x y.

    val prune_ne_zero : t -> t

    Prune value of x when given x != 0

    val prune_eq_zero : t -> t

    Prune value of x when given x == 0

    val prune_ge_one : t -> t

    Prune value of x when given x >= 1

    val prune_length_lt : t -> Itv.t -> t

    Prune length of x when given x.length() < i

    val prune_length_le : t -> Itv.t -> t

    Prune length of x when given x.length() <= i

    val prune_length_eq : t -> Itv.t -> t

    Prune length of x when given x.length() == i

    val prune_length_eq_zero : t -> t

    Prune length of x when given x.length() == 0

    val prune_length_ge_one : t -> t

    Prune length of x when given x.length() >= 1

    val prune_binop : IR.Binop.t -> t -> t -> t

    Prune value of x when given x bop y, i.e., prune_binop bop x y

    val add_assign_trace_elem : IBase.Location.t -> AbsLoc.PowLoc.t -> t -> t

    Add assign trace for given abstract locations

    val cast : IR.Typ.t -> t -> t

    Semantics of cast. This updates type information in pointer values, rather than re-calculating sizes of array blocks.

    val subst : t -> eval_sym_trace -> IBase.Location.t -> t

    Substitution of symbols in the value

    val transform_array_length : IBase.Location.t -> f:(Itv.t -> Itv.t) -> t -> t

    Apply f on array lengths in the value

    module Itv : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/index.html index bbde45546be..605d122ad57 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/index.html @@ -1,2 +1,2 @@ -BufferOverrunDomain (infer.BO.BufferOverrunDomain)

    Module BO.BufferOverrunDomain

    Set of integers for threshold widening

    module ItvUpdatedBy : sig ... end

    Domain for recording which operations are used for evaluating interval values

    module ModeledRange : sig ... end

    ModeledRange represents how many times the interval value can be updated by modeled functions. This domain is to support the case where there are mismatches between value of a control variable and actual number of loop iterations. For example,

    type eval_sym_trace = {
    1. eval_sym : Bounds.Bound.eval_sym;
      (*

      evaluating symbol

      *)
    2. eval_locpath : AbsLoc.PowLoc.eval_locpath;
      (*

      evaluating path

      *)
    3. eval_func_ptrs : FuncPtr.Set.eval_func_ptrs;
      (*

      evaluating function pointers

      *)
    4. trace_of_sym : Symb.Symbol.t -> BufferOverrunTrace.Set.t;
      (*

      getting traces of symbol

      *)
    }

    type for on-demand symbol evaluation in Inferbo

    module Val : sig ... end
    module KeyRhs : sig ... end

    Right hand side of the alias domain. See AliasTarget.

    module AliasTarget : sig ... end
    module AliasTargets : sig ... end
    module AliasRet : sig ... end

    Alias domain for return values of callees

    module CoreVal : sig ... end

    CoreVal is similar to Val, but its compare function is defined only on core parts, interval, pointers, and array blocks, of abstract value. This domain is to keep pruned values, where we do not need to care about the other fields in the abstract values.

    module PruningExp : sig ... end

    Domain to keep assumed expressions

    module PrunedVal : sig ... end

    Domain to keep pruned history, which are pairs of a pruned value and an assumed expression

    module PrunePairs : sig ... end

    PrunePairs is a map from abstract locations to abstract values that represents pruned results in the latest pruning. It uses InvertedMap because more pruning means smaller abstract states.

    module LatestPrune : sig ... end

    Domain to keep latest pruned values

    module Reachability : sig ... end

    Domain for reachability check

    module LoopHeadLoc : sig ... end
    module MemReach : sig ... end

    Domain for memory of reachable node

    module Mem : sig ... end
    \ No newline at end of file +BufferOverrunDomain (infer.BO.BufferOverrunDomain)

    Module BO.BufferOverrunDomain

    Set of integers for threshold widening

    module ItvUpdatedBy : sig ... end

    Domain for recording which operations are used for evaluating interval values

    module ModeledRange : sig ... end

    ModeledRange represents how many times the interval value can be updated by modeled functions. This domain is to support the case where there are mismatches between value of a control variable and actual number of loop iterations. For example,

    type eval_sym_trace = {
    1. eval_sym : Bounds.Bound.eval_sym;
      (*

      evaluating symbol

      *)
    2. eval_locpath : AbsLoc.PowLoc.eval_locpath;
      (*

      evaluating path

      *)
    3. eval_func_ptrs : FuncPtr.Set.eval_func_ptrs;
      (*

      evaluating function pointers

      *)
    4. trace_of_sym : Symb.Symbol.t -> BufferOverrunTrace.Set.t;
      (*

      getting traces of symbol

      *)
    }

    type for on-demand symbol evaluation in Inferbo

    module Val : sig ... end
    module KeyRhs : sig ... end

    Right hand side of the alias domain. See AliasTarget.

    module AliasTarget : sig ... end
    module AliasTargets : sig ... end
    module AliasRet : sig ... end

    Alias domain for return values of callees

    module CoreVal : sig ... end

    CoreVal is similar to Val, but its compare function is defined only on core parts, interval, pointers, and array blocks, of abstract value. This domain is to keep pruned values, where we do not need to care about the other fields in the abstract values.

    module PruningExp : sig ... end

    Domain to keep assumed expressions

    module PrunedVal : sig ... end

    Domain to keep pruned history, which are pairs of a pruned value and an assumed expression

    module PrunePairs : sig ... end

    PrunePairs is a map from abstract locations to abstract values that represents pruned results in the latest pruning. It uses InvertedMap because more pruning means smaller abstract states.

    module LatestPrune : sig ... end

    Domain to keep latest pruned values

    module Reachability : sig ... end

    Domain for reachability check

    module LoopHeadLoc : sig ... end
    module MemReach : sig ... end

    Domain for memory of reachable node

    module Mem : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunField/index.html b/website/static/odoc/next/infer/BO/BufferOverrunField/index.html index 83f29e112ab..43a211252da 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunField/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunField/index.html @@ -1,29 +1,29 @@ -BufferOverrunField (infer.BO.BufferOverrunField)

    Module BO.BufferOverrunField

    Inferbo-specific constant field names

    val pp : - pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> - sep:string -> +BufferOverrunField (infer.BO.BufferOverrunField)

    Module BO.BufferOverrunField

    Inferbo-specific constant field names

    val pp : + pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> + sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> - unit

    A parameterized pretty printer for field appended values

    val get_type : IR.Fieldname.t -> IR.Typ.t option

    Get type of field that is constructed in this module. This does not work in Java at the moment.

    val c_strlen : unit -> IR.Fieldname.t

    Field for C string's length

    val cpp_vector_elem : vec_typ:IR.Typ.t -> IR.Fieldname.t

    Field for C++ vector's elements

    val java_collection_internal_array : IR.Fieldname.t

    Field for Java collection's elements

    val java_linked_list_index : IR.Fieldname.t

    Virtual field for index of Java's linked list

    val java_linked_list_length : IR.Fieldname.t

    Virtual field for length of Java's linked list

    val java_linked_list_next : IR.Typ.t -> IR.Fieldname.t

    Virtual field for next of Java's linked list

    val java_list_files_length : IR.Fieldname.t

    Virtual field for length of Java's files list in a directory

    val cpp_collection_internal_array : IR.Fieldname.t

    Field for C++ collection's elements

    val is_cpp_vector_elem : IR.Fieldname.t -> bool

    Check if the field is for C++ vector's elements

    val is_java_collection_internal_array : IR.Fieldname.t -> bool

    Check if the field is for Java collection's elements

    val objc_collection_internal_array : IR.Fieldname.t

    Field for ObjC's collection's elements

    val objc_iterator_offset : IR.Fieldname.t

    Field for ObjC's nscollection's iterator offset

    Field domain constructor

    type 'prim t =
    1. | Prim of 'prim
    2. | Field of {
      1. prefix : 'prim t;
      2. fn : IR.Fieldname.t;
      3. typ : IR.Typ.t option;
      }
    3. | StarField of {
      1. prefix : 'prim t;
      2. last_field : IR.Fieldname.t;
      }
      (*

      Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

      • There is at most one StarField
      • StarField excluded, there are no duplicate fieldnames
      • StarField can only be followed by Deref elements
      *)
    include Ppx_compare_lib.Comparable.S1 with type 'prim t := 'prim t
    val compare : + unit

    A parameterized pretty printer for field appended values

    val get_type : IR.Fieldname.t -> IR.Typ.t option

    Get type of field that is constructed in this module. This does not work in Java at the moment.

    val c_strlen : unit -> IR.Fieldname.t

    Field for C string's length

    val cpp_vector_elem : vec_typ:IR.Typ.t -> IR.Fieldname.t

    Field for C++ vector's elements

    val java_collection_internal_array : IR.Fieldname.t

    Field for Java collection's elements

    val java_linked_list_index : IR.Fieldname.t

    Virtual field for index of Java's linked list

    val java_linked_list_length : IR.Fieldname.t

    Virtual field for length of Java's linked list

    val java_linked_list_next : IR.Typ.t -> IR.Fieldname.t

    Virtual field for next of Java's linked list

    val java_list_files_length : IR.Fieldname.t

    Virtual field for length of Java's files list in a directory

    val cpp_collection_internal_array : IR.Fieldname.t

    Field for C++ collection's elements

    val is_cpp_vector_elem : IR.Fieldname.t -> bool

    Check if the field is for C++ vector's elements

    val is_java_collection_internal_array : IR.Fieldname.t -> bool

    Check if the field is for Java collection's elements

    val objc_collection_internal_array : IR.Fieldname.t

    Field for ObjC's collection's elements

    val objc_iterator_offset : IR.Fieldname.t

    Field for ObjC's nscollection's iterator offset

    Field domain constructor

    type 'prim t =
    1. | Prim of 'prim
    2. | Field of {
      1. prefix : 'prim t;
      2. fn : IR.Fieldname.t;
      3. typ : IR.Typ.t option;
      }
    3. | StarField of {
      1. prefix : 'prim t;
      2. last_field : IR.Fieldname.t;
      }
      (*

      Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

      • There is at most one StarField
      • StarField excluded, there are no duplicate fieldnames
      • StarField can only be followed by Deref elements
      *)
    include Ppx_compare_lib.Comparable.S1 with type 'prim t := 'prim t
    val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S1 with type 'prim t := 'prim t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val mk_append_field : - prim_append_field: - (?typ:IR.Typ.t -> + prim_append_field: + (?typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> - (depth:int -> 'prim t -> 'prim t) -> + (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> - prim_append_star_field: + prim_append_star_field: ('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> - ?typ:IR.Typ.t -> + ?typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
    val mk_append_star_field : - prim_append_star_field: + prim_append_star_field: ('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> - 'prim t
    \ No newline at end of file + 'prim t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/Call/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/Call/index.html index de04bf670ea..76152d0ca48 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/Call/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/Call/index.html @@ -1,3 +1,3 @@ -Call (infer.BO.BufferOverrunModels.Call)

    Module BufferOverrunModels.Call

    \ No newline at end of file +Call (infer.BO.BufferOverrunModels.Call)

    Module BufferOverrunModels.Call

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/Collection/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/Collection/index.html index a8cbaf9881c..f33726c4054 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/Collection/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/Collection/index.html @@ -1,10 +1,10 @@ -Collection (infer.BO.BufferOverrunModels.Collection)

    Module BufferOverrunModels.Collection

    val create_collection : +Collection (infer.BO.BufferOverrunModels.Collection)

    Module BufferOverrunModels.Collection

    Create a collection value with the length and assign it to ret

    val eval_collection_length : IR.Exp.t -> BufferOverrunDomain.Mem.t -> - BufferOverrunDomain.Val.t

    Evaluate length of Java collection

    \ No newline at end of file + BufferOverrunDomain.Val.t

    Evaluate length of Java collection

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/Container/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/Container/index.html index 44ebddf6900..a6e2a9ae928 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/Container/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/Container/index.html @@ -1,5 +1,5 @@ -Container (infer.BO.BufferOverrunModels.Container)

    Module BufferOverrunModels.Container

    val eval_collection_length : +Container (infer.BO.BufferOverrunModels.Container)

    Module BufferOverrunModels.Container

    val eval_collection_length : IR.Exp.t -> BufferOverrunDomain.Mem.t -> - BufferOverrunDomain.Val.t

    Evaluate length of C++ container

    \ No newline at end of file + BufferOverrunDomain.Val.t

    Evaluate length of C++ container

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/JavaString/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/JavaString/index.html index a67db88face..94838fc52b0 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/JavaString/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/JavaString/index.html @@ -1,5 +1,5 @@ -JavaString (infer.BO.BufferOverrunModels.JavaString)

    Module BufferOverrunModels.JavaString

    val get_length : +JavaString (infer.BO.BufferOverrunModels.JavaString)

    Module BufferOverrunModels.JavaString

    Construct Java string from constant string

    \ No newline at end of file + BufferOverrunDomain.Mem.t

    Construct Java string from constant string

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/NSCollection/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/NSCollection/index.html index d39ac8be43d..29e5cd083c4 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/NSCollection/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/NSCollection/index.html @@ -1,5 +1,5 @@ -NSCollection (infer.BO.BufferOverrunModels.NSCollection)

    Module BufferOverrunModels.NSCollection

    val eval_collection_length : +NSCollection (infer.BO.BufferOverrunModels.NSCollection)

    Module BufferOverrunModels.NSCollection

    val eval_collection_length : IR.Exp.t -> BufferOverrunDomain.Mem.t -> - BufferOverrunDomain.Val.t

    Evaluate length of ObjC collection

    \ No newline at end of file + BufferOverrunDomain.Val.t

    Evaluate length of ObjC collection

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/NSString/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/NSString/index.html index 65c60ba2d51..fb3fe51a3b7 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/NSString/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/NSString/index.html @@ -1,6 +1,6 @@ -NSString (infer.BO.BufferOverrunModels.NSString)

    Module BufferOverrunModels.NSString

    val get_length : +NSString (infer.BO.BufferOverrunModels.NSString)

    Module BufferOverrunModels.NSString

    \ No newline at end of file + BufferOverrunDomain.Val.t

    Get length of NSString string

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunModels/index.html b/website/static/odoc/next/infer/BO/BufferOverrunModels/index.html index 831579880e8..362079b0d5e 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunModels/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunModels/index.html @@ -1,10 +1,10 @@ -BufferOverrunModels (infer.BO.BufferOverrunModels)

    Module BO.BufferOverrunModels

    type exec_fun = +BufferOverrunModels (infer.BO.BufferOverrunModels)

    Module BO.BufferOverrunModels

    type model = {
    1. exec : exec_fun;
    2. check : check_fun;
    }
    module Collection : sig ... end
    module Container : sig ... end
    module NSCollection : sig ... end
    module NSString : sig ... end
    module JavaString : sig ... end
    module Call : sig ... end
    \ No newline at end of file + BufferOverrunProofObligations.ConditionSet.checked_t
    type model = {
    1. exec : exec_fun;
    2. check : check_fun;
    }
    module Collection : sig ... end
    module Container : sig ... end
    module NSCollection : sig ... end
    module NSString : sig ... end
    module JavaString : sig ... end
    module Call : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunOndemandEnv/index.html b/website/static/odoc/next/infer/BO/BufferOverrunOndemandEnv/index.html index 904975bf6c6..606b388dd54 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunOndemandEnv/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunOndemandEnv/index.html @@ -1,2 +1,2 @@ -BufferOverrunOndemandEnv (infer.BO.BufferOverrunOndemandEnv)

    Module BO.BufferOverrunOndemandEnv

    type t = {
    1. tenv : IR.Tenv.t;
      (*

      type environment

      *)
    2. typ_of_param_path : Symb.SymbolPath.partial -> IR.Typ.t option;
      (*

      type of parameter

      *)
    3. may_last_field : Symb.SymbolPath.partial -> bool;
      (*

      if the path is a last field of a class in C++

      *)
    4. entry_location : IBase.Location.t;
      (*

      location of entry node

      *)
    5. integer_type_widths : IR.IntegerWidths.t;
      (*

      bit sizes of integer types

      *)
    6. class_name : IR.Typ.name option;
      (*

      class name of the procedure being analyzed

      *)
    }

    Environment for on-demand symbol evaluation

    \ No newline at end of file +BufferOverrunOndemandEnv (infer.BO.BufferOverrunOndemandEnv)

    Module BO.BufferOverrunOndemandEnv

    type t = {
    1. tenv : IR.Tenv.t;
      (*

      type environment

      *)
    2. typ_of_param_path : Symb.SymbolPath.partial -> IR.Typ.t option;
      (*

      type of parameter

      *)
    3. may_last_field : Symb.SymbolPath.partial -> bool;
      (*

      if the path is a last field of a class in C++

      *)
    4. entry_location : IBase.Location.t;
      (*

      location of entry node

      *)
    5. integer_type_widths : IR.IntegerWidths.t;
      (*

      bit sizes of integer types

      *)
    6. class_name : IR.Typ.name option;
      (*

      class name of the procedure being analyzed

      *)
    }

    Environment for on-demand symbol evaluation

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/Condition/index.html b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/Condition/index.html index b4dc0a63888..c34ac1d4f78 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/Condition/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/Condition/index.html @@ -1,2 +1,2 @@ -Condition (infer.BO.BufferOverrunProofObligations.Condition)

    Module BufferOverrunProofObligations.Condition

    type t
    \ No newline at end of file +Condition (infer.BO.BufferOverrunProofObligations.Condition)

    Module BufferOverrunProofObligations.Condition

    type t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionSet/index.html b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionSet/index.html index 5bc337174b9..555f235dcc0 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionSet/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionSet/index.html @@ -1,18 +1,18 @@ -ConditionSet (infer.BO.BufferOverrunProofObligations.ConditionSet)

    Module BufferOverrunProofObligations.ConditionSet

    type checked_t
    type summary_t
    val empty : checked_t
    val pp : Stdlib.Format.formatter -> checked_t -> unit
    val pp_summary : Stdlib.Format.formatter -> summary_t -> unit
    val add_array_access : +ConditionSet (infer.BO.BufferOverrunProofObligations.ConditionSet)

    Module BufferOverrunProofObligations.ConditionSet

    type checked_t
    type summary_t
    val empty : checked_t
    val pp : Stdlib.Format.formatter -> checked_t -> unit
    val pp_summary : Stdlib.Format.formatter -> summary_t -> unit
    val add_array_access : IBase.Location.t -> - offset:ItvPure.t -> - idx:ItvPure.t -> - size:ItvPure.t -> - last_included:bool -> - idx_traces:BufferOverrunTrace.Set.t -> - arr_traces:BufferOverrunTrace.Set.t -> - latest_prune:BufferOverrunDomain.LatestPrune.t -> + offset:ItvPure.t -> + idx:ItvPure.t -> + size:ItvPure.t -> + last_included:bool -> + idx_traces:BufferOverrunTrace.Set.t -> + arr_traces:BufferOverrunTrace.Set.t -> + latest_prune:BufferOverrunDomain.LatestPrune.t -> checked_t -> checked_t
    val add_alloc_size : IBase.Location.t -> - can_be_zero:bool -> - length:ItvPure.t -> + can_be_zero:bool -> + length:ItvPure.t -> BufferOverrunTrace.Set.t -> BufferOverrunDomain.LatestPrune.t -> checked_t -> @@ -21,19 +21,19 @@ IBase.Location.t -> IR.Procname.t -> IR.Binop.t -> - lhs:ItvPure.t -> - rhs:ItvPure.t -> - lhs_traces:BufferOverrunTrace.Set.t -> - rhs_traces:BufferOverrunTrace.Set.t -> - latest_prune:BufferOverrunDomain.LatestPrune.t -> + lhs:ItvPure.t -> + rhs:ItvPure.t -> + lhs_traces:BufferOverrunTrace.Set.t -> + rhs_traces:BufferOverrunTrace.Set.t -> + latest_prune:BufferOverrunDomain.LatestPrune.t -> checked_t -> checked_t
    val join : checked_t -> checked_t -> checked_t
    val report_errors : - report:(Condition.t -> ConditionTrace.t -> IBase.IssueType.t -> unit) -> + report:(Condition.t -> ConditionTrace.t -> IBase.IssueType.t -> unit) -> checked_t -> - unit
    val for_summary : checked_t -> summary_t
    \ No newline at end of file + unit
    val for_summary : checked_t -> summary_t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionTrace/index.html b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionTrace/index.html index 0faaba05b0d..d995582e557 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionTrace/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/ConditionTrace/index.html @@ -1,2 +1,2 @@ -ConditionTrace (infer.BO.BufferOverrunProofObligations.ConditionTrace)

    Module BufferOverrunProofObligations.ConditionTrace

    type t
    val get_report_location : t -> IBase.Location.t
    val get_val_traces : t -> BufferOverrunTrace.Issue.t
    \ No newline at end of file +ConditionTrace (infer.BO.BufferOverrunProofObligations.ConditionTrace)

    Module BufferOverrunProofObligations.ConditionTrace

    type t
    val get_report_location : t -> IBase.Location.t
    val get_val_traces : t -> BufferOverrunTrace.Issue.t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/index.html b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/index.html index 8b8c5825e8d..1be985ffc5d 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunProofObligations/index.html @@ -1,2 +1,2 @@ -BufferOverrunProofObligations (infer.BO.BufferOverrunProofObligations)

    Module BO.BufferOverrunProofObligations

    module ItvPure = Itv.ItvPure
    module Condition : sig ... end
    module ConditionTrace : sig ... end
    module ConditionSet : sig ... end
    val description : markup:bool -> Condition.t -> ConditionTrace.t -> string
    \ No newline at end of file +BufferOverrunProofObligations (infer.BO.BufferOverrunProofObligations)

    Module BO.BufferOverrunProofObligations

    module ItvPure = Itv.ItvPure
    module Condition : sig ... end
    module ConditionTrace : sig ... end
    module ConditionSet : sig ... end
    val description : markup:bool -> Condition.t -> ConditionTrace.t -> string
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunSemantics/Prune/index.html b/website/static/odoc/next/infer/BO/BufferOverrunSemantics/Prune/index.html index d2c4100cea6..022c7f4d9a2 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunSemantics/Prune/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunSemantics/Prune/index.html @@ -1,7 +1,7 @@ -Prune (infer.BO.BufferOverrunSemantics.Prune)

    Module BufferOverrunSemantics.Prune

    val prune : +Prune (infer.BO.BufferOverrunSemantics.Prune)

    Module BufferOverrunSemantics.Prune

    Prune memory with the given condition expression

    \ No newline at end of file + BufferOverrunDomain.Mem.t

    Prune memory with the given condition expression

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunSemantics/index.html b/website/static/odoc/next/infer/BO/BufferOverrunSemantics/index.html index 95970080844..f0cc8224e16 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunSemantics/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunSemantics/index.html @@ -1,5 +1,5 @@ -BufferOverrunSemantics (infer.BO.BufferOverrunSemantics)

    Module BO.BufferOverrunSemantics

    val is_stack_exp : IR.Exp.t -> BufferOverrunDomain.Mem.t -> bool

    Check if an expression is a stack variable such as n$0 or local variable for C array

    val eval : +BufferOverrunSemantics (infer.BO.BufferOverrunSemantics)

    Module BO.BufferOverrunSemantics

    val is_stack_exp : IR.Exp.t -> BufferOverrunDomain.Mem.t -> bool

    Check if an expression is a stack variable such as n$0 or local variable for C array

    Evaluate length of C string

    Evaluate the array length conservatively, which is useful when there are multiple array locations and their lengths are joined to top. For example, if the arr_locs points to two arrays a and b and if their lengths are a.length and b.length, this function evaluates its length as [0, a.length.ub + b.length.ub].

    type eval_mode =
    1. | EvalNormal
      (*

      Given a symbolic value of an unknown function Symb.SymbolPath.Callsite, it returns a symbolic interval value.

      *)
    2. | EvalPOCond
      (*

      Given a symbolic value of an unknown function, it returns the top interval value. This is used when substituting condition expressions of proof obligations.

      *)
    3. | EvalPOReachability
      (*

      This is similar to EvalPOCond, but it returns the bottom location, instead of the unknown location, when a location to substitute is not found. This is used when substituting reachabilities of proof obligations.

      *)
    4. | EvalCost
      (*

      This is similar to EvalNormal, but it is designed to be used in substitutions of the cost results, avoiding precision loss by joining of symbolic values. Normal join of two different symbolic values, s1 and s2, becomes top due to the limitation of our domain. On the other hand, in this mode, it returns an upperbound s1+s2 for the case, because the cost values only care about the upperbounds.

      *)

    Several modes of ondemand evaluations

    val mk_eval_sym_trace : - ?is_args_ref:bool -> + ?is_args_ref:bool -> IR.IntegerWidths.t -> (IR.Pvar.t * IR.Typ.t) list -> (IR.Exp.t * IR.Typ.t) list -> (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> BufferOverrunDomain.Mem.t -> - mode:eval_mode -> + mode:eval_mode -> BufferOverrunDomain.eval_sym_trace

    Make eval_sym function for on-demand symbol evaluation

    Make eval_sym function of EvalCost mode for on-demand symbol evaluation

    module Prune : sig ... end
    \ No newline at end of file + BufferOverrunDomain.eval_sym_trace

    Make eval_sym function of EvalCost mode for on-demand symbol evaluation

    module Prune : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunTrace/Issue/index.html b/website/static/odoc/next/infer/BO/BufferOverrunTrace/Issue/index.html index 2dfa60677c8..be34925bb0e 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunTrace/Issue/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunTrace/Issue/index.html @@ -1,5 +1,5 @@ -Issue (infer.BO.BufferOverrunTrace.Issue)

    Module BufferOverrunTrace.Issue

    Trace set with issue information

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    type binary =
    1. | ArrayAccess
    2. | Binop
    val binary : IBase.Location.t -> binary -> Set.t -> Set.t -> t

    Construct issue trace of binary operation. When binary is ArrayAccess, the former Set.t typed parameter is offset and the latter is length of array access.

    val alloc : IBase.Location.t -> Set.t -> t

    Construct issue trace of allocation

    val call : IBase.Location.t -> Set.t -> t -> t

    Merge caller's trace set and callee's issue, i.e., call location caller callee

    val has_unknown : t -> bool

    Check if the issue trace includes unknown function calls

    val exists_str : f:(string -> bool) -> t -> bool

    Check if the issue trace includes an abstract location that satisfies f

    val make_err_trace : - description:string -> +Issue (infer.BO.BufferOverrunTrace.Issue)

    Module BufferOverrunTrace.Issue

    Trace set with issue information

    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    type binary =
    1. | ArrayAccess
    2. | Binop
    val binary : IBase.Location.t -> binary -> Set.t -> Set.t -> t

    Construct issue trace of binary operation. When binary is ArrayAccess, the former Set.t typed parameter is offset and the latter is length of array access.

    val alloc : IBase.Location.t -> Set.t -> t

    Construct issue trace of allocation

    val call : IBase.Location.t -> Set.t -> t -> t

    Merge caller's trace set and callee's issue, i.e., call location caller callee

    val has_unknown : t -> bool

    Check if the issue trace includes unknown function calls

    val exists_str : f:(string -> bool) -> t -> bool

    Check if the issue trace includes an abstract location that satisfies f

    val make_err_trace : + description:string -> t -> - (string * Absint.Errlog.loc_trace) list

    Convert to the common Errlog format. The return value is a list of labelled Errlog.loc_traces.

    \ No newline at end of file + (string * Absint.Errlog.loc_trace) list

    Convert to the common Errlog format. The return value is a list of labelled Errlog.loc_traces.

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunTrace/Set/index.html b/website/static/odoc/next/infer/BO/BufferOverrunTrace/Set/index.html index f9a915efb43..d8bd71691de 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunTrace/Set/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunTrace/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.BO.BufferOverrunTrace.Set)

    Module BufferOverrunTrace.Set

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : IBase.Location.t -> elem -> t
    val singleton_final : IBase.Location.t -> final -> t
    val add_elem : IBase.Location.t -> elem -> t -> t
    val call : IBase.Location.t -> traces_caller:t -> traces_callee:t -> t

    Merge traces of traces_caller and traces_callee

    \ No newline at end of file +Set (infer.BO.BufferOverrunTrace.Set)

    Module BufferOverrunTrace.Set

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val singleton : IBase.Location.t -> elem -> t
    val singleton_final : IBase.Location.t -> final -> t
    val add_elem : IBase.Location.t -> elem -> t -> t
    val call : IBase.Location.t -> traces_caller:t -> traces_callee:t -> t

    Merge traces of traces_caller and traces_callee

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunTrace/index.html b/website/static/odoc/next/infer/BO/BufferOverrunTrace/index.html index 135a12cd72b..bfbaeb6c0f6 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunTrace/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunTrace/index.html @@ -1,2 +1,2 @@ -BufferOverrunTrace (infer.BO.BufferOverrunTrace)

    Module BO.BufferOverrunTrace

    type final =
    1. | UnknownFrom of IR.Procname.t option

    Final unknown function in trace

    type elem =
    1. | ArrayDeclaration
    2. | Assign of AbsLoc.PowLoc.t
    3. | Global of AbsLoc.Loc.t
    4. | JavaIntDecleration
    5. | Parameter of AbsLoc.Loc.t
    6. | SetArraySize
    7. | Through

    Trace elements

    module Set : sig ... end
    module Issue : sig ... end

    Trace set with issue information

    \ No newline at end of file +BufferOverrunTrace (infer.BO.BufferOverrunTrace)

    Module BO.BufferOverrunTrace

    type final =
    1. | UnknownFrom of IR.Procname.t option

    Final unknown function in trace

    type elem =
    1. | ArrayDeclaration
    2. | Assign of AbsLoc.PowLoc.t
    3. | Global of AbsLoc.Loc.t
    4. | JavaIntDecleration
    5. | Parameter of AbsLoc.Loc.t
    6. | SetArraySize
    7. | Through

    Trace elements

    module Set : sig ... end
    module Issue : sig ... end

    Trace set with issue information

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunTypModels/index.html b/website/static/odoc/next/infer/BO/BufferOverrunTypModels/index.html index d2d2574e594..6f9bb6a958c 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunTypModels/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunTypModels/index.html @@ -1,3 +1,3 @@ -BufferOverrunTypModels (infer.BO.BufferOverrunTypModels)

    Module BO.BufferOverrunTypModels

    type typ_model =
    1. | CArray of {
      1. element_typ : IR.Typ.t;
      2. deref_kind : Symb.SymbolPath.deref_kind;
      3. length : IR.IntLit.t;
      }
    2. | CppStdVector
    3. | JavaCollection
    4. | JavaInteger
    \ No newline at end of file +BufferOverrunTypModels (infer.BO.BufferOverrunTypModels)

    Module BO.BufferOverrunTypModels

    type typ_model =
    1. | CArray of {
      1. element_typ : IR.Typ.t;
      2. deref_kind : Symb.SymbolPath.deref_kind;
      3. length : IR.IntLit.t;
      }
    2. | CppStdVector
    3. | JavaCollection
    4. | JavaInteger
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunUtils/Check/index.html b/website/static/odoc/next/infer/BO/BufferOverrunUtils/Check/index.html index 9f27e6c1af7..fa4cbeb9e08 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunUtils/Check/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunUtils/Check/index.html @@ -1,25 +1,25 @@ -Check (infer.BO.BufferOverrunUtils.Check)

    Module BufferOverrunUtils.Check

    val array_access : - arr:Dom.Val.t -> - idx:Dom.Val.t -> - is_plus:bool -> - last_included:bool -> - latest_prune:Dom.LatestPrune.t -> +Check (infer.BO.BufferOverrunUtils.Check)

    Module BufferOverrunUtils.Check

    val array_access : + arr:Dom.Val.t -> + idx:Dom.Val.t -> + is_plus:bool -> + last_included:bool -> + latest_prune:Dom.LatestPrune.t -> IBase.Location.t -> PO.ConditionSet.checked_t -> PO.ConditionSet.checked_t
    val lindex : IR.IntegerWidths.t -> - array_exp:IR.Exp.t -> - index_exp:IR.Exp.t -> - last_included:bool -> + array_exp:IR.Exp.t -> + index_exp:IR.Exp.t -> + last_included:bool -> Dom.Mem.t -> IBase.Location.t -> PO.ConditionSet.checked_t -> PO.ConditionSet.checked_t
    val lindex_byte : IR.IntegerWidths.t -> - array_exp:IR.Exp.t -> - byte_index_exp:IR.Exp.t -> - last_included:bool -> + array_exp:IR.Exp.t -> + byte_index_exp:IR.Exp.t -> + last_included:bool -> Dom.Mem.t -> IBase.Location.t -> PO.ConditionSet.checked_t -> @@ -27,9 +27,9 @@ IR.IntegerWidths.t -> IR.Procname.t -> IR.Binop.t -> - lhs:Dom.Val.t -> - rhs:Dom.Val.t -> - latest_prune:Dom.LatestPrune.t -> + lhs:Dom.Val.t -> + rhs:Dom.Val.t -> + latest_prune:Dom.LatestPrune.t -> IBase.Location.t -> PO.ConditionSet.checked_t -> - PO.ConditionSet.checked_t
    \ No newline at end of file + PO.ConditionSet.checked_t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunUtils/Exec/index.html b/website/static/odoc/next/infer/BO/BufferOverrunUtils/Exec/index.html index db5bfcc4144..66bae48f830 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunUtils/Exec/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunUtils/Exec/index.html @@ -1,7 +1,7 @@ -Exec (infer.BO.BufferOverrunUtils.Exec)

    Module BufferOverrunUtils.Exec

    val load_locs : - represents_multiple_values:bool -> - modeled_range:Dom.ModeledRange.t option -> +Exec (infer.BO.BufferOverrunUtils.Exec)

    Module BufferOverrunUtils.Exec

    val load_locs : + represents_multiple_values:bool -> + modeled_range:Dom.ModeledRange.t option -> IR.Ident.t -> IR.Typ.t -> AbsLoc.PowLoc.t -> @@ -15,7 +15,7 @@ BO.Itv.SymbolPath.partial option -> IR.Typ.t -> AbsLoc.PowLoc.t -> - ?dyn_length:IR.Exp.t -> + ?dyn_length:IR.Exp.t -> Dom.Mem.t -> Dom.Mem.t
    val set_dyn_length : ModelEnv.model_env -> @@ -25,8 +25,8 @@ Dom.Mem.t -> Dom.Mem.t
    val decl_string : ModelEnv.model_env -> - do_alloc:bool -> + do_alloc:bool -> AbsLoc.PowLoc.t -> string -> Dom.Mem.t -> - Dom.Mem.t
    val set_c_strlen : tgt:Dom.Val.t -> src:Dom.Val.t -> Dom.Mem.t -> Dom.Mem.t
    \ No newline at end of file + Dom.Mem.t
    val set_c_strlen : tgt:Dom.Val.t -> src:Dom.Val.t -> Dom.Mem.t -> Dom.Mem.t
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunUtils/ModelEnv/index.html b/website/static/odoc/next/infer/BO/BufferOverrunUtils/ModelEnv/index.html index 4af13f05dcf..42a9eb5ed1d 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunUtils/ModelEnv/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunUtils/ModelEnv/index.html @@ -1,10 +1,10 @@ -ModelEnv (infer.BO.BufferOverrunUtils.ModelEnv)

    Module BufferOverrunUtils.ModelEnv

    type model_env = {
    1. pname : IR.Procname.t;
    2. caller_pname : IR.Procname.t option;
    3. node_hash : int;
    4. location : IBase.Location.t;
    5. tenv : IR.Tenv.t;
    6. integer_type_widths : IR.IntegerWidths.t;
    7. get_summary : BufferOverrunAnalysisSummary.get_summary;
    }
    val mk_model_env : +ModelEnv (infer.BO.BufferOverrunUtils.ModelEnv)

    Module BufferOverrunUtils.ModelEnv

    type model_env = {
    1. pname : IR.Procname.t;
    2. caller_pname : IR.Procname.t option;
    3. node_hash : int;
    4. location : IBase.Location.t;
    5. tenv : IR.Tenv.t;
    6. integer_type_widths : IR.IntegerWidths.t;
    7. get_summary : BufferOverrunAnalysisSummary.get_summary;
    }
    val mk_model_env : IR.Procname.t -> - ?caller_pname:IR.Procname.t -> - node_hash:int -> + ?caller_pname:IR.Procname.t -> + node_hash:int -> IBase.Location.t -> IR.Tenv.t -> IR.IntegerWidths.t -> BufferOverrunAnalysisSummary.get_summary -> - model_env

    Make model environment. caller_pname is relevant only when the model environment is used to process builtins.

    \ No newline at end of file + model_env

    Make model environment. caller_pname is relevant only when the model environment is used to process builtins.

    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunUtils/ReplaceCallee/index.html b/website/static/odoc/next/infer/BO/BufferOverrunUtils/ReplaceCallee/index.html index e0469aab021..2152ee27e72 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunUtils/ReplaceCallee/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunUtils/ReplaceCallee/index.html @@ -1,7 +1,7 @@ -ReplaceCallee (infer.BO.BufferOverrunUtils.ReplaceCallee)

    Module BufferOverrunUtils.ReplaceCallee

    type replaced = {
    1. pname : IR.Procname.t;
    2. args : (IR.Exp.t * IR.Typ.t) list;
    3. is_args_ref : bool;
    }

    Replaced proc name with its modified parameters.

    is_args_ref represents that the arguments are given as references to variables, e.g., when int i = 5;, the function of std::make_shared<C>(i); in C++ is translated to std::make_shared<C>(&i, tgt) in Sil where tgt is the variable for the target object, rather than std::make_shared<C>(i, tgt) (note that the type of &i is int&).

    The is_args_ref value is used to evaluate argments correctly after replacing the callee. For example, when we replace std::make_shared<C>(&i, tgt) to the constructor call of C, i.e. C(tgt, i), the arguments' order and types are slightly different, so which should be handled correctly later in the instantiation phase.

    val replace_make_shared : +ReplaceCallee (infer.BO.BufferOverrunUtils.ReplaceCallee)

    Module BufferOverrunUtils.ReplaceCallee

    type replaced = {
    1. pname : IR.Procname.t;
    2. args : (IR.Exp.t * IR.Typ.t) list;
    3. is_args_ref : bool;
    }

    Replaced proc name with its modified parameters.

    is_args_ref represents that the arguments are given as references to variables, e.g., when int i = 5;, the function of std::make_shared<C>(i); in C++ is translated to std::make_shared<C>(&i, tgt) in Sil where tgt is the variable for the target object, rather than std::make_shared<C>(i, tgt) (note that the type of &i is int&).

    The is_args_ref value is used to evaluate argments correctly after replacing the callee. For example, when we replace std::make_shared<C>(&i, tgt) to the constructor call of C, i.e. C(tgt, i), the arguments' order and types are slightly different, so which should be handled correctly later in the instantiation phase.

    val replace_make_shared : IR.Tenv.t -> get_formals -> IR.Procname.t -> (IR.Exp.t * IR.Typ.t) list -> - replaced
    \ No newline at end of file + replaced
    diff --git a/website/static/odoc/next/infer/BO/BufferOverrunUtils/index.html b/website/static/odoc/next/infer/BO/BufferOverrunUtils/index.html index 1f1e75e49b3..f2caffbe7f1 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunUtils/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunUtils/index.html @@ -1,2 +1,2 @@ -BufferOverrunUtils (infer.BO.BufferOverrunUtils)

    Module BO.BufferOverrunUtils

    module Dom = BufferOverrunDomain
    module ModelEnv : sig ... end
    module Exec : sig ... end
    module Check : sig ... end
    type get_formals = IR.Procname.t -> (IR.Pvar.t * IR.Typ.t) list option
    module ReplaceCallee : sig ... end
    val clear_cache : unit -> unit
    \ No newline at end of file +BufferOverrunUtils (infer.BO.BufferOverrunUtils)

    Module BO.BufferOverrunUtils

    module Dom = BufferOverrunDomain
    module ModelEnv : sig ... end
    module Exec : sig ... end
    module Check : sig ... end
    type get_formals = IR.Procname.t -> (IR.Pvar.t * IR.Typ.t) list option
    module ReplaceCallee : sig ... end
    val clear_cache : unit -> unit
    diff --git a/website/static/odoc/next/infer/BO/FuncPtr/Set/index.html b/website/static/odoc/next/infer/BO/FuncPtr/Set/index.html index bd48eb12295..583bbc5b1ea 100644 --- a/website/static/odoc/next/infer/BO/FuncPtr/Set/index.html +++ b/website/static/odoc/next/infer/BO/FuncPtr/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.BO.FuncPtr.Set)

    Module FuncPtr.Set

    include Absint.AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    type eval_func_ptrs = Symb.SymbolPath.partial -> t
    val of_path : Symb.SymbolPath.partial -> t
    val of_closure : IR.Exp.closure -> t
    val subst : t -> eval_func_ptrs -> t
    \ No newline at end of file +Set (infer.BO.FuncPtr.Set)

    Module FuncPtr.Set

    include Absint.AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    type eval_func_ptrs = Symb.SymbolPath.partial -> t
    val of_path : Symb.SymbolPath.partial -> t
    val of_closure : IR.Exp.closure -> t
    val subst : t -> eval_func_ptrs -> t
    diff --git a/website/static/odoc/next/infer/BO/FuncPtr/index.html b/website/static/odoc/next/infer/BO/FuncPtr/index.html index 892ac2a5c3f..3e6a72a686c 100644 --- a/website/static/odoc/next/infer/BO/FuncPtr/index.html +++ b/website/static/odoc/next/infer/BO/FuncPtr/index.html @@ -1,2 +1,2 @@ -FuncPtr (infer.BO.FuncPtr)

    Module BO.FuncPtr

    type t =
    1. | Path of Symb.SymbolPath.partial
    2. | Closure of IR.Exp.closure
    module Set : sig ... end
    \ No newline at end of file +FuncPtr (infer.BO.FuncPtr)

    Module BO.FuncPtr

    type t =
    1. | Path of Symb.SymbolPath.partial
    2. | Closure of IR.Exp.closure
    module Set : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/Ints/NonNegativeInt/index.html b/website/static/odoc/next/infer/BO/Ints/NonNegativeInt/index.html index d241d33dc54..0027bf0b513 100644 --- a/website/static/odoc/next/infer/BO/Ints/NonNegativeInt/index.html +++ b/website/static/odoc/next/infer/BO/Ints/NonNegativeInt/index.html @@ -1,2 +1,2 @@ -NonNegativeInt (infer.BO.Ints.NonNegativeInt)

    Module Ints.NonNegativeInt

    type t = private Z.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val zero : t
    val one : t
    val of_big_int : Z.t -> t option
    val of_int_exn : int -> t
    val of_big_int_exn : Z.t -> t
    val to_int_exn : t -> int
    val is_zero : t -> bool
    val is_one : t -> bool
    val leq : lhs:t -> rhs:t -> bool
    val succ : t -> t
    val log2_ceil_exn : t -> t
    val (+) : t -> t -> t
    val (*) : t -> t -> t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +NonNegativeInt (infer.BO.Ints.NonNegativeInt)

    Module Ints.NonNegativeInt

    type t = private Z.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val zero : t
    val one : t
    val of_big_int : Z.t -> t option
    val of_int_exn : int -> t
    val of_big_int_exn : Z.t -> t
    val to_int_exn : t -> int
    val is_zero : t -> bool
    val is_one : t -> bool
    val leq : lhs:t -> rhs:t -> bool
    val succ : t -> t
    val log2_ceil_exn : t -> t
    val (+) : t -> t -> t
    val (*) : t -> t -> t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/BO/Ints/NonZeroInt/index.html b/website/static/odoc/next/infer/BO/Ints/NonZeroInt/index.html index 67854e8271c..bebf42b4cd9 100644 --- a/website/static/odoc/next/infer/BO/Ints/NonZeroInt/index.html +++ b/website/static/odoc/next/infer/BO/Ints/NonZeroInt/index.html @@ -1,2 +1,2 @@ -NonZeroInt (infer.BO.Ints.NonZeroInt)

    Module Ints.NonZeroInt

    type t = private Z.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    exception DivisionNotExact
    val one : t
    val minus_one : t
    val of_big_int : Z.t -> t option
    val opt_to_big_int : t option -> Z.t
    val is_one : t -> bool
    val is_minus_one : t -> bool
    val is_multiple : Z.t -> t -> bool
    val is_negative : t -> bool
    val is_positive : t -> bool
    val (~-) : t -> t
    val (*) : t -> t -> t
    val plus : t -> t -> t option
    val exact_div_exn : t -> t -> t
    val max : t -> t -> t
    val min : t -> t -> t
    \ No newline at end of file +NonZeroInt (infer.BO.Ints.NonZeroInt)

    Module Ints.NonZeroInt

    type t = private Z.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    exception DivisionNotExact
    val one : t
    val minus_one : t
    val of_big_int : Z.t -> t option
    val opt_to_big_int : t option -> Z.t
    val is_one : t -> bool
    val is_minus_one : t -> bool
    val is_multiple : Z.t -> t -> bool
    val is_negative : t -> bool
    val is_positive : t -> bool
    val (~-) : t -> t
    val (*) : t -> t -> t
    val plus : t -> t -> t option
    val exact_div_exn : t -> t -> t
    val max : t -> t -> t
    val min : t -> t -> t
    diff --git a/website/static/odoc/next/infer/BO/Ints/PositiveInt/index.html b/website/static/odoc/next/infer/BO/Ints/PositiveInt/index.html index d78868cff54..0f861310c4d 100644 --- a/website/static/odoc/next/infer/BO/Ints/PositiveInt/index.html +++ b/website/static/odoc/next/infer/BO/Ints/PositiveInt/index.html @@ -1,2 +1,2 @@ -PositiveInt (infer.BO.Ints.PositiveInt)

    Module Ints.PositiveInt

    type t = private NonNegativeInt.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val one : t
    val of_big_int : Z.t -> t option
    val succ : t -> t
    val pp_exponent : F.formatter -> t -> unit
    \ No newline at end of file +PositiveInt (infer.BO.Ints.PositiveInt)

    Module Ints.PositiveInt

    type t = private NonNegativeInt.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val one : t
    val of_big_int : Z.t -> t option
    val succ : t -> t
    val pp_exponent : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/BO/Ints/index.html b/website/static/odoc/next/infer/BO/Ints/index.html index f9f7d10c57e..c4b47cf5ba9 100644 --- a/website/static/odoc/next/infer/BO/Ints/index.html +++ b/website/static/odoc/next/infer/BO/Ints/index.html @@ -1,2 +1,2 @@ -Ints (infer.BO.Ints)

    Module BO.Ints

    module F = Stdlib.Format
    module NonZeroInt : sig ... end
    module NonNegativeInt : sig ... end
    module PositiveInt : sig ... end
    \ No newline at end of file +Ints (infer.BO.Ints)

    Module BO.Ints

    module F = Stdlib.Format
    module NonZeroInt : sig ... end
    module NonNegativeInt : sig ... end
    module PositiveInt : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/Itv/ItvPure/index.html b/website/static/odoc/next/infer/BO/Itv/ItvPure/index.html index 608f7a5226f..e4589e13db5 100644 --- a/website/static/odoc/next/infer/BO/Itv/ItvPure/index.html +++ b/website/static/odoc/next/infer/BO/Itv/ItvPure/index.html @@ -1,10 +1,10 @@ -ItvPure (infer.BO.Itv.ItvPure)

    Module Itv.ItvPure

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val mone : t
    val zero : t
    val of_int : int -> t
    val lb : t -> Bound.t
    val ub : t -> Bound.t
    val is_finite : t -> bool
    val is_invalid : t -> bool
    val is_lb_infty : t -> bool
    val is_nat : t -> bool
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val is_ge_zero : t -> bool
    val is_le_zero : t -> bool
    val is_le_mone : t -> bool
    val leq : lhs:t -> rhs:t -> bool
    val have_similar_bounds : t -> t -> bool
    val has_infty : t -> bool
    val has_void_ptr_symb : t -> bool
    val make_non_negative : t -> t
    val join : t -> t -> t
    val le_sem : t -> t -> Boolean.t
    val lt_sem : t -> t -> Boolean.t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val xcompare : - lhs:t -> - rhs:t -> +ItvPure (infer.BO.Itv.ItvPure)

    Module Itv.ItvPure

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val mone : t
    val zero : t
    val of_int : int -> t
    val lb : t -> Bound.t
    val ub : t -> Bound.t
    val is_finite : t -> bool
    val is_invalid : t -> bool
    val is_lb_infty : t -> bool
    val is_nat : t -> bool
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val is_ge_zero : t -> bool
    val is_le_zero : t -> bool
    val is_le_mone : t -> bool
    val leq : lhs:t -> rhs:t -> bool
    val have_similar_bounds : t -> t -> bool
    val has_infty : t -> bool
    val has_void_ptr_symb : t -> bool
    val make_non_negative : t -> t
    val join : t -> t -> t
    val le_sem : t -> t -> Boolean.t
    val lt_sem : t -> t -> Boolean.t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val xcompare : + lhs:t -> + rhs:t -> [ `Equal | `LeftSmallerThanRight | `RightSmallerThanLeft | `NotComparable | `LeftSubsumesRight - | `RightSubsumesLeft ]
    val get_symbols : t -> SymbolSet.t
    val neg : t -> t
    val plus : t -> t -> t
    val minus : t -> t -> t
    val succ : t -> t
    val mult : t -> t -> t
    val exists_str : f:(string -> bool) -> t -> bool
    \ No newline at end of file + | `RightSubsumesLeft ]
    val get_symbols : t -> SymbolSet.t
    val neg : t -> t
    val plus : t -> t -> t
    val minus : t -> t -> t
    val succ : t -> t
    val mult : t -> t -> t
    val exists_str : f:(string -> bool) -> t -> bool
    diff --git a/website/static/odoc/next/infer/BO/Itv/ItvRange/index.html b/website/static/odoc/next/infer/BO/Itv/ItvRange/index.html index 543348cee85..f7a0f9fceb9 100644 --- a/website/static/odoc/next/infer/BO/Itv/ItvRange/index.html +++ b/website/static/odoc/next/infer/BO/Itv/ItvRange/index.html @@ -1,2 +1,2 @@ -ItvRange (infer.BO.Itv.ItvRange)

    Module Itv.ItvRange

    type t
    val to_top_lifted_polynomial : t -> Polynomials.NonNegativePolynomial.t
    \ No newline at end of file +ItvRange (infer.BO.Itv.ItvRange)

    Module Itv.ItvRange

    type t
    val to_top_lifted_polynomial : t -> Polynomials.NonNegativePolynomial.t
    diff --git a/website/static/odoc/next/infer/BO/Itv/index.html b/website/static/odoc/next/infer/BO/Itv/index.html index d6975ab3bcf..bd9fd98c3c7 100644 --- a/website/static/odoc/next/infer/BO/Itv/index.html +++ b/website/static/odoc/next/infer/BO/Itv/index.html @@ -1,14 +1,14 @@ -Itv (infer.BO.Itv)

    Module BO.Itv

    module F = Stdlib.Format
    module Bound = Bounds.Bound
    module SymbolPath = Symb.SymbolPath
    module SymbolSet = Symb.SymbolSet
    module ItvRange : sig ... end
    module ItvPure : sig ... end
    include sig ... end
    type t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
    val widen_thresholds : - thresholds:Z.t list -> - prev:t -> - next:t -> - num_iters:int -> +Itv (infer.BO.Itv)

    Module BO.Itv

    module F = Stdlib.Format
    module Bound = Bounds.Bound
    module SymbolPath = Symb.SymbolPath
    module SymbolSet = Symb.SymbolSet
    module ItvRange : sig ... end
    module ItvPure : sig ... end
    include sig ... end
    type t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
    val widen_thresholds : + thresholds:Z.t list -> + prev:t -> + next:t -> + num_iters:int -> t
    val compare : t -> t -> int
    val bot : t

    _|_

    val zero_255 : t

    0, 255

    val m1_255 : t

    -1, 255

    val nat : t

    0, +oo

    val pos : t

    1, +oo

    val top : t

    -oo, +oo

    val zero : t

    0

    val one : t

    1

    val zero_one : t

    0, 1

    val unknown_bool : t

    0, 1

    val get_range_of_iterator : t -> t
    val of_bool : Boolean.t -> t
    val of_int : int -> t
    val of_big_int : Z.t -> t
    val of_int_lit : IR.IntLit.t -> t
    val get_const : t -> Z.t option
    val is_zero : t -> bool
    val is_one : t -> bool
    val is_mone : t -> bool
    val is_false : t -> bool
    val decr : t -> t
    val decr_length : t -> t
    val incr : t -> t
    val set_lb : Bound.t -> t -> t
    val set_lb_zero : t -> t
    val neg : t -> t
    val normalize : t -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val get_symbols : t -> SymbolSet.t
    val eq : t -> t -> bool
    val le : lhs:t -> rhs:t -> bool
    val lnot : t -> Boolean.t
    val range : IBase.Location.t -> t -> ItvRange.t
    val div : t -> t -> t
    val div_const : t -> Z.t -> t
    val minus : t -> t -> t
    val mult : t -> t -> t
    val mult_const : t -> Z.t -> t
    val plus : t -> t -> t
    val shiftlt : t -> t -> t
    val shiftrt : t -> t -> t
    val band_sem : t -> t -> t
    val eq_sem : t -> t -> Boolean.t
    val ge_sem : t -> t -> Boolean.t
    val gt_sem : t -> t -> Boolean.t
    val land_sem : t -> t -> Boolean.t
    val le_sem : t -> t -> Boolean.t
    val lor_sem : t -> t -> Boolean.t
    val lt_sem : t -> t -> Boolean.t
    val min_sem : ?use_minmax_bound:bool -> t -> t -> t
    val max_sem : ?use_minmax_bound:bool -> t -> t -> t
    val mod_sem : t -> t -> t
    val ne_sem : t -> t -> Boolean.t
    val prune_eq_zero : t -> t
    val prune_ne_zero : t -> t
    val prune_ge_one : t -> t
    val prune_binop : IR.Binop.t -> t -> t -> t
    val prune_eq : t -> t -> t
    val prune_ne : t -> t -> t
    val prune_lt : t -> t -> t
    val prune_le : t -> t -> t
    val subst : t -> Bound.eval_sym -> t
    val max_of_ikind : IR.IntegerWidths.t -> IR.Typ.ikind -> t
    val of_normal_path : - unsigned:bool -> - ?non_int:bool -> + Bound.t Absint.AbstractDomain.Types.bottom_lifted
    val is_false : t -> bool
    val decr : t -> t
    val decr_length : t -> t
    val incr : t -> t
    val set_lb : Bound.t -> t -> t
    val set_lb_zero : t -> t
    val neg : t -> t
    val normalize : t -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val get_symbols : t -> SymbolSet.t
    val eq : t -> t -> bool
    val le : lhs:t -> rhs:t -> bool
    val lnot : t -> Boolean.t
    val range : IBase.Location.t -> t -> ItvRange.t
    val div : t -> t -> t
    val div_const : t -> Z.t -> t
    val minus : t -> t -> t
    val mult : t -> t -> t
    val mult_const : t -> Z.t -> t
    val plus : t -> t -> t
    val shiftlt : t -> t -> t
    val shiftrt : t -> t -> t
    val band_sem : t -> t -> t
    val eq_sem : t -> t -> Boolean.t
    val ge_sem : t -> t -> Boolean.t
    val gt_sem : t -> t -> Boolean.t
    val land_sem : t -> t -> Boolean.t
    val le_sem : t -> t -> Boolean.t
    val lor_sem : t -> t -> Boolean.t
    val lt_sem : t -> t -> Boolean.t
    val min_sem : ?use_minmax_bound:bool -> t -> t -> t
    val max_sem : ?use_minmax_bound:bool -> t -> t -> t
    val mod_sem : t -> t -> t
    val ne_sem : t -> t -> Boolean.t
    val prune_eq_zero : t -> t
    val prune_ne_zero : t -> t
    val prune_ge_one : t -> t
    val prune_binop : IR.Binop.t -> t -> t -> t
    val prune_eq : t -> t -> t
    val prune_ne : t -> t -> t
    val prune_lt : t -> t -> t
    val prune_le : t -> t -> t
    val subst : t -> Bound.eval_sym -> t
    val max_of_ikind : IR.IntegerWidths.t -> IR.Typ.ikind -> t
    val of_normal_path : + unsigned:bool -> + ?non_int:bool -> Symb.SymbolPath.partial -> - t
    val of_offset_path : is_void:bool -> Symb.SymbolPath.partial -> t
    val of_length_path : is_void:bool -> Symb.SymbolPath.partial -> t
    val of_modeled_path : Symb.SymbolPath.partial -> t
    val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
    val has_only_non_int_symbols : t -> bool
    val is_incr_of : Symb.SymbolPath.partial -> t -> bool

    Check if itv is path+1 when called is_incr_of path itv

    \ No newline at end of file + t
    val of_offset_path : is_void:bool -> Symb.SymbolPath.partial -> t
    val of_length_path : is_void:bool -> Symb.SymbolPath.partial -> t
    val of_modeled_path : Symb.SymbolPath.partial -> t
    val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
    val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
    val has_only_non_int_symbols : t -> bool
    val is_incr_of : Symb.SymbolPath.partial -> t -> bool

    Check if itv is path+1 when called is_incr_of path itv

    diff --git a/website/static/odoc/next/infer/BO/Polynomials/Degree/index.html b/website/static/odoc/next/infer/BO/Polynomials/Degree/index.html index 10686469b83..bf9c6e2dced 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/Degree/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/Degree/index.html @@ -1,2 +1,2 @@ -Degree (infer.BO.Polynomials.Degree)

    Module Polynomials.Degree

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val encode_to_int : t -> int

    Encodes the complex type t to an integer that can be used for comparison.

    val is_constant : t -> bool
    \ No newline at end of file +Degree (infer.BO.Polynomials.Degree)

    Module Polynomials.Degree

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val encode_to_int : t -> int

    Encodes the complex type t to an integer that can be used for comparison.

    val is_constant : t -> bool
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/DegreeKind/index.html b/website/static/odoc/next/infer/BO/Polynomials/DegreeKind/index.html index 69ad05af53a..3bdf2a84ad9 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/DegreeKind/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/DegreeKind/index.html @@ -1,2 +1,2 @@ -DegreeKind (infer.BO.Polynomials.DegreeKind)

    Module Polynomials.DegreeKind

    type t =
    1. | Linear
    2. | Log
    \ No newline at end of file +DegreeKind (infer.BO.Polynomials.DegreeKind)

    Module Polynomials.DegreeKind

    type t =
    1. | Linear
    2. | Log
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/NonNegativeNonTopPolynomial/index.html b/website/static/odoc/next/infer/BO/Polynomials/NonNegativeNonTopPolynomial/index.html index aa640e1fc4f..aeba31da3db 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/NonNegativeNonTopPolynomial/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/NonNegativeNonTopPolynomial/index.html @@ -1,2 +1,2 @@ -NonNegativeNonTopPolynomial (infer.BO.Polynomials.NonNegativeNonTopPolynomial)

    Module Polynomials.NonNegativeNonTopPolynomial

    type t
    val polynomial_traces : t -> (string * Absint.Errlog.loc_trace) list
    \ No newline at end of file +NonNegativeNonTopPolynomial (infer.BO.Polynomials.NonNegativeNonTopPolynomial)

    Module Polynomials.NonNegativeNonTopPolynomial

    type t
    val polynomial_traces : t -> (string * Absint.Errlog.loc_trace) list
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/NonNegativePolynomial/index.html b/website/static/odoc/next/infer/BO/Polynomials/NonNegativePolynomial/index.html index a0692c46743..36233a9345e 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/NonNegativePolynomial/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/NonNegativePolynomial/index.html @@ -1,19 +1,19 @@ -NonNegativePolynomial (infer.BO.Polynomials.NonNegativePolynomial)

    Module Polynomials.NonNegativePolynomial

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    type degree_with_term = +NonNegativePolynomial (infer.BO.Polynomials.NonNegativePolynomial)

    Module Polynomials.NonNegativePolynomial

    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val top : t
    val of_unreachable : IBase.Location.t -> t
    val zero : t
    val one : t
    val of_int_exn : int -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_unreachable : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val of_non_negative_bound : - ?degree_kind:DegreeKind.t -> + Absint.AbstractDomain.Types.below_above
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val top : t
    val of_unreachable : IBase.Location.t -> t
    val zero : t
    val one : t
    val of_int_exn : int -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_unreachable : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val of_non_negative_bound : + ?degree_kind:DegreeKind.t -> Bounds.NonNegativeBound.t -> - t
    val of_func_ptr : Symb.SymbolPath.partial -> t
    val plus : t -> t -> t
    val mult_unreachable : t -> t -> t

    if one of the operands is unreachable, the result is unreachable

    val mult : t -> t -> t
    val mult_loop : iter:t -> body:t -> t
    val min_default_left : t -> t -> t
    val subst : + t
    val of_func_ptr : Symb.SymbolPath.partial -> t
    val plus : t -> t -> t
    val mult_unreachable : t -> t -> t

    if one of the operands is unreachable, the result is unreachable

    val mult : t -> t -> t
    val mult_loop : iter:t -> body:t -> t
    val min_default_left : t -> t -> t
    val subst : IR.Procname.t -> IBase.Location.t -> t -> Bounds.Bound.eval_sym -> FuncPtr.Set.eval_func_ptrs -> (IR.Procname.t -> t option) -> - default_closure_cost:Ints.NonNegativeInt.t -> + default_closure_cost:Ints.NonNegativeInt.t -> t
    val degree : t -> Degree.t option
    val degree_str : t -> string
    val compare_by_degree : t -> t -> int
    val pp_degree : - only_bigO:bool -> + only_bigO:bool -> Stdlib.Format.formatter -> degree_with_term -> - unit
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val encode : t -> string
    val decode : string -> t
    val get_degree_with_term : t -> degree_with_term
    \ No newline at end of file + unit
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val encode : t -> string
    val decode : string -> t
    val get_degree_with_term : t -> degree_with_term
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/TopTraces/index.html b/website/static/odoc/next/infer/BO/Polynomials/TopTraces/index.html index bbed9bc37db..a6a504b1e50 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/TopTraces/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/TopTraces/index.html @@ -1,2 +1,2 @@ -TopTraces (infer.BO.Polynomials.TopTraces)

    Module Polynomials.TopTraces

    type t
    val make_err_trace : t -> Absint.Errlog.loc_trace
    \ No newline at end of file +TopTraces (infer.BO.Polynomials.TopTraces)

    Module Polynomials.TopTraces

    type t
    val make_err_trace : t -> Absint.Errlog.loc_trace
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/UnreachableTraces/index.html b/website/static/odoc/next/infer/BO/Polynomials/UnreachableTraces/index.html index 46c4095ac35..a46678c55d7 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/UnreachableTraces/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/UnreachableTraces/index.html @@ -1,2 +1,2 @@ -UnreachableTraces (infer.BO.Polynomials.UnreachableTraces)

    Module Polynomials.UnreachableTraces

    type t
    val make_err_trace : t -> Absint.Errlog.loc_trace
    \ No newline at end of file +UnreachableTraces (infer.BO.Polynomials.UnreachableTraces)

    Module Polynomials.UnreachableTraces

    type t
    val make_err_trace : t -> Absint.Errlog.loc_trace
    diff --git a/website/static/odoc/next/infer/BO/Polynomials/index.html b/website/static/odoc/next/infer/BO/Polynomials/index.html index 525c115da38..72826ca78e5 100644 --- a/website/static/odoc/next/infer/BO/Polynomials/index.html +++ b/website/static/odoc/next/infer/BO/Polynomials/index.html @@ -1,2 +1,2 @@ -Polynomials (infer.BO.Polynomials)

    Module BO.Polynomials

    module DegreeKind : sig ... end
    module Degree : sig ... end
    module NonNegativeNonTopPolynomial : sig ... end
    module TopTraces : sig ... end
    module UnreachableTraces : sig ... end
    module NonNegativePolynomial : sig ... end
    \ No newline at end of file +Polynomials (infer.BO.Polynomials)

    Module BO.Polynomials

    module DegreeKind : sig ... end
    module Degree : sig ... end
    module NonNegativeNonTopPolynomial : sig ... end
    module TopTraces : sig ... end
    module UnreachableTraces : sig ... end
    module NonNegativePolynomial : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/Symb/BoundEnd/index.html b/website/static/odoc/next/infer/BO/Symb/BoundEnd/index.html index 206442934a2..dc1b6734d9e 100644 --- a/website/static/odoc/next/infer/BO/Symb/BoundEnd/index.html +++ b/website/static/odoc/next/infer/BO/Symb/BoundEnd/index.html @@ -1,2 +1,2 @@ -BoundEnd (infer.BO.Symb.BoundEnd)

    Module Symb.BoundEnd

    type t =
    1. | LowerBound
    2. | UpperBound
    val neg : t -> t
    \ No newline at end of file +BoundEnd (infer.BO.Symb.BoundEnd)

    Module Symb.BoundEnd

    type t =
    1. | LowerBound
    2. | UpperBound
    val neg : t -> t
    diff --git a/website/static/odoc/next/infer/BO/Symb/Symbol/index.html b/website/static/odoc/next/infer/BO/Symb/Symbol/index.html index 7ff45a4f0e4..eae6537f14f 100644 --- a/website/static/odoc/next/infer/BO/Symb/Symbol/index.html +++ b/website/static/odoc/next/infer/BO/Symb/Symbol/index.html @@ -1,5 +1,5 @@ -Symbol (infer.BO.Symb.Symbol)

    Module Symb.Symbol

    type t
    type 'res eval = +Symbol (infer.BO.Symb.Symbol)

    Module Symb.Symbol

    type t
    val compare : t -> t -> int
    val is_unsigned : t -> bool
    val is_non_int : t -> bool
    val is_global : t -> bool
    val is_length : t -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val equal : t -> t -> bool
    val paths_equal : t -> t -> bool
    val path : t -> SymbolPath.t
    val check_bound_end : t -> BoundEnd.t -> unit
    type make_t = unsigned:bool -> ?non_int:bool -> SymbolPath.t -> t
    val make_onevalue : make_t
    val make_boundend : BoundEnd.t -> make_t
    val exists_str : f:(string -> bool) -> t -> bool
    \ No newline at end of file + 'res Absint.AbstractDomain.Types.bottom_lifted
    val compare : t -> t -> int
    val is_unsigned : t -> bool
    val is_non_int : t -> bool
    val is_global : t -> bool
    val is_length : t -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val equal : t -> t -> bool
    val paths_equal : t -> t -> bool
    val path : t -> SymbolPath.t
    val check_bound_end : t -> BoundEnd.t -> unit
    type make_t = unsigned:bool -> ?non_int:bool -> SymbolPath.t -> t
    val make_onevalue : make_t
    val make_boundend : BoundEnd.t -> make_t
    val exists_str : f:(string -> bool) -> t -> bool
    diff --git a/website/static/odoc/next/infer/BO/Symb/SymbolMap/index.html b/website/static/odoc/next/infer/BO/Symb/SymbolMap/index.html index f0a4f4d83f5..784410f339a 100644 --- a/website/static/odoc/next/infer/BO/Symb/SymbolMap/index.html +++ b/website/static/odoc/next/infer/BO/Symb/SymbolMap/index.html @@ -1,16 +1,16 @@ -SymbolMap (infer.BO.Symb.SymbolMap)

    Module Symb.SymbolMap

    include IStdlib.PrettyPrintable.PPMap with type key = Symbol.t
    include IStdlib.IStd.Caml.Map.S with type key = Symbol.t
    type key = Symbol.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +SymbolMap (infer.BO.Symb.SymbolMap)

    Module Symb.SymbolMap

    include IStdlib.PrettyPrintable.PPMap with type key = Symbol.t
    include IStdlib.IStd.Caml.Map.S with type key = Symbol.t
    type key = Symbol.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> unit
    val for_all2 : - f:(key -> 'a option -> 'b option -> bool) -> + f:(key -> 'a option -> 'b option -> bool) -> 'a t -> 'b t -> - bool
    \ No newline at end of file + bool
    diff --git a/website/static/odoc/next/infer/BO/Symb/SymbolPath/index.html b/website/static/odoc/next/infer/BO/Symb/SymbolPath/index.html index d7d1e2f133a..635adfa0a0c 100644 --- a/website/static/odoc/next/infer/BO/Symb/SymbolPath/index.html +++ b/website/static/odoc/next/infer/BO/Symb/SymbolPath/index.html @@ -1,6 +1,6 @@ -SymbolPath (infer.BO.Symb.SymbolPath)

    Module Symb.SymbolPath

    type deref_kind =
    1. | Deref_ArrayIndex
    2. | Deref_COneValuePointer
    3. | Deref_CPointer
    4. | Deref_JavaPointer
    type prim =
    1. | Pvar of IR.Pvar.t
    2. | Deref of deref_kind * partial
    3. | Callsite of {
      1. ret_typ : IR.Typ.t;
      2. cs : Absint.CallSite.t;
      3. obj_path : partial option;
      }
      (*

      obj_path represents the varaible name object when a method of which is called at the cs callsite.

      *)
    val compare_prim : prim -> prim -> int
    val compare_partial : partial -> partial -> int
    type t = private
    1. | Normal of partial
    2. | Offset of {
      1. p : partial;
      2. is_void : bool;
      }
    3. | Length of {
      1. p : partial;
      2. is_void : bool;
      }
    4. | Modeled of partial
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val equal_partial : partial -> partial -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val pp_partial : F.formatter -> partial -> unit
    val pp_partial_paren : paren:bool -> F.formatter -> partial -> unit
    val of_pvar : IR.Pvar.t -> partial
    val of_callsite : - ?obj_path:partial -> - ret_typ:IR.Typ.t -> +SymbolPath (infer.BO.Symb.SymbolPath)

    Module Symb.SymbolPath

    type deref_kind =
    1. | Deref_ArrayIndex
    2. | Deref_COneValuePointer
    3. | Deref_CPointer
    4. | Deref_JavaPointer
    type prim =
    1. | Pvar of IR.Pvar.t
    2. | Deref of deref_kind * partial
    3. | Callsite of {
      1. ret_typ : IR.Typ.t;
      2. cs : Absint.CallSite.t;
      3. obj_path : partial option;
      }
      (*

      obj_path represents the varaible name object when a method of which is called at the cs callsite.

      *)
    val compare_prim : prim -> prim -> int
    val compare_partial : partial -> partial -> int
    type t = private
    1. | Normal of partial
    2. | Offset of {
      1. p : partial;
      2. is_void : bool;
      }
    3. | Length of {
      1. p : partial;
      2. is_void : bool;
      }
    4. | Modeled of partial
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val equal_partial : partial -> partial -> bool
    val pp_mark : markup:bool -> F.formatter -> t -> unit
    val pp_partial : F.formatter -> partial -> unit
    val pp_partial_paren : paren:bool -> F.formatter -> partial -> unit
    val of_pvar : IR.Pvar.t -> partial
    val of_callsite : + ?obj_path:partial -> + ret_typ:IR.Typ.t -> Absint.CallSite.t -> - partial
    val deref : deref_kind:deref_kind -> partial -> partial
    val append_field : ?typ:IR.Typ.t -> partial -> IR.Fieldname.t -> partial
    val append_star_field : partial -> IR.Fieldname.t -> partial
    val normal : partial -> t
    val offset : partial -> is_void:bool -> t
    val length : partial -> is_void:bool -> t
    val modeled : partial -> t
    val is_this : partial -> bool
    val get_pvar : partial -> IR.Pvar.t option
    val represents_multiple_values : partial -> bool
    val represents_multiple_values_sound : partial -> bool
    val represents_callsite_sound_partial : partial -> bool
    val exists_pvar_partial : f:(IR.Pvar.t -> bool) -> partial -> bool
    val exists_str_partial : f:(string -> bool) -> partial -> bool
    val is_void_ptr_path : t -> bool
    val is_cpp_vector_elem : partial -> bool
    val is_global_partial : partial -> bool
    val is_length : t -> bool
    \ No newline at end of file + partial
    val deref : deref_kind:deref_kind -> partial -> partial
    val append_field : ?typ:IR.Typ.t -> partial -> IR.Fieldname.t -> partial
    val append_star_field : partial -> IR.Fieldname.t -> partial
    val normal : partial -> t
    val offset : partial -> is_void:bool -> t
    val length : partial -> is_void:bool -> t
    val modeled : partial -> t
    val is_this : partial -> bool
    val get_pvar : partial -> IR.Pvar.t option
    val represents_multiple_values : partial -> bool
    val represents_multiple_values_sound : partial -> bool
    val represents_callsite_sound_partial : partial -> bool
    val exists_pvar_partial : f:(IR.Pvar.t -> bool) -> partial -> bool
    val exists_str_partial : f:(string -> bool) -> partial -> bool
    val is_void_ptr_path : t -> bool
    val is_cpp_vector_elem : partial -> bool
    val is_global_partial : partial -> bool
    val is_length : t -> bool
    diff --git a/website/static/odoc/next/infer/BO/Symb/SymbolSet/index.html b/website/static/odoc/next/infer/BO/Symb/SymbolSet/index.html index 823ae58f6fe..e56f29f5b04 100644 --- a/website/static/odoc/next/infer/BO/Symb/SymbolSet/index.html +++ b/website/static/odoc/next/infer/BO/Symb/SymbolSet/index.html @@ -1,2 +1,2 @@ -SymbolSet (infer.BO.Symb.SymbolSet)

    Module Symb.SymbolSet

    include IStdlib.PrettyPrintable.PPSet with type elt = Symbol.t
    include IStdlib.IStd.Caml.Set.S with type elt = Symbol.t
    type elt = Symbol.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val union3 : t -> t -> t -> t
    \ No newline at end of file +SymbolSet (infer.BO.Symb.SymbolSet)

    Module Symb.SymbolSet

    include IStdlib.PrettyPrintable.PPSet with type elt = Symbol.t
    include IStdlib.IStd.Caml.Set.S with type elt = Symbol.t
    type elt = Symbol.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val union3 : t -> t -> t -> t
    diff --git a/website/static/odoc/next/infer/BO/Symb/index.html b/website/static/odoc/next/infer/BO/Symb/index.html index 04f5c8bce01..2cbbe7a0709 100644 --- a/website/static/odoc/next/infer/BO/Symb/index.html +++ b/website/static/odoc/next/infer/BO/Symb/index.html @@ -1,2 +1,2 @@ -Symb (infer.BO.Symb)

    Module BO.Symb

    module F = Stdlib.Format
    module BoundEnd : sig ... end
    module SymbolPath : sig ... end
    module Symbol : sig ... end
    module SymbolSet : sig ... end
    module SymbolMap : sig ... end
    \ No newline at end of file +Symb (infer.BO.Symb)

    Module BO.Symb

    module F = Stdlib.Format
    module BoundEnd : sig ... end
    module SymbolPath : sig ... end
    module Symbol : sig ... end
    module SymbolSet : sig ... end
    module SymbolMap : sig ... end
    diff --git a/website/static/odoc/next/infer/BO/index.html b/website/static/odoc/next/infer/BO/index.html index 82e517275c6..96deb2f3564 100644 --- a/website/static/odoc/next/infer/BO/index.html +++ b/website/static/odoc/next/infer/BO/index.html @@ -1,2 +1,2 @@ -BO (infer.BO)

    Module BO

    module AbsLoc : sig ... end
    module ArrayBlk : sig ... end
    module Boolean : sig ... end
    module Bounds : sig ... end
    module BufferOverrunAnalysis : sig ... end
    module BufferOverrunAnalysisSummary : sig ... end
    module BufferOverrunChecker : sig ... end
    module BufferOverrunCheckerSummary : sig ... end
    module BufferOverrunDomain : sig ... end
    module BufferOverrunField : sig ... end
    module BufferOverrunModels : sig ... end
    module BufferOverrunOndemandEnv : sig ... end
    module BufferOverrunProofObligations : sig ... end
    module BufferOverrunSemantics : sig ... end
    module BufferOverrunTrace : sig ... end
    module BufferOverrunTypModels : sig ... end
    module BufferOverrunUtils : sig ... end
    module FuncPtr : sig ... end
    module Ints : sig ... end
    module Itv : sig ... end
    module Polynomials : sig ... end
    module Symb : sig ... end
    \ No newline at end of file +BO (infer.BO)

    Module BO

    module AbsLoc : sig ... end
    module ArrayBlk : sig ... end
    module Boolean : sig ... end
    module Bounds : sig ... end
    module BufferOverrunAnalysis : sig ... end
    module BufferOverrunAnalysisSummary : sig ... end
    module BufferOverrunChecker : sig ... end
    module BufferOverrunCheckerSummary : sig ... end
    module BufferOverrunDomain : sig ... end
    module BufferOverrunField : sig ... end
    module BufferOverrunModels : sig ... end
    module BufferOverrunOndemandEnv : sig ... end
    module BufferOverrunProofObligations : sig ... end
    module BufferOverrunSemantics : sig ... end
    module BufferOverrunTrace : sig ... end
    module BufferOverrunTypModels : sig ... end
    module BufferOverrunUtils : sig ... end
    module FuncPtr : sig ... end
    module Ints : sig ... end
    module Itv : sig ... end
    module Polynomials : sig ... end
    module Symb : sig ... end
    diff --git a/website/static/odoc/next/infer/Backend.html b/website/static/odoc/next/infer/Backend.html index ef095ca51c1..4fca3eabbc7 100644 --- a/website/static/odoc/next/infer/Backend.html +++ b/website/static/odoc/next/infer/Backend.html @@ -1,2 +1,2 @@ -Backend (infer.Backend)

    Orchestration of the Backend Analyses

    Important modules:

    All modules: Backend

    \ No newline at end of file +Backend (infer.Backend)

    Orchestration of the Backend Analyses

    Important modules:

    All modules: Backend

    diff --git a/website/static/odoc/next/infer/Backend/AnalysisDependencyGraph/index.html b/website/static/odoc/next/infer/Backend/AnalysisDependencyGraph/index.html index 96c9de37f09..4af7ea713d7 100644 --- a/website/static/odoc/next/infer/Backend/AnalysisDependencyGraph/index.html +++ b/website/static/odoc/next/infer/Backend/AnalysisDependencyGraph/index.html @@ -1,2 +1,2 @@ -AnalysisDependencyGraph (infer.Backend.AnalysisDependencyGraph)

    Module Backend.AnalysisDependencyGraph

    val invalidate : changed_files:IBase.SourceFile.Set.t option -> unit

    Build a dependency graph from the summaries in the specs table, flag any transitive dependencies of the changed_files, then invalidate any flagged transitive dependencies.

    val store_previous_schedule : unit -> unit

    stores to disk the callgraph obtained by adding edges from the summary_loads dependencies in the Summary.t.dependencies field of every procedure; used to replay the previous analysis inter-procedural schedule

    val store_previous_schedule_if_needed : unit -> unit

    do store_previous_schedule () if we have been asked to replay the analysis and there isn't a schedule file already; use if the results DB is about to be deleted, eg before the capture phase, otherwise load_previous_schedule takes care of selecting between loading from an existing schedule file or directly from summaries

    val load_previous_schedule : unit -> CallGraph.t option

    load from a file created with store_previous_schedule if present or from summaries otherwise

    \ No newline at end of file +AnalysisDependencyGraph (infer.Backend.AnalysisDependencyGraph)

    Module Backend.AnalysisDependencyGraph

    val invalidate : changed_files:IBase.SourceFile.Set.t option -> unit

    Build a dependency graph from the summaries in the specs table, flag any transitive dependencies of the changed_files, then invalidate any flagged transitive dependencies.

    val store_previous_schedule : unit -> unit

    stores to disk the callgraph obtained by adding edges from the summary_loads dependencies in the Summary.t.dependencies field of every procedure; used to replay the previous analysis inter-procedural schedule

    val store_previous_schedule_if_needed : unit -> unit

    do store_previous_schedule () if we have been asked to replay the analysis and there isn't a schedule file already; use if the results DB is about to be deleted, eg before the capture phase, otherwise load_previous_schedule takes care of selecting between loading from an existing schedule file or directly from summaries

    val load_previous_schedule : unit -> CallGraph.t option

    load from a file created with store_previous_schedule if present or from summaries otherwise

    diff --git a/website/static/odoc/next/infer/Backend/CallGraph/Node/index.html b/website/static/odoc/next/infer/Backend/CallGraph/Node/index.html index 57d1828238b..f5862bb9118 100644 --- a/website/static/odoc/next/infer/Backend/CallGraph/Node/index.html +++ b/website/static/odoc/next/infer/Backend/CallGraph/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Backend.CallGraph.Node)

    Module CallGraph.Node

    type t = private {
    1. id : int;
    2. pname : IR.Procname.t;
    3. mutable successors : int list;
    4. mutable flag : bool;
    }
    val set_flag : t -> unit
    \ No newline at end of file +Node (infer.Backend.CallGraph.Node)

    Module CallGraph.Node

    type t = private {
    1. id : int;
    2. pname : IR.Procname.t;
    3. mutable successors : int list;
    4. mutable flag : bool;
    }
    val set_flag : t -> unit
    diff --git a/website/static/odoc/next/infer/Backend/CallGraph/index.html b/website/static/odoc/next/infer/Backend/CallGraph/index.html index 51fa8aeb54a..f2a1e783688 100644 --- a/website/static/odoc/next/infer/Backend/CallGraph/index.html +++ b/website/static/odoc/next/infer/Backend/CallGraph/index.html @@ -1,7 +1,7 @@ -CallGraph (infer.Backend.CallGraph)

    Module Backend.CallGraph

    module Node : sig ... end
    type t
    val reset : t -> unit

    empty the graph and shrink it to its initial size

    val create : int -> t

    create n makes an empty graph with initial capacity n which grows as required

    val n_procs : t -> int

    number of procedures in graph

    val mem : t -> int -> bool

    is an int id the index of a node in the graph?

    val mem_procname : t -> IR.Procname.t -> bool

    is there a node for procname in the graph?

    val flag_reachable : t -> IR.Procname.t -> unit

    flag all nodes reachable from the node of the given procname, if it exists

    val iter_unflagged_leaves : f:(Node.t -> unit) -> t -> unit

    iterate over all leaves that have their flag set to false

    val remove : t -> IR.Procname.t -> unit
    val to_dotty : t -> IBase.ResultsDirEntryName.id -> unit

    output call graph in dotty format with the given filename in results dir

    val add_edge : t -> IR.Procname.t -> successor:IR.Procname.t -> unit

    add an edge from the proc name to successor in the graph, creating a node for the proc name if there isn't one already

    val create_node : t -> IR.Procname.t -> IR.Procname.t list -> unit

    create a new node with edges from pname to successor_pnames in the graph

    val create_node_with_id : +CallGraph (infer.Backend.CallGraph)

    Module Backend.CallGraph

    module Node : sig ... end
    type t
    val reset : t -> unit

    empty the graph and shrink it to its initial size

    val create : int -> t

    create n makes an empty graph with initial capacity n which grows as required

    val n_procs : t -> int

    number of procedures in graph

    val mem : t -> int -> bool

    is an int id the index of a node in the graph?

    val mem_procname : t -> IR.Procname.t -> bool

    is there a node for procname in the graph?

    val flag_reachable : t -> IR.Procname.t -> unit

    flag all nodes reachable from the node of the given procname, if it exists

    val iter_unflagged_leaves : f:(Node.t -> unit) -> t -> unit

    iterate over all leaves that have their flag set to false

    val remove : t -> IR.Procname.t -> unit
    val to_dotty : t -> IBase.ResultsDirEntryName.id -> unit

    output call graph in dotty format with the given filename in results dir

    val add_edge : t -> IR.Procname.t -> successor:IR.Procname.t -> unit

    add an edge from the proc name to successor in the graph, creating a node for the proc name if there isn't one already

    val create_node : t -> IR.Procname.t -> IR.Procname.t list -> unit

    create a new node with edges from pname to successor_pnames in the graph

    val create_node_with_id : t -> - id:int -> + id:int -> IR.Procname.t -> - successors:int list -> - unit
    val node_of_id : t -> int -> Node.t option
    val fold_flagged : t -> f:(Node.t -> 'a -> 'a) -> 'a -> 'a

    perform a fold over the nodes in the graph with flag set to true

    val default_initial_capacity : int

    reasonable minimum capacity for the graph that is prime

    \ No newline at end of file + successors:int list -> + unit
    val node_of_id : t -> int -> Node.t option
    val fold_flagged : t -> f:(Node.t -> 'a -> 'a) -> 'a -> 'a

    perform a fold over the nodes in the graph with flag set to true

    val default_initial_capacity : int

    reasonable minimum capacity for the graph that is prime

    diff --git a/website/static/odoc/next/infer/Backend/CallGraphScheduler/index.html b/website/static/odoc/next/infer/Backend/CallGraphScheduler/index.html index 076dd50ca38..51a736e7399 100644 --- a/website/static/odoc/next/infer/Backend/CallGraphScheduler/index.html +++ b/website/static/odoc/next/infer/Backend/CallGraphScheduler/index.html @@ -1,4 +1,4 @@ -CallGraphScheduler (infer.Backend.CallGraphScheduler)

    Module Backend.CallGraphScheduler

    val bottom_up : +CallGraphScheduler (infer.Backend.CallGraphScheduler)

    Module Backend.CallGraphScheduler

    \ No newline at end of file + (Absint.TaskSchedulerTypes.target, 'a) IBase.ProcessPool.TaskGenerator.t
    diff --git a/website/static/odoc/next/infer/Backend/CallbackOfChecker/index.html b/website/static/odoc/next/infer/Backend/CallbackOfChecker/index.html index 2ea1f3c15a8..03e6320291d 100644 --- a/website/static/odoc/next/infer/Backend/CallbackOfChecker/index.html +++ b/website/static/odoc/next/infer/Backend/CallbackOfChecker/index.html @@ -1,13 +1,13 @@ -CallbackOfChecker (infer.Backend.CallbackOfChecker)

    Module Backend.CallbackOfChecker

    Conversions from checkers taking "functional" Absint.InterproceduralAnalysis.t et al. payloads to Callbacks.proc_callback_t and friends.

    val mk_interprocedural_field_t : +CallbackOfChecker (infer.Backend.CallbackOfChecker)

    Module Backend.CallbackOfChecker

    Conversions from checkers taking "functional" Absint.InterproceduralAnalysis.t et al. payloads to Callbacks.proc_callback_t and friends.

    val mk_interprocedural_field_t : (Payloads.t, 'payload option IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> Callbacks.proc_callback_args -> - ?tenv:IR.Tenv.t -> + ?tenv:IR.Tenv.t -> unit -> 'payload Absint.InterproceduralAnalysis.t * Summary.Stats.t IStdlib.IStd.ref
    val interprocedural : - f_analyze_dep:('payloads_orig -> 'payloads option) -> - get_payload:(Payloads.t -> 'payloads_orig) -> - set_payload: + f_analyze_dep:('payloads_orig -> 'payloads option) -> + get_payload:(Payloads.t -> 'payloads_orig) -> + set_payload: (Payloads.t -> 'payload_checker IStdlib.IStd.Lazy.t -> Payloads.t) -> ('payloads Absint.InterproceduralAnalysis.t -> 'payload_checker) -> Callbacks.proc_callback_t

    the general form of interprocedural checkers: can read and update several payloads, and massage analysis results (mostly used to join option types)

    val interprocedural_with_field : @@ -15,7 +15,7 @@ ('payload Absint.InterproceduralAnalysis.t -> 'payload option) -> Callbacks.proc_callback_t

    interprocedural_with_field field checker expects checker to compute a payload (option) suitable for field, given an inter-procedural analysis of callees that computes the same payload type

    val interprocedural_with_field_and_specialization : (Payloads.t, 'payload option IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> - (?specialization:('payload * IR.Specialization.t) -> + (?specialization:('payload * IR.Specialization.t) -> 'payload Absint.InterproceduralAnalysis.t -> 'payload option) -> Callbacks.proc_callback_with_specialization_t

    same as interprocedural_with_field but allowing specialization

    val make_is_already_specialized_test : @@ -24,7 +24,7 @@ IR.Specialization.t -> Summary.t -> bool
    val interprocedural_with_field_dependency : - dep_field:(Payloads.t, 'payload_dep IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> + dep_field:(Payloads.t, 'payload_dep IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> (Payloads.t, 'payload IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> (('payload * 'payload_dep) Absint.InterproceduralAnalysis.t -> 'payload_dep -> @@ -38,4 +38,4 @@ Callbacks.proc_callback_t

    runs a simple intra-procedural analysis (one that doesn't need the results of the analysis on any transitive dependencies to analyze a given procedure)

    val intraprocedural_with_field_dependency : (Payloads.t, 'payload IStdlib.IStd.Lazy.t) IStdlib.IStd.Field.t -> (Absint.IntraproceduralAnalysis.t -> 'payload -> unit) -> - Callbacks.proc_callback_t

    an intra-procedural analysis that depends on the summary payload found by another

    \ No newline at end of file + Callbacks.proc_callback_t

    an intra-procedural analysis that depends on the summary payload found by another

    diff --git a/website/static/odoc/next/infer/Backend/Callbacks/index.html b/website/static/odoc/next/infer/Backend/Callbacks/index.html index 9d01c6fc531..60acc7719ee 100644 --- a/website/static/odoc/next/infer/Backend/Callbacks/index.html +++ b/website/static/odoc/next/infer/Backend/Callbacks/index.html @@ -1,28 +1,28 @@ -Callbacks (infer.Backend.Callbacks)

    Module Backend.Callbacks

    Module to register and invoke checkers' callbacks.

    type proc_callback_args = {
    1. summary : Summary.t;
    2. exe_env : Absint.Exe_env.t;
    3. proc_desc : IR.Procdesc.t;
    }

    Type of a procedure callback:

    • List of all the procedures the callback will be called on.
    • get_proc_desc to get a proc desc from a proc name
    • Type environment.
    • Procedure for the callback to act on.
    type proc_callback_t = proc_callback_args -> Summary.t
    type proc_callback_with_specialization_t = - ?specialization:IR.Specialization.t -> +Callbacks (infer.Backend.Callbacks)

    Module Backend.Callbacks

    Module to register and invoke checkers' callbacks.

    type proc_callback_args = {
    1. summary : Summary.t;
    2. exe_env : Absint.Exe_env.t;
    3. proc_desc : IR.Procdesc.t;
    }

    Type of a procedure callback:

    • List of all the procedures the callback will be called on.
    • get_proc_desc to get a proc desc from a proc name
    • Type environment.
    • Procedure for the callback to act on.
    type proc_callback_t = proc_callback_args -> Summary.t
    type proc_callback_with_specialization_t = + ?specialization:IR.Specialization.t -> proc_callback_t
    type file_callback_args = {
    1. procedures : IR.Procname.t list;
    2. source_file : IBase.SourceFile.t;
    3. exe_env : Absint.Exe_env.t;
    }
    type file_callback_t = file_callback_args -> Absint.IssueLog.t

    Result is a list of additional issues found at this stage (complementary to issues generated on per-procedure analysis stage)

    val register_procedure_callback : IBase.Checker.t -> - ?dynamic_dispatch:bool -> + ?dynamic_dispatch:bool -> IBase.Language.t -> proc_callback_t -> unit

    Register a procedure callback (see details above)

    val register_procedure_callback_with_specialization : IBase.Checker.t -> - ?dynamic_dispatch:bool -> + ?dynamic_dispatch:bool -> IBase.Language.t -> proc_callback_with_specialization_t -> - is_already_specialized:(IR.Specialization.t -> Summary.t -> bool) -> + is_already_specialized:(IR.Specialization.t -> Summary.t -> bool) -> unit

    Same as register_procedure_callback with specialization

    val register_file_callback : IBase.Checker.t -> IBase.Language.t -> file_callback_t -> unit

    Register a file callback (see details above). issues_dir must be unique for this type of checker.

    val iterate_procedure_callbacks : Absint.Exe_env.t -> - ?specialization:IR.Specialization.t -> + ?specialization:IR.Specialization.t -> Summary.t -> IR.Procdesc.t -> Summary.t

    Invoke all registered procedure callbacks on the given procedure.

    val is_specialized_for : IR.Specialization.t -> Summary.t -> bool

    Check if all callbacks are specialized wrt the given specialization

    val iterate_file_callbacks_and_store_issues : IR.Procname.t list -> Absint.Exe_env.t -> IBase.SourceFile.t -> - unit

    Invoke all registered file callbacks on a file, and store produced errors in a corresponding directory. Guaranteed to be called after all procedure-level callbacks are invoked

    \ No newline at end of file + unit

    Invoke all registered file callbacks on a file, and store produced errors in a corresponding directory. Guaranteed to be called after all procedure-level callbacks are invoked

    diff --git a/website/static/odoc/next/infer/Backend/Devirtualizer/index.html b/website/static/odoc/next/infer/Backend/Devirtualizer/index.html index 20ec25799d5..43d7a34bdf9 100644 --- a/website/static/odoc/next/infer/Backend/Devirtualizer/index.html +++ b/website/static/odoc/next/infer/Backend/Devirtualizer/index.html @@ -1,2 +1,2 @@ -Devirtualizer (infer.Backend.Devirtualizer)

    Module Backend.Devirtualizer

    Simple devirtualization pre-analysis using a flow-sensitive tracking of dynamic classes

    val process : IR.Procdesc.t -> IR.Tenv.t -> unit

    Run the devirtualization pass by replacing some virtual calls by resolved calls

    \ No newline at end of file +Devirtualizer (infer.Backend.Devirtualizer)

    Module Backend.Devirtualizer

    Simple devirtualization pre-analysis using a flow-sensitive tracking of dynamic classes

    val process : IR.Procdesc.t -> IR.Tenv.t -> unit

    Run the devirtualization pass by replacing some virtual calls by resolved calls

    diff --git a/website/static/odoc/next/infer/Backend/FileScheduler/index.html b/website/static/odoc/next/infer/Backend/FileScheduler/index.html index 4bbe993e45e..8c00cc6230c 100644 --- a/website/static/odoc/next/infer/Backend/FileScheduler/index.html +++ b/website/static/odoc/next/infer/Backend/FileScheduler/index.html @@ -1,4 +1,4 @@ -FileScheduler (infer.Backend.FileScheduler)

    Module Backend.FileScheduler

    val make : +FileScheduler (infer.Backend.FileScheduler)

    Module Backend.FileScheduler

    \ No newline at end of file + (Absint.TaskSchedulerTypes.target, 'a) IBase.ProcessPool.TaskGenerator.t
    diff --git a/website/static/odoc/next/infer/Backend/GCStats/index.html b/website/static/odoc/next/infer/Backend/GCStats/index.html index cc8c219447c..3f5f3448421 100644 --- a/website/static/odoc/next/infer/Backend/GCStats/index.html +++ b/website/static/odoc/next/infer/Backend/GCStats/index.html @@ -1,2 +1,2 @@ -GCStats (infer.Backend.GCStats)

    Module Backend.GCStats

    module L = IBase.Logging
    type t
    type since =
    1. | ProgramStart
      (*

      get GC stats from the beginning of the program

      *)
    2. | PreviousStats of t
      (*

      get GC stats relative to another point in time where GC stats were obtained with get ~since:ProgramStart

      *)
    val get : since:since -> t
    val log : name:string -> L.debug_kind -> t -> unit

    log to infer's log file and to Scuba

    val log_aggregate : prefix:string -> L.debug_kind -> t list -> unit

    log aggregate to infer's log file and to Scuba

    val log_f : name:string -> L.debug_kind -> (unit -> 'a) -> 'a

    log GC stats for the duration of the function passed as argument to infer's log file and to Scuba

    \ No newline at end of file +GCStats (infer.Backend.GCStats)

    Module Backend.GCStats

    module L = IBase.Logging
    type t
    type since =
    1. | ProgramStart
      (*

      get GC stats from the beginning of the program

      *)
    2. | PreviousStats of t
      (*

      get GC stats relative to another point in time where GC stats were obtained with get ~since:ProgramStart

      *)
    val get : since:since -> t
    val log : name:string -> L.debug_kind -> t -> unit

    log to infer's log file and to Scuba

    val log_aggregate : prefix:string -> L.debug_kind -> t list -> unit

    log aggregate to infer's log file and to Scuba

    val log_f : name:string -> L.debug_kind -> (unit -> 'a) -> 'a

    log GC stats for the duration of the function passed as argument to infer's log file and to Scuba

    diff --git a/website/static/odoc/next/infer/Backend/InferAnalyze/index.html b/website/static/odoc/next/infer/Backend/InferAnalyze/index.html index 12ecbac9b0a..57ec68e9857 100644 --- a/website/static/odoc/next/infer/Backend/InferAnalyze/index.html +++ b/website/static/odoc/next/infer/Backend/InferAnalyze/index.html @@ -1,2 +1,2 @@ -InferAnalyze (infer.Backend.InferAnalyze)

    Module Backend.InferAnalyze

    Main module for the analysis after the capture phase

    val main : changed_files:IBase.SourceFile.Set.t option -> unit
    val register_active_checkers : unit -> unit
    \ No newline at end of file +InferAnalyze (infer.Backend.InferAnalyze)

    Module Backend.InferAnalyze

    Main module for the analysis after the capture phase

    val main : changed_files:IBase.SourceFile.Set.t option -> unit
    val register_active_checkers : unit -> unit
    diff --git a/website/static/odoc/next/infer/Backend/Issue/index.html b/website/static/odoc/next/infer/Backend/Issue/index.html index c683a48e27c..2c865d820b4 100644 --- a/website/static/odoc/next/infer/Backend/Issue/index.html +++ b/website/static/odoc/next/infer/Backend/Issue/index.html @@ -1,2 +1,2 @@ -Issue (infer.Backend.Issue)

    Module Backend.Issue

    type t = {
    1. err_data : Absint.Errlog.err_data;
    2. err_key : Absint.Errlog.err_key;
    3. proc_location_opt : IBase.Location.t option;
    4. proc_name : IR.Procname.t;
    }
    val sort_filter_issues : t list -> t list
    \ No newline at end of file +Issue (infer.Backend.Issue)

    Module Backend.Issue

    type t = {
    1. err_data : Absint.Errlog.err_data;
    2. err_key : Absint.Errlog.err_key;
    3. proc_location_opt : IBase.Location.t option;
    4. proc_name : IR.Procname.t;
    }
    val sort_filter_issues : t list -> t list
    diff --git a/website/static/odoc/next/infer/Backend/LineageTaint/Private/index.html b/website/static/odoc/next/infer/Backend/LineageTaint/Private/index.html new file mode 100644 index 00000000000..1722e257e45 --- /dev/null +++ b/website/static/odoc/next/infer/Backend/LineageTaint/Private/index.html @@ -0,0 +1,2 @@ + +Private (infer.Backend.LineageTaint.Private)

    Module LineageTaint.Private

    val parse_node : string -> (IR.Procname.t * Checkers.Lineage.Vertex.t) option
    diff --git a/website/static/odoc/next/infer/Backend/LineageTaint/index.html b/website/static/odoc/next/infer/Backend/LineageTaint/index.html new file mode 100644 index 00000000000..630ad1733d3 --- /dev/null +++ b/website/static/odoc/next/infer/Backend/LineageTaint/index.html @@ -0,0 +1,2 @@ + +LineageTaint (infer.Backend.LineageTaint)

    Module Backend.LineageTaint

    val report : lineage_source:string -> lineage_sink:string -> unit
    include sig ... end
    module Private : sig ... end
    diff --git a/website/static/odoc/next/infer/Backend/NodePrinter/index.html b/website/static/odoc/next/infer/Backend/NodePrinter/index.html index b77b3b188a6..d995a331597 100644 --- a/website/static/odoc/next/infer/Backend/NodePrinter/index.html +++ b/website/static/odoc/next/infer/Backend/NodePrinter/index.html @@ -1,7 +1,7 @@ -NodePrinter (infer.Backend.NodePrinter)

    Module Backend.NodePrinter

    Simplified html node printer for checkers

    val with_session : - ?kind:[< `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> - pp_name:(Stdlib.Format.formatter -> unit) -> +NodePrinter (infer.Backend.NodePrinter)

    Module Backend.NodePrinter

    Simplified html node printer for checkers

    val with_session : + ?kind:[< `ComputePre | `ExecNode | `ExecNodeNarrowing | `WTO ] -> + pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> - f:(unit -> 'a) -> - 'a

    Wraps f in an html debug session

    val print_html : bool IStdlib.IStd.ref

    Controls whether the HTML printing is enabled for all analyses except pre-analysis. Set to false in preanalysis to prevent printing and turned back again.

    \ No newline at end of file + f:(unit -> 'a) -> + 'a

    Wraps f in an html debug session

    val print_html : bool IStdlib.IStd.ref

    Controls whether the HTML printing is enabled for all analyses except pre-analysis. Set to false in preanalysis to prevent printing and turned back again.

    diff --git a/website/static/odoc/next/infer/Backend/Ondemand/index.html b/website/static/odoc/next/infer/Backend/Ondemand/index.html index a3b100b96a9..952ce6c45a2 100644 --- a/website/static/odoc/next/infer/Backend/Ondemand/index.html +++ b/website/static/odoc/next/infer/Backend/Ondemand/index.html @@ -1,11 +1,11 @@ -Ondemand (infer.Backend.Ondemand)

    Module Backend.Ondemand

    Module for on-demand analysis.

    val analyze_proc_name : +Ondemand (infer.Backend.Ondemand)

    Module Backend.Ondemand

    Module for on-demand analysis.

    val analyze_proc_name : Absint.Exe_env.t -> - ?specialization:IR.Specialization.t -> - caller_summary:Summary.t -> + ?specialization:IR.Specialization.t -> + caller_summary:Summary.t -> IR.Procname.t -> - Summary.t option

    analyze_proc_name exe_env ~caller_summary callee_pname performs an on-demand analysis of callee_pname triggered during the analysis of caller_summary If specialization is given, the callee is requesting a specialization.

    val analyze_proc_name_for_file_analysis : + Summary.t Absint.AnalysisResult.t

    analyze_proc_name exe_env ~caller_summary callee_pname performs an on-demand analysis of callee_pname triggered during the analysis of caller_summary If specialization is given, the callee is requesting a specialization.

    val analyze_proc_name_for_file_analysis : Absint.Exe_env.t -> IR.Procname.t -> - Summary.t option

    analyze_proc_name_for_file_analysis exe_env callee_pname performs an on-demand analysis of callee_pname as triggered by a file-level checker. This must not be used in any other context, as this will break incremental analysis.

    val analyze_file : Absint.Exe_env.t -> IBase.SourceFile.t -> unit

    Invoke all the callbacks registered in Callbacks on the given file.

    val analyze_proc_name_toplevel : Absint.Exe_env.t -> IR.Procname.t -> unit

    Invoke all the callbacks registered in Callbacks on the given procedure.

    used by the replay analysis to cut mutual recursion cycles in the same places again

    \ No newline at end of file + Summary.t Absint.AnalysisResult.t

    analyze_proc_name_for_file_analysis exe_env callee_pname performs an on-demand analysis of callee_pname as triggered by a file-level checker. This must not be used in any other context, as this will break incremental analysis.

    val analyze_file : Absint.Exe_env.t -> IBase.SourceFile.t -> unit

    Invoke all the callbacks registered in Callbacks on the given file.

    val analyze_proc_name_toplevel : Absint.Exe_env.t -> IR.Procname.t -> unit

    Invoke all the callbacks registered in Callbacks on the given procedure.

    used by the replay analysis to cut mutual recursion cycles in the same places again

    diff --git a/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html b/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html index 1b612b62157..bdd707710a0 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html @@ -1,108 +1,108 @@ -Direct (infer.Backend.Payloads.Fields.Direct)

    Module Fields.Direct

    val iter : +Direct (infer.Backend.Payloads.Fields.Direct)

    Module Fields.Direct

    val iter : t -> - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> unit) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> unit) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> unit) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> unit) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> unit) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> unit) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> unit) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> unit) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> unit) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> unit) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> unit) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> unit) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> unit) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> unit) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> unit) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> unit) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> unit) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> @@ -110,126 +110,126 @@ unit) -> unit
    val fold : t -> - init:'acc__0 -> - annot_map: + init:'acc__0 -> + annot_map: ('acc__0 -> (t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> 'acc__1) -> - biabduction: + biabduction: ('acc__1 -> (t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> 'acc__2) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ('acc__2 -> (t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> 'acc__3) -> - buffer_overrun_checker: + buffer_overrun_checker: ('acc__3 -> (t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> 'acc__4) -> - config_impact_analysis: + config_impact_analysis: ('acc__4 -> (t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> 'acc__5) -> - cost: + cost: ('acc__5 -> (t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> 'acc__6) -> - disjunctive_demo: + disjunctive_demo: ('acc__6 -> (t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> 'acc__7) -> - lab_resource_leaks: + lab_resource_leaks: ('acc__7 -> (t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> 'acc__8) -> - litho_required_props: + litho_required_props: ('acc__8 -> (t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> 'acc__9) -> - pulse: + pulse: ('acc__9 -> (t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> 'acc__10) -> - purity: + purity: ('acc__10 -> (t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> 'acc__11) -> - quandary: + quandary: ('acc__11 -> (t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> 'acc__12) -> - racerd: + racerd: ('acc__12 -> (t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> 'acc__13) -> - scope_leakage: + scope_leakage: ('acc__13 -> (t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> 'acc__14) -> - siof: + siof: ('acc__14 -> (t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> 'acc__15) -> - lineage: + lineage: ('acc__15 -> (t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> 'acc__16) -> - lineage_shape: + lineage_shape: ('acc__16 -> (t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> 'acc__17) -> - starvation: + starvation: ('acc__17 -> (t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> @@ -238,108 +238,108 @@ 'acc__18) -> 'acc__18
    val for_all : t -> - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> bool) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> bool) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> bool) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> @@ -347,108 +347,108 @@ bool) -> bool
    val exists : t -> - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> bool) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> bool) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> bool) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> bool) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> bool) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> bool) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> @@ -456,108 +456,108 @@ bool) -> bool
    val to_list : t -> - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> 'elem__) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> 'elem__) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> 'elem__) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> 'elem__) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> 'elem__) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> 'elem__) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> 'elem__) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> @@ -565,111 +565,111 @@ 'elem__) -> 'elem__ list
    val map : t -> - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t -> Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) -> - t
    val set_all_mutable_fields : t -> unit
    \ No newline at end of file + t
    val set_all_mutable_fields : t -> unit
    diff --git a/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html b/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html index 7b37a548c7f..5aa5715cc0e 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html @@ -1,5 +1,5 @@ -Fields (infer.Backend.Payloads.Fields)

    Module Payloads.Fields

    val names : string list
    val starvation : +Fields (infer.Backend.Payloads.Fields)

    Module Payloads.Fields

    val names : string list
    val starvation : (t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t
    val lineage_shape : (t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) @@ -32,216 +32,216 @@ Fieldslib.Field.t
    val annot_map : (t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t
    val fold : - init:'acc__0 -> - annot_map: + init:'acc__0 -> + annot_map: ('acc__0 -> (t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__1) -> - biabduction: + biabduction: ('acc__1 -> (t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__2) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ('acc__2 -> (t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__3) -> - buffer_overrun_checker: + buffer_overrun_checker: ('acc__3 -> (t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__4) -> - config_impact_analysis: + config_impact_analysis: ('acc__4 -> (t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__5) -> - cost: + cost: ('acc__5 -> (t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__6) -> - disjunctive_demo: + disjunctive_demo: ('acc__6 -> (t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__7) -> - lab_resource_leaks: + lab_resource_leaks: ('acc__7 -> (t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__8) -> - litho_required_props: + litho_required_props: ('acc__8 -> (t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__9) -> - pulse: + pulse: ('acc__9 -> (t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__10) -> - purity: + purity: ('acc__10 -> (t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__11) -> - quandary: + quandary: ('acc__11 -> (t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__12) -> - racerd: + racerd: ('acc__12 -> (t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__13) -> - scope_leakage: + scope_leakage: ('acc__13 -> (t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__14) -> - siof: + siof: ('acc__14 -> (t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__15) -> - lineage: + lineage: ('acc__15 -> (t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__16) -> - lineage_shape: + lineage_shape: ('acc__16 -> (t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__17) -> - starvation: + starvation: ('acc__17 -> (t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__18) -> 'acc__18
    val make_creator : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__0 -> ('input__ -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) * 'acc__1) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__1 -> ('input__ -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) * 'acc__2) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__2 -> ('input__ -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) * 'acc__3) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__3 -> ('input__ -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) * 'acc__4) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__4 -> ('input__ -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) * 'acc__5) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__5 -> ('input__ -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) * 'acc__6) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__6 -> ('input__ -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) * 'acc__7) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__7 -> ('input__ -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) * 'acc__8) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__8 -> ('input__ -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) * 'acc__9) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__9 -> ('input__ -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) * 'acc__10) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__10 -> ('input__ -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) * 'acc__11) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__11 -> ('input__ -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) * 'acc__12) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__12 -> ('input__ -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) * 'acc__13) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__13 -> ('input__ -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) * 'acc__14) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__14 -> ('input__ -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) * 'acc__15) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__15 -> ('input__ -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) * 'acc__16) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__16 -> ('input__ -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) * 'acc__17) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'acc__17 -> @@ -250,387 +250,387 @@ * 'acc__18) -> 'acc__0 -> ('input__ -> t) * 'acc__18
    val create : - annot_map:Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> - biabduction:Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> - buffer_overrun_analysis: + annot_map:Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t -> + biabduction:Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t -> + buffer_overrun_analysis: BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t -> - buffer_overrun_checker: + buffer_overrun_checker: BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t -> - config_impact_analysis: + config_impact_analysis: Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t -> - cost:Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> - disjunctive_demo:Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> - lab_resource_leaks:Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> - litho_required_props:Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> - pulse:Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> - purity:Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> - quandary:Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> - racerd:Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> - scope_leakage:Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> - siof:Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> - lineage:Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> - lineage_shape:Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> - starvation:Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t -> + cost:Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t -> + disjunctive_demo:Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t -> + lab_resource_leaks:Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t -> + litho_required_props:Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t -> + pulse:Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t -> + purity:Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t -> + quandary:Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t -> + racerd:Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t -> + scope_leakage:Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t -> + siof:Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t -> + lineage:Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t -> + lineage_shape:Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t -> + starvation:Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t -> t
    val map : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) -> t
    val iter : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> unit) -> unit
    val for_all : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> bool
    val exists : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> bool) -> bool
    val to_list : - annot_map: + annot_map: ((t, Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - biabduction: + biabduction: ((t, Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - buffer_overrun_analysis: + buffer_overrun_analysis: ((t, BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - buffer_overrun_checker: + buffer_overrun_checker: ((t, BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - config_impact_analysis: + config_impact_analysis: ((t, Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - cost: + cost: ((t, Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - disjunctive_demo: + disjunctive_demo: ((t, Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - lab_resource_leaks: + lab_resource_leaks: ((t, Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - litho_required_props: + litho_required_props: ((t, Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - pulse: + pulse: ((t, Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - purity: + purity: ((t, Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - quandary: + quandary: ((t, Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - racerd: + racerd: ((t, Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - scope_leakage: + scope_leakage: ((t, Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - siof: + siof: ((t, Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - lineage: + lineage: ((t, Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - lineage_shape: + lineage_shape: ((t, Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> - starvation: + starvation: ((t, Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t) Fieldslib.Field.t -> 'elem__) -> 'elem__ list
    val map_poly : ([< `Read | `Set_and_create ], t, 'x0) Fieldslib.Field.user -> - 'x0 list
    module Direct : sig ... end
    \ No newline at end of file + 'x0 list
    module Direct : sig ... end
    diff --git a/website/static/odoc/next/infer/Backend/Payloads/SQLite/index.html b/website/static/odoc/next/infer/Backend/Payloads/SQLite/index.html index 368b4a2a014..1657f766073 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/SQLite/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/SQLite/index.html @@ -1,5 +1,5 @@ -SQLite (infer.Backend.Payloads.SQLite)

    Module Payloads.SQLite

    val serialize : +SQLite (infer.Backend.Payloads.SQLite)

    Module Payloads.SQLite

    val serialize : t -> - old_pulse_payload:Sqlite3.Data.t option -> - Sqlite3.Data.t list

    serialize payloads, but gets an old Pulse's payload to merge, which was pre-existing in DB

    val lazy_load : IBase.Database.analysis_table -> proc_uid:string -> t

    load each payload lazily

    val eager_load : Sqlite3.stmt -> first_column:int -> t

    load all payload columns from the statement starting at first_column

    \ No newline at end of file + old_pulse_payload:Sqlite3.Data.t option -> + Sqlite3.Data.t list

    serialize payloads, but gets an old Pulse's payload to merge, which was pre-existing in DB

    val lazy_load : IBase.Database.analysis_table -> proc_uid:string -> t

    load each payload lazily

    val eager_load : Sqlite3.stmt -> first_column:int -> t

    load all payload columns from the statement starting at first_column

    diff --git a/website/static/odoc/next/infer/Backend/Payloads/index.html b/website/static/odoc/next/infer/Backend/Payloads/index.html index c14b62c4029..d3543133ab1 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/index.html @@ -1,5 +1,5 @@ -Payloads (infer.Backend.Payloads)

    Module Backend.Payloads

    include sig ... end
    type t = {
    1. annot_map : Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t;
    2. biabduction : Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t;
    3. buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option +Payloads (infer.Backend.Payloads)

      Module Backend.Payloads

      include sig ... end
      type t = {
      1. annot_map : Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t;
      2. biabduction : Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t;
      3. buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option IStdlib.IStd.Lazy.t;
      4. buffer_overrun_checker : BO.BufferOverrunCheckerSummary.t option IStdlib.IStd.Lazy.t;
      5. config_impact_analysis : Costlib.ConfigImpactAnalysis.Summary.t option IStdlib.IStd.Lazy.t;
      6. cost : Costlib.CostDomain.summary option IStdlib.IStd.Lazy.t;
      7. disjunctive_demo : Checkers.DisjunctiveDemo.domain option IStdlib.IStd.Lazy.t;
      8. lab_resource_leaks : Labs.ResourceLeakDomain.summary option IStdlib.IStd.Lazy.t;
      9. litho_required_props : Checkers.LithoDomain.summary option IStdlib.IStd.Lazy.t;
      10. pulse : Pulselib.PulseSummary.t option IStdlib.IStd.Lazy.t;
      11. purity : Checkers.PurityDomain.summary option IStdlib.IStd.Lazy.t;
      12. quandary : Quandary.QuandarySummary.t option IStdlib.IStd.Lazy.t;
      13. racerd : Concurrency.RacerDDomain.summary option IStdlib.IStd.Lazy.t;
      14. scope_leakage : Checkers.ScopeLeakage.Summary.t option IStdlib.IStd.Lazy.t;
      15. siof : Checkers.SiofDomain.Summary.t option IStdlib.IStd.Lazy.t;
      16. lineage : Checkers.Lineage.Summary.t option IStdlib.IStd.Lazy.t;
      17. lineage_shape : Checkers.LineageShape.Summary.t option IStdlib.IStd.Lazy.t;
      18. starvation : Concurrency.StarvationDomain.summary option IStdlib.IStd.Lazy.t;
      }

      Analysis summaries for inter-procedural analyses.

      When retrieving already-computed summaries, each entry is lazily loaded from the analysis database to avoid loading and deserializing payloads unnecessarily, which can be overly expensive and memory-hungry.

      This type has to be in sync with PayloadId.t

      val starvation : @@ -24,4 +24,4 @@ t -> Biabduction.BiabductionSummary.t option IStdlib.IStd.Lazy.t
      val annot_map : t -> - Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t
      module Fields : sig ... end
      val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
      val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
      val empty : t
      module SQLite : sig ... end
      \ No newline at end of file + Checkers.AnnotationReachabilityDomain.t option IStdlib.IStd.Lazy.t
    module Fields : sig ... end
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
    val empty : t
    module SQLite : sig ... end
    diff --git a/website/static/odoc/next/infer/Backend/Preanal/index.html b/website/static/odoc/next/infer/Backend/Preanal/index.html index 66cfef3351a..286b927baf4 100644 --- a/website/static/odoc/next/infer/Backend/Preanal/index.html +++ b/website/static/odoc/next/infer/Backend/Preanal/index.html @@ -1,2 +1,2 @@ -Preanal (infer.Backend.Preanal)

    Module Backend.Preanal

    val do_preanalysis : IR.Tenv.t -> IR.Procdesc.t -> unit

    Various preanalysis passes for transforming the IR in useful ways

    \ No newline at end of file +Preanal (infer.Backend.Preanal)

    Module Backend.Preanal

    val do_preanalysis : IR.Tenv.t -> IR.Procdesc.t -> unit

    Various preanalysis passes for transforming the IR in useful ways

    diff --git a/website/static/odoc/next/infer/Backend/Printer/index.html b/website/static/odoc/next/infer/Backend/Printer/index.html index 4451d2bd099..6d0d89ba6bd 100644 --- a/website/static/odoc/next/infer/Backend/Printer/index.html +++ b/website/static/odoc/next/infer/Backend/Printer/index.html @@ -1,6 +1,6 @@ -Printer (infer.Backend.Printer)

    Module Backend.Printer

    Printers for the analysis results

    val node_finish_session : IR.Procdesc.Node.t -> unit

    Finish a session, and perform delayed print actions if required

    val node_start_session : - pp_name:(Stdlib.Format.formatter -> unit) -> +Printer (infer.Backend.Printer)

    Module Backend.Printer

    Printers for the analysis results

    val node_finish_session : IR.Procdesc.Node.t -> unit

    Finish a session, and perform delayed print actions if required

    val node_start_session : + pp_name:(Stdlib.Format.formatter -> unit) -> IR.Procdesc.Node.t -> int -> - unit

    Start a session, and create a new html fine for the node if it does not exist yet

    val write_proc_html : IR.Procdesc.t -> unit

    Write html file for the procedure.

    val write_all_html_files : IBase.SourceFile.t -> unit

    Group procedures used in the file by their corresponding source files, and create filename.ext.html for each such a file.

    \ No newline at end of file + unit

    Start a session, and create a new html fine for the node if it does not exist yet

    val write_proc_html : IR.Procdesc.t -> unit

    Write html file for the procedure.

    val write_all_html_files : IBase.SourceFile.t -> unit

    Group procedures used in the file by their corresponding source files, and create filename.ext.html for each such a file.

    diff --git a/website/static/odoc/next/infer/Backend/ProcLocker/index.html b/website/static/odoc/next/infer/Backend/ProcLocker/index.html index 6ee43a08996..1e925156085 100644 --- a/website/static/odoc/next/infer/Backend/ProcLocker/index.html +++ b/website/static/odoc/next/infer/Backend/ProcLocker/index.html @@ -1,2 +1,2 @@ -ProcLocker (infer.Backend.ProcLocker)

    Module Backend.ProcLocker

    val setup : unit -> unit

    This should be called once before trying to lock Anything.

    val try_lock : IR.Procname.t -> bool

    true = the lock belongs to the calling process. false = the lock belongs to a different worker

    val unlock : IR.Procname.t -> unit

    This will work as a cleanup function because after calling unlock all the workers that need an unlocked Proc should find it's summary already Cached. Throws if the lock had not been taken.

    val is_locked : proc_filename:string -> bool
    \ No newline at end of file +ProcLocker (infer.Backend.ProcLocker)

    Module Backend.ProcLocker

    val setup : unit -> unit

    This should be called once before trying to lock Anything.

    val try_lock : IR.Procname.t -> bool

    true = the lock belongs to the calling process. false = the lock belongs to a different worker

    val unlock : IR.Procname.t -> unit

    This will work as a cleanup function because after calling unlock all the workers that need an unlocked Proc should find it's summary already Cached. Throws if the lock had not been taken.

    val is_locked : proc_filename:string -> bool
    diff --git a/website/static/odoc/next/infer/Backend/Procedures/index.html b/website/static/odoc/next/infer/Backend/Procedures/index.html index 9d4ecdb058d..5ef067d3368 100644 --- a/website/static/odoc/next/infer/Backend/Procedures/index.html +++ b/website/static/odoc/next/infer/Backend/Procedures/index.html @@ -1,17 +1,17 @@ -Procedures (infer.Backend.Procedures)

    Module Backend.Procedures

    val get_all : - filter:IR.Filtering.procedures_filter -> +Procedures (infer.Backend.Procedures)

    Module Backend.Procedures

    val get_all : + filter:IR.Filtering.procedures_filter -> unit -> IR.Procname.t list
    val pp_all : - filter:IR.Filtering.procedures_filter -> - proc_name:bool -> - defined:bool -> - source_file:bool -> - proc_attributes:bool -> - proc_cfg:bool -> - callees:bool -> + filter:IR.Filtering.procedures_filter -> + proc_name:bool -> + defined:bool -> + source_file:bool -> + proc_attributes:bool -> + proc_cfg:bool -> + callees:bool -> Stdlib.Format.formatter -> unit -> unit
    val select_proc_names_interactive : - filter:IR.Filtering.procedures_filter -> - IR.Procname.t list option
    \ No newline at end of file + filter:IR.Filtering.procedures_filter -> + IR.Procname.t list option
    diff --git a/website/static/odoc/next/infer/Backend/RegisterCheckers/index.html b/website/static/odoc/next/infer/Backend/RegisterCheckers/index.html index 4af5c29a7b8..baa7c9c8eb8 100644 --- a/website/static/odoc/next/infer/Backend/RegisterCheckers/index.html +++ b/website/static/odoc/next/infer/Backend/RegisterCheckers/index.html @@ -1,2 +1,2 @@ -RegisterCheckers (infer.Backend.RegisterCheckers)

    Module Backend.RegisterCheckers

    type checker
    val get_active_checkers : unit -> checker list
    val register : checker list -> unit
    val pp_checker : Stdlib.Format.formatter -> checker -> unit
    \ No newline at end of file +RegisterCheckers (infer.Backend.RegisterCheckers)

    Module Backend.RegisterCheckers

    type checker
    val get_active_checkers : unit -> checker list
    val register : checker list -> unit
    val pp_checker : Stdlib.Format.formatter -> checker -> unit
    diff --git a/website/static/odoc/next/infer/Backend/ReplayScheduler/index.html b/website/static/odoc/next/infer/Backend/ReplayScheduler/index.html index 803050baf75..95ea002c1e4 100644 --- a/website/static/odoc/next/infer/Backend/ReplayScheduler/index.html +++ b/website/static/odoc/next/infer/Backend/ReplayScheduler/index.html @@ -1,5 +1,5 @@ -ReplayScheduler (infer.Backend.ReplayScheduler)

    Module Backend.ReplayScheduler

    val make : +ReplayScheduler (infer.Backend.ReplayScheduler)

    Module Backend.ReplayScheduler

    \ No newline at end of file + (Absint.TaskSchedulerTypes.target, 'a) IBase.ProcessPool.TaskGenerator.t
    diff --git a/website/static/odoc/next/infer/Backend/RestartScheduler/index.html b/website/static/odoc/next/infer/Backend/RestartScheduler/index.html index 1759ec65d2b..b9b63be431d 100644 --- a/website/static/odoc/next/infer/Backend/RestartScheduler/index.html +++ b/website/static/odoc/next/infer/Backend/RestartScheduler/index.html @@ -1,4 +1,4 @@ -RestartScheduler (infer.Backend.RestartScheduler)

    Module Backend.RestartScheduler

    val setup : unit -> unit
    val make : +RestartScheduler (infer.Backend.RestartScheduler)

    Module Backend.RestartScheduler

    val setup : unit -> unit
    val with_lock : f:(unit -> 'a) -> IR.Procname.t -> 'a

    Run f after having taken a lock on the given Procname.t and unlock after. If the lock is already held by another worker, throw RestartSchedulerException.ProcnameAlreadyLocked so that the dependency can be sent to the scheduler process. Finally, account for time spent analysing each procedure as useful (finished analysis) or not (an exception was thrown, terminating analysis early).

    \ No newline at end of file + (Absint.TaskSchedulerTypes.target, string) IBase.ProcessPool.TaskGenerator.t
    val with_lock : f:(unit -> 'a) -> IR.Procname.t -> 'a

    Run f after having taken a lock on the given Procname.t and unlock after. If the lock is already held by another worker, throw RestartSchedulerException.ProcnameAlreadyLocked so that the dependency can be sent to the scheduler process. Finally, account for time spent analysing each procedure as useful (finished analysis) or not (an exception was thrown, terminating analysis early).

    diff --git a/website/static/odoc/next/infer/Backend/SourceFileGraph/index.html b/website/static/odoc/next/infer/Backend/SourceFileGraph/index.html index 0fb6ad0dfb3..4e90ee71001 100644 --- a/website/static/odoc/next/infer/Backend/SourceFileGraph/index.html +++ b/website/static/odoc/next/infer/Backend/SourceFileGraph/index.html @@ -1,2 +1,2 @@ -SourceFileGraph (infer.Backend.SourceFileGraph)

    Module Backend.SourceFileGraph

    val to_dotty : string -> unit

    construct the file-call-graph and store it in <results-dir>/<filename>

    val partition_source_file_call_graph : n_workers:int -> unit
    \ No newline at end of file +SourceFileGraph (infer.Backend.SourceFileGraph)

    Module Backend.SourceFileGraph

    val to_dotty : string -> unit

    construct the file-call-graph and store it in <results-dir>/<filename>

    val partition_source_file_call_graph : n_workers:int -> unit
    diff --git a/website/static/odoc/next/infer/Backend/StarvationGlobalAnalysis/index.html b/website/static/odoc/next/infer/Backend/StarvationGlobalAnalysis/index.html index e45691d5d79..cbae7399438 100644 --- a/website/static/odoc/next/infer/Backend/StarvationGlobalAnalysis/index.html +++ b/website/static/odoc/next/infer/Backend/StarvationGlobalAnalysis/index.html @@ -1,2 +1,2 @@ -StarvationGlobalAnalysis (infer.Backend.StarvationGlobalAnalysis)

    Module Backend.StarvationGlobalAnalysis

    val whole_program_analysis : unit -> unit
    \ No newline at end of file +StarvationGlobalAnalysis (infer.Backend.StarvationGlobalAnalysis)

    Module Backend.StarvationGlobalAnalysis

    val whole_program_analysis : unit -> unit
    diff --git a/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html b/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html index 5ebf35d80f8..79d37a45aa9 100644 --- a/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html +++ b/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html @@ -1,10 +1,10 @@ -OnDisk (infer.Backend.Summary.OnDisk)

    Module Summary.OnDisk

    val clear_cache : unit -> unit

    Remove all the elements from the cache of summaries

    val get : lazy_payloads:bool -> IR.Procname.t -> t option

    Return the summary option for the procedure name

    val reset : IR.Procname.t -> t

    Reset a summary rebuilding the dependents and preserving the proc attributes if present.

    val store : t -> t

    Save summary for the procedure into the spec database and return it. If the operation fails, store an empty summary and return that instead.

    val delete_all : procedures:IR.Procname.t list -> unit

    Similar to delete, but delete all summaries for a list of procedures

    val iter_specs : f:(t -> unit) -> unit

    Iterates over all stored summaries

    val iter_report_summaries_from_config : - f: +OnDisk (infer.Backend.Summary.OnDisk)

    Module Summary.OnDisk

    val clear_cache : unit -> unit

    Remove all the elements from the cache of summaries

    val get : lazy_payloads:bool -> IR.Procname.t -> t option

    Return the summary option for the procedure name

    val reset : IR.Procname.t -> t

    Reset a summary rebuilding the dependents and preserving the proc attributes if present.

    val store : t -> t

    Save summary for the procedure into the spec database and return it. If the operation fails, store an empty summary and return that instead.

    val delete_all : procedures:IR.Procname.t list -> unit

    Similar to delete, but delete all summaries for a list of procedures

    val iter_specs : f:(t -> unit) -> unit

    Iterates over all stored summaries

    val iter_report_summaries_from_config : + f: (IR.Procname.t -> IBase.Location.t -> Costlib.CostDomain.summary option -> Costlib.ConfigImpactAnalysis.Summary.t option -> Absint.Errlog.t -> unit) -> - unit

    Iterates over all analysis artefacts listed above, for each procedure

    val get_count : unit -> int

    Counts the summaries currently stored on disk.

    \ No newline at end of file + unit

    Iterates over all analysis artefacts listed above, for each procedure

    val get_count : unit -> int

    Counts the summaries currently stored on disk.

    diff --git a/website/static/odoc/next/infer/Backend/Summary/Stats/index.html b/website/static/odoc/next/infer/Backend/Summary/Stats/index.html index 6dad43bac86..a82efe91718 100644 --- a/website/static/odoc/next/infer/Backend/Summary/Stats/index.html +++ b/website/static/odoc/next/infer/Backend/Summary/Stats/index.html @@ -1,6 +1,6 @@ -Stats (infer.Backend.Summary.Stats)

    Module Summary.Stats

    type t

    Execution statistics

    val add_visited : t -> int -> unit
    val is_visited : t -> int -> bool
    val update : - ?add_symops:int -> - ?failure_kind:IBase.Exception.failure_kind -> +Stats (infer.Backend.Summary.Stats)

    Module Summary.Stats

    type t

    Execution statistics

    val add_visited : t -> int -> unit
    val is_visited : t -> int -> bool
    val update : + ?add_symops:int -> + ?failure_kind:IBase.Exception.failure_kind -> t -> - t
    \ No newline at end of file + t
    diff --git a/website/static/odoc/next/infer/Backend/Summary/index.html b/website/static/odoc/next/infer/Backend/Summary/index.html index 82a9c8069a7..351d340d9b0 100644 --- a/website/static/odoc/next/infer/Backend/Summary/index.html +++ b/website/static/odoc/next/infer/Backend/Summary/index.html @@ -1,2 +1,2 @@ -Summary (infer.Backend.Summary)

    Module Backend.Summary

    Procedure summaries: the results of the capture and all the analysis for a single procedure, plus some statistics

    module Stats : sig ... end
    type t = {
    1. payloads : Payloads.t;
    2. mutable sessions : int;
      (*

      Session number: how many nodes went through symbolic execution

      *)
    3. stats : Stats.t;
    4. proc_name : IR.Procname.t;
    5. err_log : Absint.Errlog.t;
      (*

      Those are issues that are detected for this procedure after per-procedure analysis. In addition to that there can be errors detected after file-level analysis (next stage after per-procedure analysis). This latter category of errors should NOT be written here, use IssueLog and its serialization capabilities instead.

      *)
    6. mutable dependencies : IR.Dependencies.t;
      (*

      Dynamically discovered analysis-time dependencies used to compute this summary

      *)
    }

    summary of a procedure name

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp_html : IBase.SourceFile.t -> Stdlib.Format.formatter -> t -> unit

    Print the summary in html format

    val pp_text : Stdlib.Format.formatter -> t -> unit

    Print the summary in text format

    module OnDisk : sig ... end
    \ No newline at end of file +Summary (infer.Backend.Summary)

    Module Backend.Summary

    Procedure summaries: the results of the capture and all the analysis for a single procedure, plus some statistics

    module Stats : sig ... end
    type t = {
    1. payloads : Payloads.t;
    2. mutable sessions : int;
      (*

      Session number: how many nodes went through symbolic execution

      *)
    3. stats : Stats.t;
    4. proc_name : IR.Procname.t;
    5. err_log : Absint.Errlog.t;
      (*

      Those are issues that are detected for this procedure after per-procedure analysis. In addition to that there can be errors detected after file-level analysis (next stage after per-procedure analysis). This latter category of errors should NOT be written here, use IssueLog and its serialization capabilities instead.

      *)
    6. mutable dependencies : IR.Dependencies.t;
      (*

      Dynamically discovered analysis-time dependencies used to compute this summary

      *)
    }

    summary of a procedure name

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp_html : IBase.SourceFile.t -> Stdlib.Format.formatter -> t -> unit

    Print the summary in html format

    val pp_text : Stdlib.Format.formatter -> t -> unit

    Print the summary in text format

    module OnDisk : sig ... end
    diff --git a/website/static/odoc/next/infer/Backend/SyntacticCallGraph/index.html b/website/static/odoc/next/infer/Backend/SyntacticCallGraph/index.html index f6a31b76b7e..a1c2bf6eab4 100644 --- a/website/static/odoc/next/infer/Backend/SyntacticCallGraph/index.html +++ b/website/static/odoc/next/infer/Backend/SyntacticCallGraph/index.html @@ -1,6 +1,6 @@ -SyntacticCallGraph (infer.Backend.SyntacticCallGraph)

    Module Backend.SyntacticCallGraph

    val iter_captured_procs_and_callees : +SyntacticCallGraph (infer.Backend.SyntacticCallGraph)

    Module Backend.SyntacticCallGraph

    val iter_captured_procs_and_callees : (IR.Procname.t -> IR.Procname.t list -> unit) -> unit

    run a function on every captured procedure, passing its list of syntactic callees

    task generator that works by

    • loading the syntactic call graph from the capture DB
    • restricting it to the reachable procs from the modified files
    • scheduling leaves only and removing them from the graph when analysed.
    val build_from_sources : IBase.SourceFile.t list -> CallGraph.t

    construct the syntactic call graph from the capture DB

    val to_dotty : CallGraph.t -> unit

    write out the given syntactic call graph into <results-dir>/syntactic-call-graph.dot

    \ No newline at end of file + (Absint.TaskSchedulerTypes.target, 'a) IBase.ProcessPool.TaskGenerator.t

    task generator that works by

    • loading the syntactic call graph from the capture DB
    • restricting it to the reachable procs from the modified files
    • scheduling leaves only and removing them from the graph when analysed.
    val build_from_sources : IBase.SourceFile.t list -> CallGraph.t

    construct the syntactic call graph from the capture DB

    val to_dotty : CallGraph.t -> unit

    write out the given syntactic call graph into <results-dir>/syntactic-call-graph.dot

    diff --git a/website/static/odoc/next/infer/Backend/Tasks/Runner/index.html b/website/static/odoc/next/infer/Backend/Tasks/Runner/index.html index f425528997d..ecaf231b959 100644 --- a/website/static/odoc/next/infer/Backend/Tasks/Runner/index.html +++ b/website/static/odoc/next/infer/Backend/Tasks/Runner/index.html @@ -1,9 +1,9 @@ -Runner (infer.Backend.Tasks.Runner)

    Module Tasks.Runner

    A runner accepts new tasks repeatedly for parallel execution

    type ('work, 'final, 'result) t
    val create : - ?with_primary_db:bool -> - jobs:int -> - child_prologue:(IBase.ProcessPool.Worker.id -> unit) -> - f:('work, 'result) doer -> - child_epilogue:(IBase.ProcessPool.Worker.id -> 'final) -> +Runner (infer.Backend.Tasks.Runner)

    Module Tasks.Runner

    A runner accepts new tasks repeatedly for parallel execution

    type ('work, 'final, 'result) t
    val create : + ?with_primary_db:bool -> + jobs:int -> + child_prologue:(IBase.ProcessPool.Worker.id -> unit) -> + f:('work, 'result) doer -> + child_epilogue:(IBase.ProcessPool.Worker.id -> 'final) -> (unit -> ('work, 'result) IBase.ProcessPool.TaskGenerator.t) -> - ('work, 'final, 'result) t

    Create a runner running jobs jobs in parallel

    val run : (_, 'final, _) t -> 'final option IStdlib.IStd.Array.t

    Start the given tasks with the runner and wait until completion

    \ No newline at end of file + ('work, 'final, 'result) t

    Create a runner running jobs jobs in parallel

    val run : (_, 'final, _) t -> 'final option IStdlib.IStd.Array.t

    Start the given tasks with the runner and wait until completion

    diff --git a/website/static/odoc/next/infer/Backend/Tasks/index.html b/website/static/odoc/next/infer/Backend/Tasks/index.html index 50b380026ed..3ef0aaf2eef 100644 --- a/website/static/odoc/next/infer/Backend/Tasks/index.html +++ b/website/static/odoc/next/infer/Backend/Tasks/index.html @@ -1,2 +1,2 @@ -Tasks (infer.Backend.Tasks)

    Module Backend.Tasks

    type ('a, 'b) doer = 'a -> 'b option
    val run_sequentially : f:('a, 'b) doer -> 'a list -> unit

    Run the tasks sequentially

    module Runner : sig ... end

    A runner accepts new tasks repeatedly for parallel execution

    \ No newline at end of file +Tasks (infer.Backend.Tasks)

    Module Backend.Tasks

    type ('a, 'b) doer = 'a -> 'b option
    val run_sequentially : f:('a, 'b) doer -> 'a list -> unit

    Run the tasks sequentially

    module Runner : sig ... end

    A runner accepts new tasks repeatedly for parallel execution

    diff --git a/website/static/odoc/next/infer/Backend/index.html b/website/static/odoc/next/infer/Backend/index.html index 05bd17c2ccc..fabd2a6f4c3 100644 --- a/website/static/odoc/next/infer/Backend/index.html +++ b/website/static/odoc/next/infer/Backend/index.html @@ -1,2 +1,2 @@ -Backend (infer.Backend)

    Module Backend

    module AnalysisDependencyGraph : sig ... end
    module CallGraph : sig ... end
    module CallGraphScheduler : sig ... end
    module CallbackOfChecker : sig ... end

    Conversions from checkers taking "functional" Absint.InterproceduralAnalysis.t et al. payloads to Callbacks.proc_callback_t and friends.

    module Callbacks : sig ... end

    Module to register and invoke checkers' callbacks.

    module Devirtualizer : sig ... end
    module FileScheduler : sig ... end
    module GCStats : sig ... end
    module InferAnalyze : sig ... end

    Main module for the analysis after the capture phase

    module Issue : sig ... end
    module NodePrinter : sig ... end

    Simplified html node printer for checkers

    module Ondemand : sig ... end

    Module for on-demand analysis.

    module Payloads : sig ... end
    module Preanal : sig ... end
    module Printer : sig ... end

    Printers for the analysis results

    module ProcLocker : sig ... end
    module Procedures : sig ... end
    module RegisterCheckers : sig ... end
    module ReplayScheduler : sig ... end
    module RestartScheduler : sig ... end
    module SourceFileGraph : sig ... end
    module StarvationGlobalAnalysis : sig ... end
    module Summary : sig ... end

    Procedure summaries: the results of the capture and all the analysis for a single procedure, plus some statistics

    module SyntacticCallGraph : sig ... end
    module Tasks : sig ... end
    \ No newline at end of file +Backend (infer.Backend)

    Module Backend

    module AnalysisDependencyGraph : sig ... end
    module CallGraph : sig ... end
    module CallGraphScheduler : sig ... end
    module CallbackOfChecker : sig ... end

    Conversions from checkers taking "functional" Absint.InterproceduralAnalysis.t et al. payloads to Callbacks.proc_callback_t and friends.

    module Callbacks : sig ... end

    Module to register and invoke checkers' callbacks.

    module Devirtualizer : sig ... end
    module FileScheduler : sig ... end
    module GCStats : sig ... end
    module InferAnalyze : sig ... end

    Main module for the analysis after the capture phase

    module Issue : sig ... end
    module LineageTaint : sig ... end
    module NodePrinter : sig ... end

    Simplified html node printer for checkers

    module Ondemand : sig ... end

    Module for on-demand analysis.

    module Payloads : sig ... end
    module Preanal : sig ... end
    module Printer : sig ... end

    Printers for the analysis results

    module ProcLocker : sig ... end
    module Procedures : sig ... end
    module RegisterCheckers : sig ... end
    module ReplayScheduler : sig ... end
    module RestartScheduler : sig ... end
    module SourceFileGraph : sig ... end
    module StarvationGlobalAnalysis : sig ... end
    module Summary : sig ... end

    Procedure summaries: the results of the capture and all the analysis for a single procedure, plus some statistics

    module SyntacticCallGraph : sig ... end
    module Tasks : sig ... end
    diff --git a/website/static/odoc/next/infer/Biabduction/Abs/index.html b/website/static/odoc/next/infer/Biabduction/Abs/index.html index 05a93cee984..0586c05bcc5 100644 --- a/website/static/odoc/next/infer/Biabduction/Abs/index.html +++ b/website/static/odoc/next/infer/Biabduction/Abs/index.html @@ -1,5 +1,5 @@ -Abs (infer.Biabduction.Abs)

    Module Biabduction.Abs

    Implementation of Abstraction Functions

    val abstract : +Abs (infer.Biabduction.Abs)

    Module Biabduction.Abs

    Implementation of Abstraction Functions

    val abstract_spec : @@ -17,4 +17,4 @@ Propset.t

    Abstract each proposition in propset

    Remove redundant elements in an array, and check for junk afterwards

    \ No newline at end of file + Prop.normal Prop.t

    Remove redundant elements in an array, and check for junk afterwards

    diff --git a/website/static/odoc/next/infer/Biabduction/Absarray/index.html b/website/static/odoc/next/infer/Biabduction/Absarray/index.html index 9cf422737e8..d4aec1fe116 100644 --- a/website/static/odoc/next/infer/Biabduction/Absarray/index.html +++ b/website/static/odoc/next/infer/Biabduction/Absarray/index.html @@ -1,8 +1,8 @@ -Absarray (infer.Biabduction.Absarray)

    Module Biabduction.Absarray

    val array_clean_new_index : bool -> IR.Exp.t -> IR.Exp.t

    This function should be used before adding a new index to Earray. The exp is the newly created index. This function "cleans" exp according to whether it is the footprint or current part of the prop. The function faults in the re - execution mode, as an internal check of the tool.

    Abstraction for Arrays

    val abstract_array_check : +Absarray (infer.Biabduction.Absarray)

    Module Biabduction.Absarray

    val array_clean_new_index : bool -> IR.Exp.t -> IR.Exp.t

    This function should be used before adding a new index to Earray. The exp is the newly created index. This function "cleans" exp according to whether it is the footprint or current part of the prop. The function faults in the re - execution mode, as an internal check of the tool.

    Abstraction for Arrays

    val abstract_array_check : IR.Tenv.t -> Prop.normal Prop.t -> Prop.normal Prop.t

    Apply array abstraction and check the result

    val array_abstraction_performed : bool IStdlib.IStd.ref

    Remember whether array abstraction was performed (to be reset before calling Abs.abstract)

    val remove_redundant_elements : IR.Tenv.t -> Prop.normal Prop.t -> - Prop.normal Prop.t

    remove redundant elements in an array

    \ No newline at end of file + Prop.normal Prop.t

    remove redundant elements in an array

    diff --git a/website/static/odoc/next/infer/Biabduction/Attribute/index.html b/website/static/odoc/next/infer/Biabduction/Attribute/index.html index 839ee81064d..a8e673b0b23 100644 --- a/website/static/odoc/next/infer/Biabduction/Attribute/index.html +++ b/website/static/odoc/next/infer/Biabduction/Attribute/index.html @@ -1,8 +1,8 @@ -Attribute (infer.Biabduction.Attribute)

    Module Biabduction.Attribute

    Attribute manipulation in Propositions (i.e., Symbolic Heaps)

    val is_pred : Predicates.atom -> bool

    Check whether an atom is used to mark an attribute

    val add : +Attribute (infer.Biabduction.Attribute)

    Module Biabduction.Attribute

    Attribute manipulation in Propositions (i.e., Symbolic Heaps)

    val is_pred : Predicates.atom -> bool

    Check whether an atom is used to mark an attribute

    val add : IR.Tenv.t -> - ?footprint:bool -> - ?polarity:bool -> + ?footprint:bool -> + ?polarity:bool -> Prop.normal Prop.t -> IR.PredSymb.t -> IR.Exp.t list -> @@ -47,8 +47,8 @@ Prop.normal Prop.t

    For each Var subexp of the argument with an Aobjc_null attribute, remove the attribute and conjoin an equality to zero.

    val mark_vars_as_undefined : IR.Tenv.t -> Prop.normal Prop.t -> - ret_exp:IR.Exp.t -> - undefined_actuals_by_ref:IR.Exp.t list -> + ret_exp:IR.Exp.t -> + undefined_actuals_by_ref:IR.Exp.t list -> IR.Procname.t -> IR.Annot.Item.t -> IBase.Location.t -> @@ -66,4 +66,4 @@ IR.Tenv.t -> IR.Exp.t -> 'a Prop.t -> - IR.Exp.t option
    \ No newline at end of file + IR.Exp.t option
    diff --git a/website/static/odoc/next/infer/Biabduction/BiabductionConfig/index.html b/website/static/odoc/next/infer/Biabduction/BiabductionConfig/index.html index 376ce35c3e7..fdae28e7b98 100644 --- a/website/static/odoc/next/infer/Biabduction/BiabductionConfig/index.html +++ b/website/static/odoc/next/infer/Biabduction/BiabductionConfig/index.html @@ -1,2 +1,2 @@ -BiabductionConfig (infer.Biabduction.BiabductionConfig)

    Module Biabduction.BiabductionConfig

    Global variables

    val footprint : bool IStdlib.IStd.ref
    val run_in_footprint_mode : ('a -> 'b) -> 'a -> 'b

    Call f x with footprint set to true. Restore the initial value of footprint also in case of exception.

    val run_in_re_execution_mode : ('a -> 'b) -> 'a -> 'b

    Call f x with footprint set to false. Restore the initial value of footprint also in case of exception.

    Global variables with initial values specified by command-line options

    val abs_val : int IStdlib.IStd.ref
    val run_with_abs_val_equal_zero : ('a -> 'b) -> 'a -> 'b

    Call f x with abs_val set to zero. Restore the initial value also in case of exception.

    val allow_leak : bool IStdlib.IStd.ref
    \ No newline at end of file +BiabductionConfig (infer.Biabduction.BiabductionConfig)

    Module Biabduction.BiabductionConfig

    Global variables

    val footprint : bool IStdlib.IStd.ref
    val run_in_footprint_mode : ('a -> 'b) -> 'a -> 'b

    Call f x with footprint set to true. Restore the initial value of footprint also in case of exception.

    val run_in_re_execution_mode : ('a -> 'b) -> 'a -> 'b

    Call f x with footprint set to false. Restore the initial value of footprint also in case of exception.

    Global variables with initial values specified by command-line options

    val abs_val : int IStdlib.IStd.ref
    val run_with_abs_val_equal_zero : ('a -> 'b) -> 'a -> 'b

    Call f x with abs_val set to zero. Restore the initial value also in case of exception.

    val allow_leak : bool IStdlib.IStd.ref
    diff --git a/website/static/odoc/next/infer/Biabduction/BiabductionReporting/index.html b/website/static/odoc/next/infer/Biabduction/BiabductionReporting/index.html index 4f90babb239..0f526bdb235 100644 --- a/website/static/odoc/next/infer/Biabduction/BiabductionReporting/index.html +++ b/website/static/odoc/next/infer/Biabduction/BiabductionReporting/index.html @@ -1,9 +1,9 @@ -BiabductionReporting (infer.Biabduction.BiabductionReporting)

    Module Biabduction.BiabductionReporting

    val log_issue_using_state : IR.Procdesc.t -> Absint.Errlog.t -> exn -> unit

    Add an issue to the given summary using biabduction state.

    val log_issue_deprecated_using_state : +BiabductionReporting (infer.Biabduction.BiabductionReporting)

    Module Biabduction.BiabductionReporting

    val log_issue_using_state : IR.Procdesc.t -> Absint.Errlog.t -> exn -> unit

    Add an issue to the given summary using biabduction state.

    val log_issue_deprecated_using_state : IR.Procdesc.t -> Absint.Errlog.t -> - ?node:IR.Procdesc.Node.t -> - ?loc:IBase.Location.t -> - ?ltr:Absint.Errlog.loc_trace -> + ?node:IR.Procdesc.Node.t -> + ?loc:IBase.Location.t -> + ?ltr:Absint.Errlog.loc_trace -> exn -> - unit

    Report an issue in the given procedure using biabduction state. DEPRECATED as it can create race conditions between checkers. Use log_error_using_state instead

    \ No newline at end of file + unit

    Report an issue in the given procedure using biabduction state. DEPRECATED as it can create race conditions between checkers. Use log_error_using_state instead

    diff --git a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/Jprop/index.html b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/Jprop/index.html index 64a954aff2e..d3623d6760f 100644 --- a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/Jprop/index.html +++ b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/Jprop/index.html @@ -1,2 +1,2 @@ -Jprop (infer.Biabduction.BiabductionSummary.Jprop)

    Module BiabductionSummary.Jprop

    Module for joined props: the result of joining together propositions repeatedly

    type 'a t =
    1. | Prop of int * 'a Prop.t
    2. | Joined of int * 'a Prop.t * 'a t * 'a t

    Remember when a prop is obtained as the join of two other props; the first parameter is an id

    val compare : 'a t -> 'a t -> int

    Comparison for joined_prop

    val equal : 'a t -> 'a t -> bool

    Return true if the two join_prop's are equal

    val d_shallow : Prop.normal t -> unit

    Dump the toplevel prop

    val d_list : shallow:bool -> Prop.normal t list -> unit

    dump a joined prop list, the boolean indicates whether to print toplevel props only

    val free_vars : Prop.normal t -> IR.Ident.t IStdlib.IStd.Sequence.t
    val filter : ('a t -> 'b option) -> 'a t list -> 'b list

    jprop_filter filter joinedprops applies filter to the elements of joindeprops and applies it to the subparts if the result is None. Returns the most absract results which pass filter.

    apply a substitution to a jprop

    val map : ('a Prop.t -> 'b Prop.t) -> 'a t -> 'b t

    map the function to each prop in the jprop, pointwise

    val shallow_map : f:('a Prop.t -> 'a Prop.t) -> 'a t -> 'a t

    map f over the top-level prop

    val to_prop : 'a t -> 'a Prop.t

    Extract the toplevel jprop of a prop

    \ No newline at end of file +Jprop (infer.Biabduction.BiabductionSummary.Jprop)

    Module BiabductionSummary.Jprop

    Module for joined props: the result of joining together propositions repeatedly

    type 'a t =
    1. | Prop of int * 'a Prop.t
    2. | Joined of int * 'a Prop.t * 'a t * 'a t

    Remember when a prop is obtained as the join of two other props; the first parameter is an id

    val compare : 'a t -> 'a t -> int

    Comparison for joined_prop

    val equal : 'a t -> 'a t -> bool

    Return true if the two join_prop's are equal

    val d_shallow : Prop.normal t -> unit

    Dump the toplevel prop

    val d_list : shallow:bool -> Prop.normal t list -> unit

    dump a joined prop list, the boolean indicates whether to print toplevel props only

    val free_vars : Prop.normal t -> IR.Ident.t IStdlib.IStd.Sequence.t
    val filter : ('a t -> 'b option) -> 'a t list -> 'b list

    jprop_filter filter joinedprops applies filter to the elements of joindeprops and applies it to the subparts if the result is None. Returns the most absract results which pass filter.

    apply a substitution to a jprop

    val map : ('a Prop.t -> 'b Prop.t) -> 'a t -> 'b t

    map the function to each prop in the jprop, pointwise

    val shallow_map : f:('a Prop.t -> 'a Prop.t) -> 'a t -> 'a t

    map f over the top-level prop

    val to_prop : 'a t -> 'a Prop.t

    Extract the toplevel jprop of a prop

    diff --git a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/NormSpec/index.html b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/NormSpec/index.html index 415dadc48ab..5c0f1e240c3 100644 --- a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/NormSpec/index.html +++ b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/NormSpec/index.html @@ -1,2 +1,2 @@ -NormSpec (infer.Biabduction.BiabductionSummary.NormSpec)

    Module BiabductionSummary.NormSpec

    encapsulate type for normalized specs

    type t
    val compact : Predicates.sharing_env -> t -> t

    Return a compact representation of the spec

    val erase_join_info_pre : IR.Tenv.t -> t -> t

    Erase join info from pre of spec

    \ No newline at end of file +NormSpec (infer.Biabduction.BiabductionSummary.NormSpec)

    Module BiabductionSummary.NormSpec

    encapsulate type for normalized specs

    type t
    val compact : Predicates.sharing_env -> t -> t

    Return a compact representation of the spec

    val erase_join_info_pre : IR.Tenv.t -> t -> t

    Erase join info from pre of spec

    diff --git a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/index.html b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/index.html index 754d98ca783..65682c985da 100644 --- a/website/static/odoc/next/infer/Biabduction/BiabductionSummary/index.html +++ b/website/static/odoc/next/infer/Biabduction/BiabductionSummary/index.html @@ -1,3 +1,3 @@ -BiabductionSummary (infer.Biabduction.BiabductionSummary)

    Module Biabduction.BiabductionSummary

    module Jprop : sig ... end

    Module for joined props: the result of joining together propositions repeatedly

    module Visitedset : - IStdlib.IStd.Caml.Set.S with type elt = IR.Procdesc.Node.id * int list

    set of visited nodes: node id and list of lines of all the instructions

    type 'a spec = {
    1. pre : 'a Jprop.t;
    2. posts : ('a Prop.t * Paths.Path.t) list;
    3. visited : Visitedset.t;
    }

    A spec consists of:

    • pre: a joined prop
    • posts: a list of props with path
    • visited: a list of pairs (node_id, line) for the visited nodes
    module NormSpec : sig ... end

    encapsulate type for normalized specs

    val expose : NormSpec.t -> Prop.normal spec
    val normalized_specs_to_specs : NormSpec.t list -> Prop.normal spec list

    Cast a list of normalized specs to a list of specs

    val pp_spec : Stdlib.Format.formatter -> _ spec -> unit
    val spec_normalize : IR.Tenv.t -> Prop.normal spec -> NormSpec.t

    Convert spec into normal form.

    type phase =
    1. | FOOTPRINT
    2. | RE_EXECUTION
    val equal_phase : phase -> phase -> bool
    val string_of_phase_short : phase -> string
    type t = {
    1. preposts : NormSpec.t list;
    2. phase : phase;
    }
    val get_specs : t -> Prop.normal spec list
    val opt_get_phase : t option -> phase
    val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +BiabductionSummary (infer.Biabduction.BiabductionSummary)

    Module Biabduction.BiabductionSummary

    module Jprop : sig ... end

    Module for joined props: the result of joining together propositions repeatedly

    module Visitedset : + IStdlib.IStd.Caml.Set.S with type elt = IR.Procdesc.Node.id * int list

    set of visited nodes: node id and list of lines of all the instructions

    type 'a spec = {
    1. pre : 'a Jprop.t;
    2. posts : ('a Prop.t * Paths.Path.t) list;
    3. visited : Visitedset.t;
    }

    A spec consists of:

    • pre: a joined prop
    • posts: a list of props with path
    • visited: a list of pairs (node_id, line) for the visited nodes
    module NormSpec : sig ... end

    encapsulate type for normalized specs

    val expose : NormSpec.t -> Prop.normal spec
    val normalized_specs_to_specs : NormSpec.t list -> Prop.normal spec list

    Cast a list of normalized specs to a list of specs

    val pp_spec : Stdlib.Format.formatter -> _ spec -> unit
    val spec_normalize : IR.Tenv.t -> Prop.normal spec -> NormSpec.t

    Convert spec into normal form.

    type phase =
    1. | FOOTPRINT
    2. | RE_EXECUTION
    val equal_phase : phase -> phase -> bool
    val string_of_phase_short : phase -> string
    type t = {
    1. preposts : NormSpec.t list;
    2. phase : phase;
    }
    val get_specs : t -> Prop.normal spec list
    val opt_get_phase : t option -> phase
    val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Biabduction/Buckets/index.html b/website/static/odoc/next/infer/Biabduction/Buckets/index.html index 2286ef05894..a50b0be1457 100644 --- a/website/static/odoc/next/infer/Biabduction/Buckets/index.html +++ b/website/static/odoc/next/infer/Biabduction/Buckets/index.html @@ -1,7 +1,7 @@ -Buckets (infer.Biabduction.Buckets)

    Module Biabduction.Buckets

    Classify bugs into buckets

    val classify_access : +Buckets (infer.Biabduction.Buckets)

    Module Biabduction.Buckets

    Classify bugs into buckets

    Classify the bucket of an error desc using Location.access and nullable information

    \ No newline at end of file + Absint.Localise.error_desc

    Classify the bucket of an error desc using Location.access and nullable information

    diff --git a/website/static/odoc/next/infer/Biabduction/Builtin/index.html b/website/static/odoc/next/infer/Biabduction/Builtin/index.html index 424826de60a..726b39f1317 100644 --- a/website/static/odoc/next/infer/Biabduction/Builtin/index.html +++ b/website/static/odoc/next/infer/Biabduction/Builtin/index.html @@ -1,2 +1,2 @@ -Builtin (infer.Biabduction.Builtin)

    Module Biabduction.Builtin

    Module for builtin functions with their symbolic execution handler

    type args = {
    1. instr : IR.Sil.instr;
    2. prop_ : Prop.normal Prop.t;
    3. path : Paths.Path.t;
    4. ret_id_typ : IR.Ident.t * IR.Typ.t;
    5. args : (IR.Exp.t * IR.Typ.t) list;
    6. proc_name : IR.Procname.t;
    7. loc : IBase.Location.t;
    8. analysis_data : BiabductionSummary.t Absint.InterproceduralAnalysis.t;
    }
    type ret_typ = (Prop.normal Prop.t * Paths.Path.t) list
    type t = args -> ret_typ
    type registered
    val register : IR.Procname.t -> t -> registered

    Register a builtin Procname.t and symbolic execution handler

    val get : IR.Procname.t -> t option

    Get the symbolic execution handler associated to the builtin function name

    val print_and_exit : unit -> 'a

    Print the builtin functions and exit

    \ No newline at end of file +Builtin (infer.Biabduction.Builtin)

    Module Biabduction.Builtin

    Module for builtin functions with their symbolic execution handler

    type args = {
    1. instr : IR.Sil.instr;
    2. prop_ : Prop.normal Prop.t;
    3. path : Paths.Path.t;
    4. ret_id_typ : IR.Ident.t * IR.Typ.t;
    5. args : (IR.Exp.t * IR.Typ.t) list;
    6. proc_name : IR.Procname.t;
    7. loc : IBase.Location.t;
    8. analysis_data : BiabductionSummary.t Absint.InterproceduralAnalysis.t;
    }
    type ret_typ = (Prop.normal Prop.t * Paths.Path.t) list
    type t = args -> ret_typ
    type registered
    val register : IR.Procname.t -> t -> registered

    Register a builtin Procname.t and symbolic execution handler

    val get : IR.Procname.t -> t option

    Get the symbolic execution handler associated to the builtin function name

    val print_and_exit : unit -> 'a

    Print the builtin functions and exit

    diff --git a/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html b/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html index 7a7266f8822..ca1ef31db92 100644 --- a/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html +++ b/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html @@ -1,2 +1,2 @@ -BuiltinDefn (infer.Biabduction.BuiltinDefn)

    Module Biabduction.BuiltinDefn

    Models for the builtin functions supported

    include IR.BUILTINS.S with type t = Builtin.registered
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    val init : unit -> unit

    Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

    \ No newline at end of file +BuiltinDefn (infer.Biabduction.BuiltinDefn)

    Module Biabduction.BuiltinDefn

    Models for the builtin functions supported

    include IR.BUILTINS.S with type t = Builtin.registered
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    val init : unit -> unit

    Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

    diff --git a/website/static/odoc/next/infer/Biabduction/Dom/index.html b/website/static/odoc/next/infer/Biabduction/Dom/index.html index fe901aca1c6..14f3a9ca085 100644 --- a/website/static/odoc/next/infer/Biabduction/Dom/index.html +++ b/website/static/odoc/next/infer/Biabduction/Dom/index.html @@ -1,5 +1,5 @@ -Dom (infer.Biabduction.Dom)

    Module Biabduction.Dom

    Join and Meet Operators

    Join Operators

    val pathset_join : +Dom (infer.Biabduction.Dom)

    Module Biabduction.Dom

    Join and Meet Operators

    Join Operators

    Meet Operators

    val propset_meet_generate_pre : IR.Tenv.t -> Propset.t -> - Prop.normal Prop.t list

    propset_meet_generate_pre generates new symbolic heaps (i.e., props) by applying the partial meet operator, adds the generated heaps to the argument propset, and returns the resulting propset. This function is tuned for combining preconditions.

    \ No newline at end of file + Prop.normal Prop.t list

    propset_meet_generate_pre generates new symbolic heaps (i.e., props) by applying the partial meet operator, adds the generated heaps to the argument propset, and returns the resulting propset. This function is tuned for combining preconditions.

    diff --git a/website/static/odoc/next/infer/Biabduction/DotBiabduction/index.html b/website/static/odoc/next/infer/Biabduction/DotBiabduction/index.html index c07e4344575..70f74617216 100644 --- a/website/static/odoc/next/infer/Biabduction/DotBiabduction/index.html +++ b/website/static/odoc/next/infer/Biabduction/DotBiabduction/index.html @@ -1,5 +1,5 @@ -DotBiabduction (infer.Biabduction.DotBiabduction)

    Module Biabduction.DotBiabduction

    val emit_specs_to_file : +DotBiabduction (infer.Biabduction.DotBiabduction)

    Module Biabduction.DotBiabduction

    val emit_specs_to_file : IBase.DB.filename -> Prop.normal BiabductionSummary.spec list -> - unit

    emit specs in the "dot" format to the specified file

    \ No newline at end of file + unit

    emit specs in the "dot" format to the specified file

    diff --git a/website/static/odoc/next/infer/Biabduction/Errdesc/index.html b/website/static/odoc/next/infer/Biabduction/Errdesc/index.html index fb08ead865f..3c42a249ba0 100644 --- a/website/static/odoc/next/infer/Biabduction/Errdesc/index.html +++ b/website/static/odoc/next/infer/Biabduction/Errdesc/index.html @@ -1,5 +1,5 @@ -Errdesc (infer.Biabduction.Errdesc)

    Module Biabduction.Errdesc

    Create descriptions of analysis errors

    val vpath_find : +Errdesc (infer.Biabduction.Errdesc)

    Module Biabduction.Errdesc

    Create descriptions of analysis errors

    val vpath_find : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> @@ -24,16 +24,16 @@ Absint.Localise.error_desc

    explain a class cast exception

    val explain_dereference : IR.Procname.t -> IR.Tenv.t -> - ?use_buckets:bool -> - ?is_nullable:bool -> - ?is_premature_nil:bool -> + ?use_buckets:bool -> + ?is_nullable:bool -> + ?is_premature_nil:bool -> Absint.Localise.deref_str -> 'a Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

    Produce a description of which expression is dereferenced in the current instruction, if any.

    val explain_dereference_as_caller_expression : IR.Procname.t -> IR.Tenv.t -> - ?use_buckets:bool -> + ?use_buckets:bool -> Absint.Localise.deref_str -> 'a Prop.t -> 'b Prop.t -> @@ -66,6 +66,6 @@ IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option
    val access_opt : - ?is_nullable:bool -> + ?is_nullable:bool -> Predicates.inst -> - Absint.Localise.access option
    \ No newline at end of file + Absint.Localise.access option
    diff --git a/website/static/odoc/next/infer/Biabduction/Exceptions/index.html b/website/static/odoc/next/infer/Biabduction/Exceptions/index.html index ed54c8b7f11..4eb4f3d7b7c 100644 --- a/website/static/odoc/next/infer/Biabduction/Exceptions/index.html +++ b/website/static/odoc/next/infer/Biabduction/Exceptions/index.html @@ -1,5 +1,5 @@ -Exceptions (infer.Biabduction.Exceptions)

    Module Biabduction.Exceptions

    Biabduction uses exceptions to store issues in summaries

    exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
    exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
    exception Array_of_pointsto of IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Bad_footprint of IBase.Logging.ocaml_pos
    exception Cannot_star of IBase.Logging.ocaml_pos
    exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
    exception Dangling_pointer_dereference of bool +Exceptions (infer.Biabduction.Exceptions)

    Module Biabduction.Exceptions

    Biabduction uses exceptions to store issues in summaries

    exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
    exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
    exception Array_of_pointsto of IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Bad_footprint of IBase.Logging.ocaml_pos
    exception Cannot_star of IBase.Logging.ocaml_pos
    exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
    exception Dangling_pointer_dereference of bool * Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Empty_vector_access of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Inherently_dangerous_function of Absint.Localise.error_desc
    exception Internal_error of Absint.Localise.error_desc
    exception Leak of bool * bool * Absint.Localise.error_desc @@ -7,4 +7,4 @@ * IR.PredSymb.resource * IBase.Logging.ocaml_pos
    exception Missing_fld of IR.Fieldname.t * IBase.Logging.ocaml_pos
    exception Premature_nil_termination of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Null_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Precondition_not_found of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Precondition_not_met of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
    exception Registered_observer_being_deallocated of Absint.Localise.error_desc - * IBase.Logging.ocaml_pos
    exception Skip_function of Absint.Localise.error_desc
    exception Symexec_memory_error of IBase.Logging.ocaml_pos
    exception Wrong_argument_number of IBase.Logging.ocaml_pos
    val handle_exception : exn -> bool

    Return true if the exception is not serious and should be handled in timeout mode

    val print_exception_html : string -> exn -> unit

    print a description of the exception to the html output

    val recognize_exception : exn -> Absint.IssueToReport.t
    \ No newline at end of file + * IBase.Logging.ocaml_pos
    exception Skip_function of Absint.Localise.error_desc
    exception Symexec_memory_error of IBase.Logging.ocaml_pos
    exception Wrong_argument_number of IBase.Logging.ocaml_pos
    val handle_exception : exn -> bool

    Return true if the exception is not serious and should be handled in timeout mode

    val print_exception_html : string -> exn -> unit

    print a description of the exception to the html output

    val recognize_exception : exn -> Absint.IssueToReport.t
    diff --git a/website/static/odoc/next/infer/Biabduction/Interproc/index.html b/website/static/odoc/next/infer/Biabduction/Interproc/index.html index cc3ffe5515b..22510527f6f 100644 --- a/website/static/odoc/next/infer/Biabduction/Interproc/index.html +++ b/website/static/odoc/next/infer/Biabduction/Interproc/index.html @@ -1,4 +1,4 @@ -Interproc (infer.Biabduction.Interproc)

    Module Biabduction.Interproc

    Interprocedural Analysis

    val analyze_procedure : +Interproc (infer.Biabduction.Interproc)

    Module Biabduction.Interproc

    Interprocedural Analysis

    Run the biabduction analysis on the given procedure

    \ No newline at end of file + BiabductionSummary.t option

    Run the biabduction analysis on the given procedure

    diff --git a/website/static/odoc/next/infer/Biabduction/JoinState/index.html b/website/static/odoc/next/infer/Biabduction/JoinState/index.html index 6adfd1d4480..ca9b60ec7c5 100644 --- a/website/static/odoc/next/infer/Biabduction/JoinState/index.html +++ b/website/static/odoc/next/infer/Biabduction/JoinState/index.html @@ -1,2 +1,2 @@ -JoinState (infer.Biabduction.JoinState)

    Module Biabduction.JoinState

    Object representing the status of the join operation

    type mode =
    1. | Pre
    2. | Post
    val compare_mode : mode -> mode -> int
    val equal_mode : mode -> mode -> bool
    val get_footprint : unit -> bool
    val set_footprint : bool -> unit
    \ No newline at end of file +JoinState (infer.Biabduction.JoinState)

    Module Biabduction.JoinState

    Object representing the status of the join operation

    type mode =
    1. | Pre
    2. | Post
    val compare_mode : mode -> mode -> int
    val equal_mode : mode -> mode -> bool
    val get_footprint : unit -> bool
    val set_footprint : bool -> unit
    diff --git a/website/static/odoc/next/infer/Biabduction/Match/index.html b/website/static/odoc/next/infer/Biabduction/Match/index.html index 017d659c811..3a96c785533 100644 --- a/website/static/odoc/next/infer/Biabduction/Match/index.html +++ b/website/static/odoc/next/infer/Biabduction/Match/index.html @@ -1,5 +1,5 @@ -Match (infer.Biabduction.Match)

    Module Biabduction.Match

    Implementation of "Smart" Pattern Matching for higher order singly-linked list predicate.

    Used for detecting on a given program if some data scructures are matching some predefined higher-order list predicates. When it is the case, these predicates can be used as possible candidates for abstracting the data-structures. See CAV 2007 for the therory involved.

    val hpara_match_with_impl : +Match (infer.Biabduction.Match)

    Module Biabduction.Match

    Implementation of "Smart" Pattern Matching for higher order singly-linked list predicate.

    Used for detecting on a given program if some data scructures are matching some predefined higher-order list predicates. When it is the case, these predicates can be used as possible candidates for abstracting the data-structures. See CAV 2007 for the therory involved.

    val hpara_match_with_impl : IR.Tenv.t -> bool -> Predicates.hpara -> @@ -43,4 +43,4 @@ IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> - Predicates.hpara_dll * IR.Exp.t list

    hpara_dll_create takes a correspondence, and a sigma, a root, a blink and a flink for the first part of this correspondence. Then, it creates a hpara_dll and discovers a list of shared expressions that are passed as arguments to hpara. Both of them are returned as a result.

    \ No newline at end of file + Predicates.hpara_dll * IR.Exp.t list

    hpara_dll_create takes a correspondence, and a sigma, a root, a blink and a flink for the first part of this correspondence. Then, it creates a hpara_dll and discovers a list of shared expressions that are passed as arguments to hpara. Both of them are returned as a result.

    diff --git a/website/static/odoc/next/infer/Biabduction/Paths/Path/index.html b/website/static/odoc/next/infer/Biabduction/Paths/Path/index.html index e220d7ac4e2..f0bd8f4f292 100644 --- a/website/static/odoc/next/infer/Biabduction/Paths/Path/index.html +++ b/website/static/odoc/next/infer/Biabduction/Paths/Path/index.html @@ -1,5 +1,5 @@ -Path (infer.Biabduction.Paths.Path)

    Module Paths.Path

    type t

    type for paths

    type session = int
    val add_call : bool -> t -> IR.Procname.t -> t -> t

    add a call with its sub-path, the boolean indicates whether the subtrace for the procedure should be included

    val add_skipped_call : +Path (infer.Biabduction.Paths.Path)

    Module Paths.Path

    type t

    type for paths

    type session = int
    val add_call : bool -> t -> IR.Procname.t -> t -> t

    add a call with its sub-path, the boolean indicates whether the subtrace for the procedure should be included

    val add_skipped_call : t -> IR.Procname.t -> string -> @@ -12,4 +12,4 @@ (int -> t -> int -> IR.Typ.Name.t option -> unit) -> IR.PredSymb.path_pos option -> t -> - unit

    iterate over the shortest sequence belonging to the path, restricting to those containing the given position if given. Do not iterate past the last occurrence of the given position. f level path session exn_opt is passed the current nesting level and path and previous session and possible exception exn_opt

    val join : t -> t -> t

    join two paths

    val start : IR.Procdesc.Node.t -> t

    create a new path with given start node

    \ No newline at end of file + unit

    iterate over the shortest sequence belonging to the path, restricting to those containing the given position if given. Do not iterate past the last occurrence of the given position. f level path session exn_opt is passed the current nesting level and path and previous session and possible exception exn_opt

    val join : t -> t -> t

    join two paths

    val start : IR.Procdesc.Node.t -> t

    create a new path with given start node

    diff --git a/website/static/odoc/next/infer/Biabduction/Paths/PathSet/index.html b/website/static/odoc/next/infer/Biabduction/Paths/PathSet/index.html index 33374c53ad0..e6343a994c1 100644 --- a/website/static/odoc/next/infer/Biabduction/Paths/PathSet/index.html +++ b/website/static/odoc/next/infer/Biabduction/Paths/PathSet/index.html @@ -1,2 +1,2 @@ -PathSet (infer.Biabduction.Paths.PathSet)

    Module Paths.PathSet

    Set of (prop,path) pairs, where the identity is given by prop

    type t
    val add_renamed_prop : Prop.normal Prop.t -> Path.t -> t -> t

    It's the caller's resposibility to ensure that Prop.prop_rename_primed_footprint_vars was called on the prop

    val diff : t -> t -> t

    difference between two pathsets

    val empty : t

    empty pathset

    val elements : t -> (Prop.normal Prop.t * Path.t) list

    list of elements in a pathset

    val equal : t -> t -> bool

    equality for pathsets

    val fold : (Prop.normal Prop.t -> Path.t -> 'a -> 'a) -> t -> 'a -> 'a

    fold over a pathset

    val from_renamed_list : (Prop.normal Prop.t * Path.t) list -> t

    It's the caller's resposibility to ensure that Prop.prop_rename_primed_footprint_vars was called on the list

    val is_empty : t -> bool

    check whether the pathset is empty

    val iter : (Prop.normal Prop.t -> Path.t -> unit) -> t -> unit

    iterate over a pathset

    val map : (Prop.normal Prop.t -> Prop.normal Prop.t) -> t -> t

    map over the prop component of a pathset.

    val map_option : (Prop.normal Prop.t -> Prop.normal Prop.t option) -> t -> t

    map over the prop component of a pathset using a partial function; elements mapped to None are discarded

    val partition : (Prop.normal Prop.t -> bool) -> t -> t * t

    partition a pathset on the prop component

    val size : t -> int

    number of elements in the pathset

    val to_proplist : t -> Prop.normal Prop.t list

    convert to a list of props

    val to_propset : IR.Tenv.t -> t -> Propset.t

    convert to a set of props

    val union : t -> t -> t

    union of two pathsets

    \ No newline at end of file +PathSet (infer.Biabduction.Paths.PathSet)

    Module Paths.PathSet

    Set of (prop,path) pairs, where the identity is given by prop

    type t
    val add_renamed_prop : Prop.normal Prop.t -> Path.t -> t -> t

    It's the caller's resposibility to ensure that Prop.prop_rename_primed_footprint_vars was called on the prop

    val diff : t -> t -> t

    difference between two pathsets

    val empty : t

    empty pathset

    val elements : t -> (Prop.normal Prop.t * Path.t) list

    list of elements in a pathset

    val equal : t -> t -> bool

    equality for pathsets

    val fold : (Prop.normal Prop.t -> Path.t -> 'a -> 'a) -> t -> 'a -> 'a

    fold over a pathset

    val from_renamed_list : (Prop.normal Prop.t * Path.t) list -> t

    It's the caller's resposibility to ensure that Prop.prop_rename_primed_footprint_vars was called on the list

    val is_empty : t -> bool

    check whether the pathset is empty

    val iter : (Prop.normal Prop.t -> Path.t -> unit) -> t -> unit

    iterate over a pathset

    val map : (Prop.normal Prop.t -> Prop.normal Prop.t) -> t -> t

    map over the prop component of a pathset.

    val map_option : (Prop.normal Prop.t -> Prop.normal Prop.t option) -> t -> t

    map over the prop component of a pathset using a partial function; elements mapped to None are discarded

    val partition : (Prop.normal Prop.t -> bool) -> t -> t * t

    partition a pathset on the prop component

    val size : t -> int

    number of elements in the pathset

    val to_proplist : t -> Prop.normal Prop.t list

    convert to a list of props

    val to_propset : IR.Tenv.t -> t -> Propset.t

    convert to a set of props

    val union : t -> t -> t

    union of two pathsets

    diff --git a/website/static/odoc/next/infer/Biabduction/Paths/index.html b/website/static/odoc/next/infer/Biabduction/Paths/index.html index 5bcbb9105bc..904a8a86d18 100644 --- a/website/static/odoc/next/infer/Biabduction/Paths/index.html +++ b/website/static/odoc/next/infer/Biabduction/Paths/index.html @@ -1,2 +1,2 @@ -Paths (infer.Biabduction.Paths)

    Module Biabduction.Paths

    Execution Paths

    module Path : sig ... end
    module PathSet : sig ... end

    Set of (prop,path) pairs, where the identity is given by prop

    \ No newline at end of file +Paths (infer.Biabduction.Paths)

    Module Biabduction.Paths

    Execution Paths

    module Path : sig ... end
    module PathSet : sig ... end

    Set of (prop,path) pairs, where the identity is given by prop

    diff --git a/website/static/odoc/next/infer/Biabduction/Predicates/Env/index.html b/website/static/odoc/next/infer/Biabduction/Predicates/Env/index.html index 69563019e56..b60d98abd5c 100644 --- a/website/static/odoc/next/infer/Biabduction/Predicates/Env/index.html +++ b/website/static/odoc/next/infer/Biabduction/Predicates/Env/index.html @@ -1,2 +1,2 @@ -Env (infer.Biabduction.Predicates.Env)

    Module Predicates.Env

    record the occurrences of predicates as parameters of (doubly -)linked lists and Epara. Provides unique numbering for predicates and an iterator.

    type t

    predicate environment

    val mk_empty : unit -> t

    create an empty predicate environment

    val is_empty : t -> bool

    return true if the environment is empty

    val iter : t -> (int -> hpara -> unit) -> (int -> hpara_dll -> unit) -> unit

    iter env f f_dll iterates f and f_dll on all the hpara and hpara_dll, passing the unique id to the functions. The iterator can only be used once.

    val process_hpred : t -> hpred -> unit

    Process one hpred, updating the predicate environment

    \ No newline at end of file +Env (infer.Biabduction.Predicates.Env)

    Module Predicates.Env

    record the occurrences of predicates as parameters of (doubly -)linked lists and Epara. Provides unique numbering for predicates and an iterator.

    type t

    predicate environment

    val mk_empty : unit -> t

    create an empty predicate environment

    val is_empty : t -> bool

    return true if the environment is empty

    val iter : t -> (int -> hpara -> unit) -> (int -> hpara_dll -> unit) -> unit

    iter env f f_dll iterates f and f_dll on all the hpara and hpara_dll, passing the unique id to the functions. The iterator can only be used once.

    val process_hpred : t -> hpred -> unit

    Process one hpred, updating the predicate environment

    diff --git a/website/static/odoc/next/infer/Biabduction/Predicates/index.html b/website/static/odoc/next/infer/Biabduction/Predicates/index.html index 540c1359ed8..70356189e98 100644 --- a/website/static/odoc/next/infer/Biabduction/Predicates/index.html +++ b/website/static/odoc/next/infer/Biabduction/Predicates/index.html @@ -1,9 +1,9 @@ -Predicates (infer.Biabduction.Predicates)

    Module Biabduction.Predicates

    module F = Stdlib.Format
    type offset =
    1. | Off_fld of IR.Fieldname.t * IR.Typ.t
    2. | Off_index of IR.Exp.t

    Offset for an lvalue.

    Components of Propositions

    type atom =
    1. | Aeq of IR.Exp.t * IR.Exp.t
      (*

      equality

      *)
    2. | Aneq of IR.Exp.t * IR.Exp.t
      (*

      disequality

      *)
    3. | Apred of IR.PredSymb.t * IR.Exp.t list
      (*

      predicate symbol applied to exps

      *)
    4. | Anpred of IR.PredSymb.t * IR.Exp.t list
      (*

      negated predicate symbol applied to exps

      *)

    an atom is a pure atomic formula

    val compare_atom : atom -> atom -> int
    val equal_atom : atom -> atom -> bool
    val atom_has_local_addr : atom -> bool
    type lseg_kind =
    1. | Lseg_NE
      (*

      nonempty (possibly circular) listseg

      *)
    2. | Lseg_PE
      (*

      possibly empty (possibly circular) listseg

      *)

    kind of lseg or dllseg predicates

    val compare_lseg_kind : lseg_kind -> lseg_kind -> int
    val equal_lseg_kind : lseg_kind -> lseg_kind -> bool
    type zero_flag = bool option

    The boolean is true when the pointer was dereferenced without testing for zero.

    type null_case_flag = bool

    True when the value was obtained by doing case analysis on null in a procedure call.

    type inst =
    1. | Iabstraction
    2. | Iactual_precondition
    3. | Ialloc
    4. | Iformal of zero_flag * null_case_flag
    5. | Iinitial
    6. | Ilookup
    7. | Inone
    8. | Inullify
    9. | Irearrange of zero_flag * null_case_flag * int * IR.PredSymb.path_pos
    10. | Itaint
    11. | Iupdate of zero_flag * null_case_flag * int * IR.PredSymb.path_pos
    12. | Ireturn_from_call of int

    instrumentation of heap values

    val compare_inst : inst -> inst -> int
    val equal_inst : inst -> inst -> bool
    val inst_actual_precondition : inst
    val inst_formal : inst
    val inst_initial : inst

    for formal parameters and heap values at the beginning of the function

    val inst_lookup : inst

    for initial values

    val inst_none : inst
    val inst_nullify : inst
    val inst_rearrange : bool -> IBase.Location.t -> IR.PredSymb.path_pos -> inst

    the boolean indicates whether the pointer is known nonzero

    val inst_set_null_case_flag : inst -> inst

    Set the null case flag of the inst.

    val inst_new_loc : IBase.Location.t -> inst -> inst

    update the location of the instrumentation

    val update_inst : inst -> inst -> inst

    Update inst_old to inst_new preserving the zero flag

    exception JoinFail
    val inst_partial_join : inst -> inst -> inst

    join of instrumentations, can raise JoinFail

    val inst_partial_meet : inst -> inst -> inst

    meet of instrumentations

    type 'inst strexp0 =
    1. | Eexp of IR.Exp.t * 'inst
      (*

      Base case: expression with instrumentation

      *)
    2. | Estruct of (IR.Fieldname.t * 'inst strexp0) list * 'inst
      (*

      C structure

      *)
    3. | Earray of IR.Exp.t * (IR.Exp.t * 'inst strexp0) list * 'inst
      (*

      Array of given length There are two conditions imposed / used in the array case. First, if some index and value pair appears inside an array in a strexp, then the index is less than the length of the array. For instance, x |->[10 | e1: v1] implies that e1 <= 9. Second, if two indices appear in an array, they should be different. For instance, x |->[10 | e1: v1, e2: v2] implies that e1 != e2.

      *)

    structured expressions represent a value of structured type, such as an array or a struct.

    val compare_strexp0 : +Predicates (infer.Biabduction.Predicates)

    Module Biabduction.Predicates

    module F = Stdlib.Format
    type offset =
    1. | Off_fld of IR.Fieldname.t * IR.Typ.t
    2. | Off_index of IR.Exp.t

    Offset for an lvalue.

    Components of Propositions

    type atom =
    1. | Aeq of IR.Exp.t * IR.Exp.t
      (*

      equality

      *)
    2. | Aneq of IR.Exp.t * IR.Exp.t
      (*

      disequality

      *)
    3. | Apred of IR.PredSymb.t * IR.Exp.t list
      (*

      predicate symbol applied to exps

      *)
    4. | Anpred of IR.PredSymb.t * IR.Exp.t list
      (*

      negated predicate symbol applied to exps

      *)

    an atom is a pure atomic formula

    val compare_atom : atom -> atom -> int
    val equal_atom : atom -> atom -> bool
    val atom_has_local_addr : atom -> bool
    type lseg_kind =
    1. | Lseg_NE
      (*

      nonempty (possibly circular) listseg

      *)
    2. | Lseg_PE
      (*

      possibly empty (possibly circular) listseg

      *)

    kind of lseg or dllseg predicates

    val compare_lseg_kind : lseg_kind -> lseg_kind -> int
    val equal_lseg_kind : lseg_kind -> lseg_kind -> bool
    type zero_flag = bool option

    The boolean is true when the pointer was dereferenced without testing for zero.

    type null_case_flag = bool

    True when the value was obtained by doing case analysis on null in a procedure call.

    type inst =
    1. | Iabstraction
    2. | Iactual_precondition
    3. | Ialloc
    4. | Iformal of zero_flag * null_case_flag
    5. | Iinitial
    6. | Ilookup
    7. | Inone
    8. | Inullify
    9. | Irearrange of zero_flag * null_case_flag * int * IR.PredSymb.path_pos
    10. | Itaint
    11. | Iupdate of zero_flag * null_case_flag * int * IR.PredSymb.path_pos
    12. | Ireturn_from_call of int

    instrumentation of heap values

    val compare_inst : inst -> inst -> int
    val equal_inst : inst -> inst -> bool
    val inst_actual_precondition : inst
    val inst_formal : inst
    val inst_initial : inst

    for formal parameters and heap values at the beginning of the function

    val inst_lookup : inst

    for initial values

    val inst_none : inst
    val inst_nullify : inst
    val inst_rearrange : bool -> IBase.Location.t -> IR.PredSymb.path_pos -> inst

    the boolean indicates whether the pointer is known nonzero

    val inst_set_null_case_flag : inst -> inst

    Set the null case flag of the inst.

    val inst_new_loc : IBase.Location.t -> inst -> inst

    update the location of the instrumentation

    val update_inst : inst -> inst -> inst

    Update inst_old to inst_new preserving the zero flag

    exception JoinFail
    val inst_partial_join : inst -> inst -> inst

    join of instrumentations, can raise JoinFail

    val inst_partial_meet : inst -> inst -> inst

    meet of instrumentations

    type 'inst strexp0 =
    1. | Eexp of IR.Exp.t * 'inst
      (*

      Base case: expression with instrumentation

      *)
    2. | Estruct of (IR.Fieldname.t * 'inst strexp0) list * 'inst
      (*

      C structure

      *)
    3. | Earray of IR.Exp.t * (IR.Exp.t * 'inst strexp0) list * 'inst
      (*

      Array of given length There are two conditions imposed / used in the array case. First, if some index and value pair appears inside an array in a strexp, then the index is less than the length of the array. For instance, x |->[10 | e1: v1] implies that e1 <= 9. Second, if two indices appear in an array, they should be different. For instance, x |->[10 | e1: v1, e2: v2] implies that e1 != e2.

      *)

    structured expressions represent a value of structured type, such as an array or a struct.

    val compare_strexp0 : ('inst -> 'inst -> int) -> 'inst strexp0 -> 'inst strexp0 -> - int
    type strexp = inst strexp0
    val compare_strexp : ?inst:bool -> strexp -> strexp -> int

    Comparison function for strexp. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    val equal_strexp : ?inst:bool -> strexp -> strexp -> bool

    Equality function for strexp. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    type 'inst hpred0 =
    1. | Hpointsto of IR.Exp.t * 'inst strexp0 * IR.Exp.t
      (*

      represents exp|->strexp:typexp where typexp is an expression representing a type, e.h. sizeof(t).

      *)
    2. | Hlseg of lseg_kind * 'inst hpara0 * IR.Exp.t * IR.Exp.t * IR.Exp.t list
      (*

      higher - order predicate for singly - linked lists. Should ensure that exp1!= exp2 implies that exp1 is allocated. This assumption is used in the rearrangement. The last exp list parameter is used to denote the shared links by all the nodes in the list.

      *)
    3. | Hdllseg of lseg_kind + int
    type strexp = inst strexp0
    val compare_strexp : ?inst:bool -> strexp -> strexp -> int

    Comparison function for strexp. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    val equal_strexp : ?inst:bool -> strexp -> strexp -> bool

    Equality function for strexp. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    type 'inst hpred0 =
    1. | Hpointsto of IR.Exp.t * 'inst strexp0 * IR.Exp.t
      (*

      represents exp|->strexp:typexp where typexp is an expression representing a type, e.h. sizeof(t).

      *)
    2. | Hlseg of lseg_kind * 'inst hpara0 * IR.Exp.t * IR.Exp.t * IR.Exp.t list
      (*

      higher - order predicate for singly - linked lists. Should ensure that exp1!= exp2 implies that exp1 is allocated. This assumption is used in the rearrangement. The last exp list parameter is used to denote the shared links by all the nodes in the list.

      *)
    3. | Hdllseg of lseg_kind * 'inst hpara_dll0 * IR.Exp.t * IR.Exp.t @@ -21,7 +21,7 @@ ('inst -> 'inst -> int) -> 'inst hpara_dll0 -> 'inst hpara_dll0 -> - int
    type hpred = inst hpred0
    type hpara = inst hpara0
    type hpara_dll = inst hpara_dll0
    val compare_hpred : ?inst:bool -> hpred -> hpred -> int

    Comparison function for hpred. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    val equal_hpred : ?inst:bool -> hpred -> hpred -> bool

    Equality function for hpred. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    module HpredSet : IStdlib.IStd.Caml.Set.S with type elt = hpred

    Sets of heap predicates

    Compaction

    type sharing_env
    val create_sharing_env : unit -> sharing_env

    Create a sharing env to store canonical representations

    val hpred_compact : sharing_env -> hpred -> hpred

    Return a compact representation of the exp

    val is_objc_object : hpred -> bool

    Comparision And Inspection Functions

    val pp_offset : IStdlib.Pp.env -> F.formatter -> offset -> unit
    val d_offset_list : offset list -> unit

    Dump a list of offsets

    val pp_atom : IStdlib.Pp.env -> F.formatter -> atom -> unit

    Pretty print an atom.

    val d_atom : atom -> unit

    Dump an atom.

    val pp_inst : F.formatter -> inst -> unit

    pretty-print an inst

    val pp_sexp : IStdlib.Pp.env -> F.formatter -> strexp -> unit

    Pretty print a strexp.

    val d_sexp : strexp -> unit

    Dump a strexp.

    val pp_hpred : IStdlib.Pp.env -> F.formatter -> hpred -> unit

    Pretty print a hpred.

    val d_hpred : hpred -> unit

    Dump a hpred.

    val pp_hpara : IStdlib.Pp.env -> F.formatter -> hpara -> unit

    Pretty print a hpara.

    val pp_hpara_dll : IStdlib.Pp.env -> F.formatter -> hpara_dll -> unit

    Pretty print a hpara_dll.

    module Env : sig ... end

    record the occurrences of predicates as parameters of (doubly -)linked lists and Epara. Provides unique numbering for predicates and an iterator.

    val pp_hpred_env : + int
    type hpred = inst hpred0
    type hpara = inst hpara0
    type hpara_dll = inst hpara_dll0
    val compare_hpred : ?inst:bool -> hpred -> hpred -> int

    Comparison function for hpred. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    val equal_hpred : ?inst:bool -> hpred -> hpred -> bool

    Equality function for hpred. The inst:: parameter specifies whether instumentations should also be considered (false by default).

    module HpredSet : IStdlib.IStd.Caml.Set.S with type elt = hpred

    Sets of heap predicates

    Compaction

    type sharing_env
    val create_sharing_env : unit -> sharing_env

    Create a sharing env to store canonical representations

    val hpred_compact : sharing_env -> hpred -> hpred

    Return a compact representation of the exp

    val is_objc_object : hpred -> bool

    Comparision And Inspection Functions

    val pp_offset : IStdlib.Pp.env -> F.formatter -> offset -> unit
    val d_offset_list : offset list -> unit

    Dump a list of offsets

    val pp_atom : IStdlib.Pp.env -> F.formatter -> atom -> unit

    Pretty print an atom.

    val d_atom : atom -> unit

    Dump an atom.

    val pp_inst : F.formatter -> inst -> unit

    pretty-print an inst

    val pp_sexp : IStdlib.Pp.env -> F.formatter -> strexp -> unit

    Pretty print a strexp.

    val d_sexp : strexp -> unit

    Dump a strexp.

    val pp_hpred : IStdlib.Pp.env -> F.formatter -> hpred -> unit

    Pretty print a hpred.

    val d_hpred : hpred -> unit

    Dump a hpred.

    val pp_hpara : IStdlib.Pp.env -> F.formatter -> hpara -> unit

    Pretty print a hpara.

    val pp_hpara_dll : IStdlib.Pp.env -> F.formatter -> hpara_dll -> unit

    Pretty print a hpara_dll.

    module Env : sig ... end

    record the occurrences of predicates as parameters of (doubly -)linked lists and Epara. Provides unique numbering for predicates and an iterator.

    val pp_hpred_env : IStdlib.Pp.env -> Env.t option -> F.formatter -> @@ -41,7 +41,7 @@ hpred -> (unit, IR.Ident.t) IStdlib.IStd.Sequence.Generator.t
    val hpara_shallow_free_vars : hpara -> IR.Ident.t IStdlib.IStd.Sequence.t
    val hpara_dll_shallow_free_vars : hpara_dll -> - IR.Ident.t IStdlib.IStd.Sequence.t

    Variables in hpara_dll, excluding bound vars in the body

    Substitution

    type subst = private (IR.Ident.t * IR.Exp.t) list
    val compare_subst : subst -> subst -> int
    val equal_subst : subst -> subst -> bool

    Equality for substitutions.

    val subst_of_list : (IR.Ident.t * IR.Exp.t) list -> subst

    Create a substitution from a list of pairs. For all (id1, e1), (id2, e2) in the input list, if id1 = id2, then e1 = e2.

    val subst_of_list_duplicates : (IR.Ident.t * IR.Exp.t) list -> subst

    like subst_of_list, but allow duplicate ids and only keep the first occurrence

    val sub_to_list : subst -> (IR.Ident.t * IR.Exp.t) list

    Convert a subst to a list of pairs.

    val sub_empty : subst

    The empty substitution.

    val is_sub_empty : subst -> bool
    val sub_join : subst -> subst -> subst

    Compute the common id-exp part of two inputs subst1 and subst2. The first component of the output is this common part. The second and third components are the remainder of subst1 and subst2, respectively.

    val sub_symmetric_difference : subst -> subst -> subst * subst * subst

    Compute the common id-exp part of two inputs subst1 and subst2. The first component of the output is this common part. The second and third components are the remainder of subst1 and subst2, respectively.

    val sub_find : (IR.Ident.t -> bool) -> subst -> IR.Exp.t

    sub_find filter sub returns the expression associated to the first identifier that satisfies filter. Raise Not_found_s/Caml.Not_found if there isn't one.

    val sub_filter : (IR.Ident.t -> bool) -> subst -> subst

    sub_filter filter sub restricts the domain of sub to the identifiers satisfying filter.

    val sub_filter_pair : subst -> f:((IR.Ident.t * IR.Exp.t) -> bool) -> subst

    sub_filter_exp filter sub restricts the domain of sub to the identifiers satisfying filter(id, sub(id)).

    val sub_range_partition : (IR.Exp.t -> bool) -> subst -> subst * subst

    sub_range_partition filter sub partitions sub according to whether range expressions satisfy filter.

    val sub_domain_partition : (IR.Ident.t -> bool) -> subst -> subst * subst

    sub_domain_partition filter sub partitions sub according to whether domain identifiers satisfy filter.

    val sub_domain : subst -> IR.Ident.t list

    Return the list of identifiers in the domain of the substitution.

    val sub_range : subst -> IR.Exp.t list

    Return the list of expressions in the range of the substitution.

    val sub_range_map : (IR.Exp.t -> IR.Exp.t) -> subst -> subst

    sub_range_map f sub applies f to the expressions in the range of sub.

    val sub_map : + IR.Ident.t IStdlib.IStd.Sequence.t

    Variables in hpara_dll, excluding bound vars in the body

    Substitution

    type subst = private (IR.Ident.t * IR.Exp.t) list
    val compare_subst : subst -> subst -> int
    val equal_subst : subst -> subst -> bool

    Equality for substitutions.

    val subst_of_list : (IR.Ident.t * IR.Exp.t) list -> subst

    Create a substitution from a list of pairs. For all (id1, e1), (id2, e2) in the input list, if id1 = id2, then e1 = e2.

    val subst_of_list_duplicates : (IR.Ident.t * IR.Exp.t) list -> subst

    like subst_of_list, but allow duplicate ids and only keep the first occurrence

    val sub_to_list : subst -> (IR.Ident.t * IR.Exp.t) list

    Convert a subst to a list of pairs.

    val sub_empty : subst

    The empty substitution.

    val is_sub_empty : subst -> bool
    val sub_join : subst -> subst -> subst

    Compute the common id-exp part of two inputs subst1 and subst2. The first component of the output is this common part. The second and third components are the remainder of subst1 and subst2, respectively.

    val sub_symmetric_difference : subst -> subst -> subst * subst * subst

    Compute the common id-exp part of two inputs subst1 and subst2. The first component of the output is this common part. The second and third components are the remainder of subst1 and subst2, respectively.

    val sub_find : (IR.Ident.t -> bool) -> subst -> IR.Exp.t

    sub_find filter sub returns the expression associated to the first identifier that satisfies filter. Raise Not_found_s/Caml.Not_found if there isn't one.

    val sub_filter : (IR.Ident.t -> bool) -> subst -> subst

    sub_filter filter sub restricts the domain of sub to the identifiers satisfying filter.

    val sub_filter_pair : subst -> f:((IR.Ident.t * IR.Exp.t) -> bool) -> subst

    sub_filter_exp filter sub restricts the domain of sub to the identifiers satisfying filter(id, sub(id)).

    val sub_range_partition : (IR.Exp.t -> bool) -> subst -> subst * subst

    sub_range_partition filter sub partitions sub according to whether range expressions satisfy filter.

    val sub_domain_partition : (IR.Ident.t -> bool) -> subst -> subst * subst

    sub_domain_partition filter sub partitions sub according to whether domain identifiers satisfy filter.

    val sub_domain : subst -> IR.Ident.t list

    Return the list of identifiers in the domain of the substitution.

    val sub_range : subst -> IR.Exp.t list

    Return the list of expressions in the range of the substitution.

    val sub_range_map : (IR.Exp.t -> IR.Exp.t) -> subst -> subst

    sub_range_map f sub applies f to the expressions in the range of sub.

    val sub_map : (IR.Ident.t -> IR.Ident.t) -> (IR.Exp.t -> IR.Exp.t) -> subst -> @@ -58,4 +58,4 @@ IR.Exp.t -> IR.Exp.t -> IR.Exp.t list -> - IR.Ident.t list * hpred list

    hpara_dll_instantiate para cell blink flink elist instantiates para with cell, blink, flink, and elist. If para = lambda (x, y, z, xs). exists zs. b, then the result of the instantiation is b[cell / x, blink / y, flink / z, elist / xs, _zs'/ zs] for some fresh _zs'.

    val custom_error : IR.Pvar.t
    \ No newline at end of file + IR.Ident.t list * hpred list

    hpara_dll_instantiate para cell blink flink elist instantiates para with cell, blink, flink, and elist. If para = lambda (x, y, z, xs). exists zs. b, then the result of the instantiation is b[cell / x, blink / y, flink / z, elist / xs, _zs'/ zs] for some fresh _zs'.

    val custom_error : IR.Pvar.t
    diff --git a/website/static/odoc/next/infer/Biabduction/Prop/CategorizePreconditions/index.html b/website/static/odoc/next/infer/Biabduction/Prop/CategorizePreconditions/index.html index 372dc4d25eb..616c7967c8c 100644 --- a/website/static/odoc/next/infer/Biabduction/Prop/CategorizePreconditions/index.html +++ b/website/static/odoc/next/infer/Biabduction/Prop/CategorizePreconditions/index.html @@ -1,2 +1,2 @@ -CategorizePreconditions (infer.Biabduction.Prop.CategorizePreconditions)

    Module Prop.CategorizePreconditions

    type pre_category =
    1. | NoPres
    2. | Empty
    3. | OnlyAllocation
    4. | DataConstraints
    val categorize : 'a t list -> pre_category

    categorize a list of preconditions

    \ No newline at end of file +CategorizePreconditions (infer.Biabduction.Prop.CategorizePreconditions)

    Module Prop.CategorizePreconditions

    type pre_category =
    1. | NoPres
    2. | Empty
    3. | OnlyAllocation
    4. | DataConstraints
    val categorize : 'a t list -> pre_category

    categorize a list of preconditions

    diff --git a/website/static/odoc/next/infer/Biabduction/Prop/Metrics/index.html b/website/static/odoc/next/infer/Biabduction/Prop/Metrics/index.html index 93555e2ea3a..840d5eb8a79 100644 --- a/website/static/odoc/next/infer/Biabduction/Prop/Metrics/index.html +++ b/website/static/odoc/next/infer/Biabduction/Prop/Metrics/index.html @@ -1,2 +1,2 @@ -Metrics (infer.Biabduction.Prop.Metrics)

    Module Prop.Metrics

    val prop_size : 'a t -> int

    Compute a size value for the prop, which indicates its complexity

    \ No newline at end of file +Metrics (infer.Biabduction.Prop.Metrics)

    Module Prop.Metrics

    val prop_size : 'a t -> int

    Compute a size value for the prop, which indicates its complexity

    diff --git a/website/static/odoc/next/infer/Biabduction/Prop/index.html b/website/static/odoc/next/infer/Biabduction/Prop/index.html index 992cdb96e03..8ce58aacda9 100644 --- a/website/static/odoc/next/infer/Biabduction/Prop/index.html +++ b/website/static/odoc/next/infer/Biabduction/Prop/index.html @@ -1,7 +1,7 @@ -Prop (infer.Biabduction.Prop)

    Module Biabduction.Prop

    Functions for Propositions (i.e., Symbolic Heaps)

    type normal

    kind for normal props, i.e. normalized

    type exposed

    kind for exposed props

    type sorted

    kind for sorted props

    Proposition.

    type pi = Predicates.atom list
    type sigma = Predicates.hpred list
    type 'a t = private {
    1. sigma : sigma;
      (*

      spatial part

      *)
    2. sub : Predicates.subst;
      (*

      substitution

      *)
    3. pi : pi;
      (*

      pure part

      *)
    4. sigma_fp : sigma;
      (*

      abduced spatial part

      *)
    5. pi_fp : pi;
      (*

      abduced pure part

      *)
    }

    the kind 'a should range over normal and exposed

    include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
    val compare : +Prop (infer.Biabduction.Prop)

    Module Biabduction.Prop

    Functions for Propositions (i.e., Symbolic Heaps)

    type normal

    kind for normal props, i.e. normalized

    type exposed

    kind for exposed props

    type sorted

    kind for sorted props

    Proposition.

    type pi = Predicates.atom list
    type sigma = Predicates.hpred list
    type 'a t = private {
    1. sigma : sigma;
      (*

      spatial part

      *)
    2. sub : Predicates.subst;
      (*

      substitution

      *)
    3. pi : pi;
      (*

      pure part

      *)
    4. sigma_fp : sigma;
      (*

      abduced spatial part

      *)
    5. pi_fp : pi;
      (*

      abduced pure part

      *)
    }

    the kind 'a should range over normal and exposed

    include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
    val compare : 'a Base__Ppx_compare_lib.compare -> - 'a t Base__Ppx_compare_lib.compare
    type struct_init_mode =
    1. | No_init
    2. | Fld_init

    type to describe different strategies for initializing fields of a structure. No_init does not initialize any fields of the struct. Fld_init initializes the fields of the struct with fresh variables (C) or default values (Java).

    Basic Functions for propositions

    val has_footprint : 'a t -> bool

    sigma_fp is nonempty or pi_fp is nonempty

    val compare_prop : 'a t -> 'a t -> int

    Compare propositions

    val equal_sigma : sigma -> sigma -> bool

    Check the equality of two sigma's

    val d_sub : Predicates.subst -> unit

    Dump a substitution.

    val pp_pi : IStdlib.Pp.env -> Stdlib.Format.formatter -> pi -> unit

    Pretty print a pi.

    val d_pi : pi -> unit

    Dump a pi.

    val d_sigma : sigma -> unit

    Dump a sigma.

    val d_pi_sigma : pi -> sigma -> unit

    Dump a pi and a sigma

    val sigma_get_stack_nonstack : bool -> sigma -> sigma * sigma

    Split sigma into stack and nonstack parts. The boolean indicates whether the stack should only include local variales.

    val prop_update_obj_sub : IStdlib.Pp.env -> 'a t -> IStdlib.Pp.env

    Update the object substitution given the stack variables in the prop

    val pp_prop : IStdlib.Pp.env -> Stdlib.Format.formatter -> 'a t -> unit

    Pretty print a proposition.

    val prop_pred_env : 'a t -> Predicates.Env.t

    Create a predicate environment for a prop

    val d_prop : 'a t -> unit

    Dump a proposition.

    val d_proplist_with_typ : 'a t list -> unit
    val max_stamp : ?f:(IR.Ident.t -> bool) -> normal t -> int
    val pi_free_vars : pi -> IR.Ident.t IStdlib.IStd.Sequence.t
    val sigma_free_vars : sigma -> IR.Ident.t IStdlib.IStd.Sequence.t
    val free_vars : normal t -> IR.Ident.t IStdlib.IStd.Sequence.t
    val gen_free_vars : + 'a t Base__Ppx_compare_lib.compare
    type struct_init_mode =
    1. | No_init
    2. | Fld_init

    type to describe different strategies for initializing fields of a structure. No_init does not initialize any fields of the struct. Fld_init initializes the fields of the struct with fresh variables (C) or default values (Java).

    Basic Functions for propositions

    val has_footprint : 'a t -> bool

    sigma_fp is nonempty or pi_fp is nonempty

    val compare_prop : 'a t -> 'a t -> int

    Compare propositions

    val equal_sigma : sigma -> sigma -> bool

    Check the equality of two sigma's

    val d_sub : Predicates.subst -> unit

    Dump a substitution.

    val pp_pi : IStdlib.Pp.env -> Stdlib.Format.formatter -> pi -> unit

    Pretty print a pi.

    val d_pi : pi -> unit

    Dump a pi.

    val d_sigma : sigma -> unit

    Dump a sigma.

    val d_pi_sigma : pi -> sigma -> unit

    Dump a pi and a sigma

    val sigma_get_stack_nonstack : bool -> sigma -> sigma * sigma

    Split sigma into stack and nonstack parts. The boolean indicates whether the stack should only include local variales.

    val prop_update_obj_sub : IStdlib.Pp.env -> 'a t -> IStdlib.Pp.env

    Update the object substitution given the stack variables in the prop

    val pp_prop : IStdlib.Pp.env -> Stdlib.Format.formatter -> 'a t -> unit

    Pretty print a proposition.

    val prop_pred_env : 'a t -> Predicates.Env.t

    Create a predicate environment for a prop

    val d_prop : 'a t -> unit

    Dump a proposition.

    val d_proplist_with_typ : 'a t list -> unit
    val max_stamp : ?f:(IR.Ident.t -> bool) -> normal t -> int
    val pi_free_vars : pi -> IR.Ident.t IStdlib.IStd.Sequence.t
    val sigma_free_vars : sigma -> IR.Ident.t IStdlib.IStd.Sequence.t
    val free_vars : normal t -> IR.Ident.t IStdlib.IStd.Sequence.t
    val gen_free_vars : normal t -> (unit, IR.Ident.t) IStdlib.IStd.Sequence.Generator.t
    val sorted_gen_free_vars : sorted t -> @@ -13,7 +13,7 @@ (IR.Exp.t * IR.Exp.t) list -> Predicates.hpred list -> Predicates.hpred list

    Relaces all expressions in the hpred list using the first argument. Assume that the first parameter defines a partial function. No expressions inside hpara are replaced.

    Normalization

    val mk_inequality : IR.Tenv.t -> IR.Exp.t -> Predicates.atom

    Turn an inequality expression into an atom

    val atom_is_inequality : Predicates.atom -> bool

    Return true if the atom is an inequality

    val atom_exp_le_const : Predicates.atom -> (IR.Exp.t * IR.IntLit.t) option

    If the atom is e<=n return e,n

    val atom_const_lt_exp : Predicates.atom -> (IR.IntLit.t * IR.Exp.t) option

    If the atom is n<e return n,e

    val exp_normalize_prop : - ?destructive:bool -> + ?destructive:bool -> IR.Tenv.t -> 'a t -> IR.Exp.t -> @@ -64,32 +64,32 @@ IR.Exp.t list -> Predicates.hpred

    Construct a dllseg predicate

    val prop_emp : normal t

    Proposition true /\ emp.

    val prop_reset_inst : (Predicates.inst -> Predicates.inst) -> 'a t -> exposed t

    Reset every inst in the prop using the given map

    val prop_hpred_star : 'a t -> Predicates.hpred -> exposed t

    Conjoin a heap predicate by separating conjunction.

    val prop_sigma_star : 'a t -> Predicates.hpred list -> exposed t

    Conjoin a list of heap predicates by separating conjunction

    val prop_atom_and : IR.Tenv.t -> - ?footprint:bool -> + ?footprint:bool -> normal t -> Predicates.atom -> normal t

    Conjoin a pure atomic predicate by normal conjunction.

    val conjoin_eq : IR.Tenv.t -> - ?footprint:bool -> + ?footprint:bool -> IR.Exp.t -> IR.Exp.t -> normal t -> normal t

    Conjoin exp1=exp2 with a symbolic heap prop.

    val conjoin_neq : IR.Tenv.t -> - ?footprint:bool -> + ?footprint:bool -> IR.Exp.t -> IR.Exp.t -> normal t -> normal t

    Conjoin exp1!=exp2 with a symbolic heap prop.

    val get_pure : 'a t -> Predicates.atom list

    Return the pure part of prop.

    val prop_rename_primed_footprint_vars : IR.Tenv.t -> normal t -> normal t

    Canonicalize the names of primed variables.

    val extract_footprint : 'a t -> exposed t

    Extract the footprint and return it as a prop

    val extract_spec : normal t -> normal t * normal t

    Extract the (footprint,current) pair

    val prop_expand : IR.Tenv.t -> normal t -> normal t list

    Expand PE listsegs if the flag is on.

    Functions for existentially quantifying and unquantifying variables

    val exist_quantify : IR.Tenv.t -> - ?ids_queue:unit IR.Ident.HashQueue.t -> + ?ids_queue:unit IR.Ident.HashQueue.t -> IR.Ident.t list -> normal t -> normal t

    Existentially quantify the ids in prop.

    val prop_normal_vars_to_primed_vars : IR.Tenv.t -> normal t -> normal t

    convert the footprint vars to primed vars.

    val prop_primed_vars_to_normal_vars : IR.Tenv.t -> normal t -> normal t

    convert the primed vars to normal vars.

    val from_pi : pi -> exposed t

    Build an exposed prop from pi

    val from_sigma : sigma -> exposed t

    Build an exposed prop from sigma

    val set : - ?sub:Predicates.subst -> - ?pi:pi -> - ?sigma:sigma -> - ?pi_fp:pi -> - ?sigma_fp:sigma -> + ?sub:Predicates.subst -> + ?pi:pi -> + ?sigma:sigma -> + ?pi_fp:pi -> + ?sigma_fp:sigma -> 'a t -> exposed t

    Set individual fields of the prop.

    Prop iterators

    type 'a prop_iter

    Iterator over the sigma part. Each iterator has a current hpred.

    val prop_iter_create : normal t -> unit prop_iter option

    Create an iterator, return None if sigma part is empty.

    val prop_iter_to_prop : IR.Tenv.t -> 'a prop_iter -> normal t

    Return the prop associated to the iterator.

    val prop_iter_add_atom : bool -> @@ -98,7 +98,7 @@ 'a prop_iter

    Add an atom to the pi part of prop iter. The first parameter records whether it is done during footprint or during re - execution.

    val prop_iter_remove_curr_then_to_prop : IR.Tenv.t -> 'a prop_iter -> normal t

    Remove the current element from the iterator, and return the prop associated to the resulting iterator.

    val prop_iter_current : IR.Tenv.t -> 'a prop_iter -> Predicates.hpred * 'a

    Return the current hpred and state.

    val prop_iter_next : 'a prop_iter -> unit prop_iter option

    Return the next iterator.

    val prop_iter_update_current : 'a prop_iter -> Predicates.hpred -> 'a prop_iter

    Update the current element of the iterator.

    val prop_iter_prev_then_insert : 'a prop_iter -> Predicates.hpred -> - 'a prop_iter

    Insert before the current element of the iterator.

    val prop_iter_max_stamp : ?f:(IR.Ident.t -> bool) -> 'a prop_iter -> int

    Find the maximum stamp of a free variable of a certain kind.

    val prop_iter_get_footprint_sigma : 'a prop_iter -> Predicates.hpred list

    Extract the sigma part of the footprint

    val prop_iter_replace_footprint_sigma : + 'a prop_iter

    Insert before the current element of the iterator.

    val prop_iter_max_stamp : ?f:(IR.Ident.t -> bool) -> 'a prop_iter -> int

    Find the maximum stamp of a free variable of a certain kind.

    val prop_iter_get_footprint_sigma : 'a prop_iter -> Predicates.hpred list

    Extract the sigma part of the footprint

    val prop_iter_replace_footprint_sigma : 'a prop_iter -> Predicates.hpred list -> 'a prop_iter

    Replace the sigma part of the footprint

    val prop_iter_find : @@ -111,4 +111,4 @@ IR.Tenv.t -> IR.Ident.t -> 'a prop_iter -> - 'a prop_iter

    Rename ident in iter by a fresh primed identifier

    val prop_iter_gc_fields : unit prop_iter -> unit prop_iter

    Collect garbage fields.

    Internal modules

    module Metrics : sig ... end
    module CategorizePreconditions : sig ... end
    \ No newline at end of file + 'a prop_iter

    Rename ident in iter by a fresh primed identifier

    val prop_iter_gc_fields : unit prop_iter -> unit prop_iter

    Collect garbage fields.

    Internal modules

    module Metrics : sig ... end
    module CategorizePreconditions : sig ... end
    diff --git a/website/static/odoc/next/infer/Biabduction/PropUtil/index.html b/website/static/odoc/next/infer/Biabduction/PropUtil/index.html index fc59d327709..786b28f044e 100644 --- a/website/static/odoc/next/infer/Biabduction/PropUtil/index.html +++ b/website/static/odoc/next/infer/Biabduction/PropUtil/index.html @@ -1,5 +1,5 @@ -PropUtil (infer.Biabduction.PropUtil)

    Module Biabduction.PropUtil

    val remove_locals_ret : +PropUtil (infer.Biabduction.PropUtil)

    Module Biabduction.PropUtil

    val remove_locals_ret : IR.Tenv.t -> IR.Procdesc.t -> Prop.normal Prop.t -> @@ -7,4 +7,4 @@ IR.Tenv.t -> IR.Procdesc.t -> Prop.normal Prop.t -> - IR.Pvar.t list * Prop.normal Prop.t

    Deallocate the stack variables in pvars, and replace them by normal variables. Return the list of stack variables whose address was still present after deallocation.

    val remove_seed_vars : IR.Tenv.t -> 'a Prop.t -> Prop.normal Prop.t

    remove seed vars from a prop

    \ No newline at end of file + IR.Pvar.t list * Prop.normal Prop.t

    Deallocate the stack variables in pvars, and replace them by normal variables. Return the list of stack variables whose address was still present after deallocation.

    val remove_seed_vars : IR.Tenv.t -> 'a Prop.t -> Prop.normal Prop.t

    remove seed vars from a prop

    diff --git a/website/static/odoc/next/infer/Biabduction/Propgraph/index.html b/website/static/odoc/next/infer/Biabduction/Propgraph/index.html index 09b1535d587..eaa8a59f9d0 100644 --- a/website/static/odoc/next/infer/Biabduction/Propgraph/index.html +++ b/website/static/odoc/next/infer/Biabduction/Propgraph/index.html @@ -1,8 +1,8 @@ -Propgraph (infer.Biabduction.Propgraph)

    Module Biabduction.Propgraph

    Propositions seen as graphs

    type 'a t

    prop considered as a graph

    val from_prop : 'a Prop.t -> 'a t

    create a graph from a prop

    type 'a diff

    Graph annotated with the differences w.r.t. a previous graph

    val compute_diff : IStdlib.Pp.color -> 'a t -> 'a t -> 'a diff

    compute_diff default_color oldgraph newgraph returns the list of edges which are only in newgraph

    val diff_get_colormap : bool -> 'a diff -> IStdlib.Pp.colormap

    diff_get_colormap footprint_part diff returns the colormap of a computed diff, selecting the footprint colormap if footprint_part is true.

    val pp_proplist : +Propgraph (infer.Biabduction.Propgraph)

    Module Biabduction.Propgraph

    Propositions seen as graphs

    type 'a t

    prop considered as a graph

    val from_prop : 'a Prop.t -> 'a t

    create a graph from a prop

    type 'a diff

    Graph annotated with the differences w.r.t. a previous graph

    val compute_diff : IStdlib.Pp.color -> 'a t -> 'a t -> 'a diff

    compute_diff default_color oldgraph newgraph returns the list of edges which are only in newgraph

    val diff_get_colormap : bool -> 'a diff -> IStdlib.Pp.colormap

    diff_get_colormap footprint_part diff returns the colormap of a computed diff, selecting the footprint colormap if footprint_part is true.

    val pp_proplist : IStdlib.Pp.env -> string -> ('a Prop.t * bool) -> Stdlib.Format.formatter -> 'b Prop.t list -> - unit

    Print a list of propositions, prepending each one with the given string, If !Config.pring_using_diff is true, print the diff w.r.t. the given prop, extracting its local stack vars if the boolean is true.

    val d_proplist : 'a Prop.t -> 'b Prop.t list -> unit

    dump a prop list coming form the given initial prop

    \ No newline at end of file + unit

    Print a list of propositions, prepending each one with the given string, If !Config.pring_using_diff is true, print the diff w.r.t. the given prop, extracting its local stack vars if the boolean is true.

    val d_proplist : 'a Prop.t -> 'b Prop.t list -> unit

    dump a prop list coming form the given initial prop

    diff --git a/website/static/odoc/next/infer/Biabduction/Propset/index.html b/website/static/odoc/next/infer/Biabduction/Propset/index.html index 1d4f708d27e..9d8ae88dc19 100644 --- a/website/static/odoc/next/infer/Biabduction/Propset/index.html +++ b/website/static/odoc/next/infer/Biabduction/Propset/index.html @@ -1,6 +1,6 @@ -Propset (infer.Biabduction.Propset)

    Module Biabduction.Propset

    Functions for Sets of Propositions with and without sharing

    Sets of Propositions

    type t

    Sets of propositions. The invariant is maintaned that Prop.prop_rename_primed_footprint_vars is called on any prop added to the set.

    val compare : t -> t -> int

    Compare propsets

    val singleton : IR.Tenv.t -> Prop.normal Prop.t -> t

    Singleton set.

    val mem : Prop.normal Prop.t -> t -> bool

    Set membership.

    val union : t -> t -> t

    Set union.

    val inter : t -> t -> t

    Set intersection

    val add : IR.Tenv.t -> Prop.normal Prop.t -> t -> t

    Add prop to propset.

    val diff : t -> t -> t

    Set difference.

    val empty : t

    The empty set of propositions.

    val size : t -> int

    Size of the set

    val from_proplist : IR.Tenv.t -> Prop.normal Prop.t list -> t
    val to_proplist : t -> Prop.normal Prop.t list
    val map : IR.Tenv.t -> (Prop.normal Prop.t -> Prop.normal Prop.t) -> t -> t

    Apply function to all the elements of the propset.

    val map_option : +Propset (infer.Biabduction.Propset)

    Module Biabduction.Propset

    Functions for Sets of Propositions with and without sharing

    Sets of Propositions

    type t

    Sets of propositions. The invariant is maintaned that Prop.prop_rename_primed_footprint_vars is called on any prop added to the set.

    val compare : t -> t -> int

    Compare propsets

    val singleton : IR.Tenv.t -> Prop.normal Prop.t -> t

    Singleton set.

    val mem : Prop.normal Prop.t -> t -> bool

    Set membership.

    val union : t -> t -> t

    Set union.

    val inter : t -> t -> t

    Set intersection

    val add : IR.Tenv.t -> Prop.normal Prop.t -> t -> t

    Add prop to propset.

    val diff : t -> t -> t

    Set difference.

    val empty : t

    The empty set of propositions.

    val size : t -> int

    Size of the set

    val from_proplist : IR.Tenv.t -> Prop.normal Prop.t list -> t
    val to_proplist : t -> Prop.normal Prop.t list
    val map : IR.Tenv.t -> (Prop.normal Prop.t -> Prop.normal Prop.t) -> t -> t

    Apply function to all the elements of the propset.

    val map_option : IR.Tenv.t -> (Prop.normal Prop.t -> Prop.normal Prop.t option) -> t -> - t

    Apply function to all the elements of the propset, removing those where it returns None.

    val fold : ('a -> Prop.normal Prop.t -> 'a) -> 'a -> t -> 'a

    fold f pset a computes (f pN ... (f p2 (f p1 a))...), where p1 ... pN are the elements of pset, in increasing order.

    val iter : (Prop.normal Prop.t -> unit) -> t -> unit

    iter f pset computes (f p1;f p2;..;f pN) where p1 ... pN are the elements of pset, in increasing order.

    val partition : (Prop.normal Prop.t -> bool) -> t -> t * t
    val subseteq : t -> t -> bool
    val is_empty : t -> bool

    Set emptiness check.

    val filter : (Prop.normal Prop.t -> bool) -> t -> t

    Pretty print

    val d : Prop.normal Prop.t -> t -> unit

    dump a propset coming form the given initial prop

    \ No newline at end of file + t

    Apply function to all the elements of the propset, removing those where it returns None.

    val fold : ('a -> Prop.normal Prop.t -> 'a) -> 'a -> t -> 'a

    fold f pset a computes (f pN ... (f p2 (f p1 a))...), where p1 ... pN are the elements of pset, in increasing order.

    val iter : (Prop.normal Prop.t -> unit) -> t -> unit

    iter f pset computes (f p1;f p2;..;f pN) where p1 ... pN are the elements of pset, in increasing order.

    val partition : (Prop.normal Prop.t -> bool) -> t -> t * t
    val subseteq : t -> t -> bool
    val is_empty : t -> bool

    Set emptiness check.

    val filter : (Prop.normal Prop.t -> bool) -> t -> t

    Pretty print

    val d : Prop.normal Prop.t -> t -> unit

    dump a propset coming form the given initial prop

    diff --git a/website/static/odoc/next/infer/Biabduction/Prover/index.html b/website/static/odoc/next/infer/Biabduction/Prover/index.html index 0ea698cf124..a7d1d252cc8 100644 --- a/website/static/odoc/next/infer/Biabduction/Prover/index.html +++ b/website/static/odoc/next/infer/Biabduction/Prover/index.html @@ -1,5 +1,5 @@ -Prover (infer.Biabduction.Prover)

    Module Biabduction.Prover

    Functions for Theorem Proving

    val atom_negate : IR.Tenv.t -> Predicates.atom -> Predicates.atom

    Negate an atom

    Ordinary Theorem Proving

    val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

    Check |- e=0. Result false means "don't know".

    val check_equal : +Prover (infer.Biabduction.Prover)

    Module Biabduction.Prover

    Functions for Theorem Proving

    val atom_negate : IR.Tenv.t -> Predicates.atom -> Predicates.atom

    Negate an atom

    Ordinary Theorem Proving

    val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

    Check |- e=0. Result false means "don't know".

    val check_equal : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> @@ -42,4 +42,4 @@ implication_result

    check_implication_for_footprint p1 p2 returns Some(sub, frame, missing) if sub(p1 * missing) |- sub(p2 * frame) where sub is a substitution which instantiates the primed vars of p1 and p2, which are assumed to be disjoint.

    Cover: minimum set of pi's whose disjunction is equivalent to true

    val find_minimum_pure_cover : IR.Tenv.t -> (Predicates.atom list * 'a) list -> - (Predicates.atom list * 'a) list option

    Find minimum set of pi's in cases whose disjunction covers true

    \ No newline at end of file + (Predicates.atom list * 'a) list option

    Find minimum set of pi's in cases whose disjunction covers true

    diff --git a/website/static/odoc/next/infer/Biabduction/Rearrange/index.html b/website/static/odoc/next/infer/Biabduction/Rearrange/index.html index cc8e1541705..8afb83af38a 100644 --- a/website/static/odoc/next/infer/Biabduction/Rearrange/index.html +++ b/website/static/odoc/next/infer/Biabduction/Rearrange/index.html @@ -1,5 +1,5 @@ -Rearrange (infer.Biabduction.Rearrange)

    Module Biabduction.Rearrange

    Re-arrangement and extension of structures with fresh variables

    exception ARRAY_ACCESS
    val is_only_pt_by_fld_or_param_nonnull : +Rearrange (infer.Biabduction.Rearrange)

    Module Biabduction.Rearrange

    Re-arrangement and extension of structures with fresh variables

    exception ARRAY_ACCESS
    val is_only_pt_by_fld_or_param_nonnull : IR.Procdesc.t -> IR.Tenv.t -> Prop.normal Prop.t -> @@ -11,10 +11,10 @@ IR.Exp.t -> IBase.Location.t -> unit

    Check for dereference errors: dereferencing 0, a freed value, or an undefined value

    val rearrange : - ?report_deref_errors:bool -> + ?report_deref_errors:bool -> BiabductionSummary.t Absint.InterproceduralAnalysis.t -> IR.Exp.t -> IR.Typ.t -> Prop.normal Prop.t -> IBase.Location.t -> - Predicates.offset list Prop.prop_iter list

    rearrange lexp prop rearranges prop into the form prop' * lexp|->strexp:typ. It returns an iterator with lexp |-> strexp: typ as current predicate and the path (an offsetlist) which leads to lexp as the iterator state.

    \ No newline at end of file + Predicates.offset list Prop.prop_iter list

    rearrange lexp prop rearranges prop into the form prop' * lexp|->strexp:typ. It returns an iterator with lexp |-> strexp: typ as current predicate and the path (an offsetlist) which leads to lexp as the iterator state.

    diff --git a/website/static/odoc/next/infer/Biabduction/RetainCycles/index.html b/website/static/odoc/next/infer/Biabduction/RetainCycles/index.html index dd004ab4a0a..e679fc7155a 100644 --- a/website/static/odoc/next/infer/Biabduction/RetainCycles/index.html +++ b/website/static/odoc/next/infer/Biabduction/RetainCycles/index.html @@ -1,5 +1,5 @@ -RetainCycles (infer.Biabduction.RetainCycles)

    Module Biabduction.RetainCycles

    val report_cycle : +RetainCycles (infer.Biabduction.RetainCycles)

    Module Biabduction.RetainCycles

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Biabduction/RetainCyclesType/index.html b/website/static/odoc/next/infer/Biabduction/RetainCyclesType/index.html index 60955fc6624..ba82900cd71 100644 --- a/website/static/odoc/next/infer/Biabduction/RetainCyclesType/index.html +++ b/website/static/odoc/next/infer/Biabduction/RetainCyclesType/index.html @@ -1,2 +1,2 @@ -RetainCyclesType (infer.Biabduction.RetainCyclesType)

    Module Biabduction.RetainCyclesType

    type retain_cycle_node = {
    1. rc_node_exp : IR.Exp.t;
    2. rc_node_typ : IR.Typ.t;
    }
    type retain_cycle_field = {
    1. rc_field_name : IR.Fieldname.t;
    2. rc_field_inst : Predicates.inst;
    }
    type retain_cycle_edge_obj = {
    1. rc_from : retain_cycle_node;
    2. rc_field : retain_cycle_field;
    }
    type retain_cycle_edge =
    1. | Object of retain_cycle_edge_obj
    2. | Block of IR.Procname.t * IR.Pvar.t
    type t = {
    1. rc_head : retain_cycle_edge;
    2. rc_elements : retain_cycle_edge list;
    }

    A retain cycle is a non-empty list of paths. It also contains a pointer to the head of the list to model the cycle structure. The next element from the end of the list is the head.

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set for retain cycles.

    val d_retain_cycle : t -> unit
    val create_cycle : retain_cycle_edge list -> t option

    Creates a cycle if the list is non-empty

    val pp_dotty : Stdlib.Format.formatter -> t -> unit
    val write_dotty_to_file : string -> t -> unit
    \ No newline at end of file +RetainCyclesType (infer.Biabduction.RetainCyclesType)

    Module Biabduction.RetainCyclesType

    type retain_cycle_node = {
    1. rc_node_exp : IR.Exp.t;
    2. rc_node_typ : IR.Typ.t;
    }
    type retain_cycle_field = {
    1. rc_field_name : IR.Fieldname.t;
    2. rc_field_inst : Predicates.inst;
    }
    type retain_cycle_edge_obj = {
    1. rc_from : retain_cycle_node;
    2. rc_field : retain_cycle_field;
    }
    type retain_cycle_edge =
    1. | Object of retain_cycle_edge_obj
    2. | Block of IR.Procname.t * IR.Pvar.t
    type t = {
    1. rc_head : retain_cycle_edge;
    2. rc_elements : retain_cycle_edge list;
    }

    A retain cycle is a non-empty list of paths. It also contains a pointer to the head of the list to model the cycle structure. The next element from the end of the list is the head.

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set for retain cycles.

    val d_retain_cycle : t -> unit
    val create_cycle : retain_cycle_edge list -> t option

    Creates a cycle if the list is non-empty

    val pp_dotty : Stdlib.Format.formatter -> t -> unit
    val write_dotty_to_file : string -> t -> unit
    diff --git a/website/static/odoc/next/infer/Biabduction/State/index.html b/website/static/odoc/next/infer/Biabduction/State/index.html index 97f6ba0b502..9c79579d25a 100644 --- a/website/static/odoc/next/infer/Biabduction/State/index.html +++ b/website/static/odoc/next/infer/Biabduction/State/index.html @@ -1,15 +1,15 @@ -State (infer.Biabduction.State)

    Module Biabduction.State

    State of symbolic execution

    val add_diverging_states : Paths.PathSet.t -> unit

    Add diverging states

    val get_diverging_states_node : unit -> Paths.PathSet.t

    Get the diverging states for the node

    val get_diverging_states_proc : unit -> Paths.PathSet.t

    Get the diverging states for the procedure

    val get_inst_update : IR.PredSymb.path_pos -> Predicates.inst

    Get update instrumentation for the current loc

    val get_loc_trace : unit -> Absint.Errlog.loc_trace

    Get the location trace of the last path seen in symbolic execution

    val get_normalized_pre : +State (infer.Biabduction.State)

    Module Biabduction.State

    State of symbolic execution

    val add_diverging_states : Paths.PathSet.t -> unit

    Add diverging states

    val get_diverging_states_node : unit -> Paths.PathSet.t

    Get the diverging states for the node

    val get_diverging_states_proc : unit -> Paths.PathSet.t

    Get the diverging states for the procedure

    val get_inst_update : IR.PredSymb.path_pos -> Predicates.inst

    Get update instrumentation for the current loc

    val get_loc_trace : unit -> Absint.Errlog.loc_trace

    Get the location trace of the last path seen in symbolic execution

    val get_normalized_pre : (IR.Tenv.t -> Prop.normal Prop.t -> Prop.normal Prop.t) -> Prop.normal Prop.t option

    return the normalized precondition extracted form the last prop seen, if any the abstraction function is a parameter to get around module dependencies

    val get_path : unit -> Paths.Path.t * IR.PredSymb.path_pos option

    Get last path seen in symbolic execution

    val get_path_pos : unit -> IR.PredSymb.path_pos

    Get the last path position seen in symbolic execution

    val get_prop_tenv_pdesc : unit -> (Prop.normal Prop.t * IR.Tenv.t * IR.Procdesc.t) option

    Get last last prop,tenv,pdesc seen in symbolic execution

    val mark_execution_end : IR.Procdesc.Node.t -> unit

    Mark the end of symbolic execution of a node

    val mark_execution_start : IR.Procdesc.Node.t -> unit

    Mark the start of symbolic execution of a node

    val mark_instr_fail : exn -> unit

    Mark that the execution of the current instruction failed

    val mark_instr_ok : unit -> unit

    Mark that the execution of the current instruction was OK

    type log_issue = - ?node:IR.Procdesc.Node.t -> - ?loc:IBase.Location.t -> - ?ltr:Absint.Errlog.loc_trace -> + ?node:IR.Procdesc.Node.t -> + ?loc:IBase.Location.t -> + ?ltr:Absint.Errlog.loc_trace -> exn -> unit
    val process_execution_failures : log_issue -> unit

    Process the failures during symbolic execution of a procedure

    val reset : unit -> unit

    Reset all the global data.

    val reset_diverging_states_node : unit -> unit

    Reset the diverging states information for the node

    val set_path : Paths.Path.t -> IR.PredSymb.path_pos option -> unit

    Get last path seen in symbolic execution

    val set_prop_tenv_pdesc : Prop.normal Prop.t -> IR.Tenv.t -> IR.Procdesc.t -> - unit

    Set last prop,tenv,pdesc seen in symbolic execution

    \ No newline at end of file + unit

    Set last prop,tenv,pdesc seen in symbolic execution

    diff --git a/website/static/odoc/next/infer/Biabduction/SymExec/index.html b/website/static/odoc/next/infer/Biabduction/SymExec/index.html index 67d59edf4e2..360bc983eb2 100644 --- a/website/static/odoc/next/infer/Biabduction/SymExec/index.html +++ b/website/static/odoc/next/infer/Biabduction/SymExec/index.html @@ -1,5 +1,5 @@ -SymExec (infer.Biabduction.SymExec)

    Module Biabduction.SymExec

    Symbolic Execution

    val declare_locals_and_ret : +SymExec (infer.Biabduction.SymExec)

    Module Biabduction.SymExec

    Symbolic Execution

    val declare_locals_and_ret : IR.Tenv.t -> IR.Procdesc.t -> Prop.normal Prop.t -> @@ -10,7 +10,7 @@ Absint.ProcCfg.Exceptional.Node.t -> Paths.PathSet.t -> Paths.PathSet.t

    Symbolic execution of the instructions of a node, lifted to sets of propositions.

    val instrs : - ?mask_errors:bool -> + ?mask_errors:bool -> BiabductionSummary.t Absint.InterproceduralAnalysis.t -> IR.Instrs.not_reversed_t -> (Prop.normal Prop.t * Paths.Path.t) list -> @@ -18,12 +18,12 @@ Prop.normal Prop.t -> Paths.Path.t -> (Prop.normal Prop.t * Paths.Path.t) list

    Symbolic execution of the divergent pure computation.

    val unknown_or_scan_call : - is_scan:bool -> - reason:string -> + is_scan:bool -> + reason:string -> IR.Typ.t -> IR.Annot.Item.t -> Builtin.t
    val check_variadic_sentinel : - ?fails_on_nil:bool -> + ?fails_on_nil:bool -> int -> (int * int) -> Builtin.t
    val check_arith_norm_exp : @@ -32,7 +32,7 @@ Prop.normal Prop.t -> IR.Exp.t * Prop.normal Prop.t

    Check for arithmetic problems and normalize an expression.

    val prune : IR.Tenv.t -> - positive:bool -> + positive:bool -> IR.Exp.t -> Prop.normal Prop.t -> - Propset.t
    \ No newline at end of file + Propset.t
    diff --git a/website/static/odoc/next/infer/Biabduction/SymOp/index.html b/website/static/odoc/next/infer/Biabduction/SymOp/index.html index 22312de5e63..0d37f156cde 100644 --- a/website/static/odoc/next/infer/Biabduction/SymOp/index.html +++ b/website/static/odoc/next/infer/Biabduction/SymOp/index.html @@ -1,2 +1,2 @@ -SymOp (infer.Biabduction.SymOp)

    Module Biabduction.SymOp

    Symbolic Operations and Failures: the units in which analysis work is measured

    type t

    Internal state of the module

    val check_wallclock_alarm : unit -> unit

    if the wallclock alarm has expired, raise a timeout exception

    val get_remaining_wallclock_time : unit -> float

    Return the time remaining before the wallclock alarm expires

    val get_timeout_seconds : unit -> float option

    Timeout in seconds for each function

    val get_total : unit -> int

    Return the total number of symop's since the beginning

    val pay : unit -> unit

    Count one symop

    val reset_total : unit -> unit

    Reset the total number of symop's

    val restore_state : t -> unit

    Restore the old state.

    val save_state : keep_symop_total:bool -> t

    Return the old state, and revert the current state to the initial one. If keep_symop_total is true, share the total counter.

    val set_alarm : unit -> unit

    Reset the counter and activate the alarm

    val set_wallclock_alarm : float -> unit

    Set the wallclock alarm checked at every pay()

    val set_wallclock_timeout_handler : (unit -> unit) -> unit

    set the handler for the wallclock timeout

    val unset_alarm : unit -> unit

    De-activate the alarm

    val unset_wallclock_alarm : unit -> unit

    Unset the wallclock alarm checked at every pay()

    \ No newline at end of file +SymOp (infer.Biabduction.SymOp)

    Module Biabduction.SymOp

    Symbolic Operations and Failures: the units in which analysis work is measured

    type t

    Internal state of the module

    val check_wallclock_alarm : unit -> unit

    if the wallclock alarm has expired, raise a timeout exception

    val get_remaining_wallclock_time : unit -> float

    Return the time remaining before the wallclock alarm expires

    val get_timeout_seconds : unit -> float option

    Timeout in seconds for each function

    val get_total : unit -> int

    Return the total number of symop's since the beginning

    val pay : unit -> unit

    Count one symop

    val reset_total : unit -> unit

    Reset the total number of symop's

    val restore_state : t -> unit

    Restore the old state.

    val save_state : keep_symop_total:bool -> t

    Return the old state, and revert the current state to the initial one. If keep_symop_total is true, share the total counter.

    val set_alarm : unit -> unit

    Reset the counter and activate the alarm

    val set_wallclock_alarm : float -> unit

    Set the wallclock alarm checked at every pay()

    val set_wallclock_timeout_handler : (unit -> unit) -> unit

    set the handler for the wallclock timeout

    val unset_alarm : unit -> unit

    De-activate the alarm

    val unset_wallclock_alarm : unit -> unit

    Unset the wallclock alarm checked at every pay()

    diff --git a/website/static/odoc/next/infer/Biabduction/Tabulation/index.html b/website/static/odoc/next/infer/Biabduction/Tabulation/index.html index 62f54700359..21b9db3b820 100644 --- a/website/static/odoc/next/infer/Biabduction/Tabulation/index.html +++ b/website/static/odoc/next/infer/Biabduction/Tabulation/index.html @@ -1,5 +1,5 @@ -Tabulation (infer.Biabduction.Tabulation)

    Module Biabduction.Tabulation

    Interprocedural footprint analysis

    val remove_constant_string_class : IR.Tenv.t -> 'a Prop.t -> Prop.normal Prop.t

    Remove constant string or class from a prop

    val create_cast_exception : +Tabulation (infer.Biabduction.Tabulation)

    Module Biabduction.Tabulation

    Interprocedural footprint analysis

    val remove_constant_string_class : IR.Tenv.t -> 'a Prop.t -> Prop.normal Prop.t

    Remove constant string or class from a prop

    val create_cast_exception : IR.Tenv.t -> IBase.Logging.ocaml_pos -> IR.Procname.t option -> @@ -8,12 +8,12 @@ IR.Exp.t -> exn

    raise a cast exception

    val prop_is_exn : IR.Procname.t -> 'a Prop.t -> bool

    check if a prop is an exception

    val prop_get_exn_name : IR.Procname.t -> 'a Prop.t -> IR.Typ.Name.t option

    when prop is an exception, return the exception name

    val lookup_custom_errors : 'a Prop.t -> string option

    search in prop contains an error state

    val exe_function_call : BiabductionSummary.t Absint.InterproceduralAnalysis.t -> - callee_attributes:IR.ProcAttributes.t -> - callee_pname:IR.Procname.t -> - callee_summary:BiabductionSummary.t -> - ret_id:IR.Ident.t -> + callee_attributes:IR.ProcAttributes.t -> + callee_pname:IR.Procname.t -> + callee_summary:BiabductionSummary.t -> + ret_id:IR.Ident.t -> IBase.Location.t -> - actuals:(IR.Exp.t * IR.Typ.t) list -> + actuals:(IR.Exp.t * IR.Typ.t) list -> Prop.normal Prop.t -> Paths.Path.t -> - (Prop.normal Prop.t * Paths.Path.t) list

    Execute the function call and return the list of results with return value

    \ No newline at end of file + (Prop.normal Prop.t * Paths.Path.t) list

    Execute the function call and return the list of results with return value

    diff --git a/website/static/odoc/next/infer/Biabduction/Timeout/index.html b/website/static/odoc/next/infer/Biabduction/Timeout/index.html index d7da3bb7105..df653a302f8 100644 --- a/website/static/odoc/next/infer/Biabduction/Timeout/index.html +++ b/website/static/odoc/next/infer/Biabduction/Timeout/index.html @@ -1,2 +1,2 @@ -Timeout (infer.Biabduction.Timeout)

    Module Biabduction.Timeout

    Handle timeout events

    val exe_timeout : ('a -> unit) -> 'a -> IBase.Exception.failure_kind option

    Execute the function up to a given timeout.

    \ No newline at end of file +Timeout (infer.Biabduction.Timeout)

    Module Biabduction.Timeout

    Handle timeout events

    val exe_timeout : ('a -> unit) -> 'a -> IBase.Exception.failure_kind option

    Execute the function up to a given timeout.

    diff --git a/website/static/odoc/next/infer/Biabduction/index.html b/website/static/odoc/next/infer/Biabduction/index.html index 569c2015b41..f896755a553 100644 --- a/website/static/odoc/next/infer/Biabduction/index.html +++ b/website/static/odoc/next/infer/Biabduction/index.html @@ -1,2 +1,2 @@ -Biabduction (infer.Biabduction)

    Module Biabduction

    module Abs : sig ... end

    Implementation of Abstraction Functions

    module Absarray : sig ... end
    module Attribute : sig ... end

    Attribute manipulation in Propositions (i.e., Symbolic Heaps)

    module BiabductionConfig : sig ... end
    module BiabductionReporting : sig ... end
    module BiabductionSummary : sig ... end
    module Buckets : sig ... end

    Classify bugs into buckets

    module Builtin : sig ... end

    Module for builtin functions with their symbolic execution handler

    module BuiltinDefn : sig ... end
    module Dom : sig ... end

    Join and Meet Operators

    module DotBiabduction : sig ... end
    module Errdesc : sig ... end

    Create descriptions of analysis errors

    module Exceptions : sig ... end
    module Interproc : sig ... end

    Interprocedural Analysis

    module JoinState : sig ... end

    Object representing the status of the join operation

    module Match : sig ... end

    Implementation of "Smart" Pattern Matching for higher order singly-linked list predicate.

    module Paths : sig ... end

    Execution Paths

    module Predicates : sig ... end
    module Prop : sig ... end

    Functions for Propositions (i.e., Symbolic Heaps)

    module PropUtil : sig ... end
    module Propgraph : sig ... end

    Propositions seen as graphs

    module Propset : sig ... end

    Functions for Sets of Propositions with and without sharing

    module Prover : sig ... end

    Functions for Theorem Proving

    module Rearrange : sig ... end

    Re-arrangement and extension of structures with fresh variables

    module RetainCycles : sig ... end
    module RetainCyclesType : sig ... end
    module State : sig ... end

    State of symbolic execution

    module SymExec : sig ... end

    Symbolic Execution

    module SymOp : sig ... end

    Symbolic Operations and Failures: the units in which analysis work is measured

    module Tabulation : sig ... end

    Interprocedural footprint analysis

    module Timeout : sig ... end

    Handle timeout events

    \ No newline at end of file +Biabduction (infer.Biabduction)

    Module Biabduction

    module Abs : sig ... end

    Implementation of Abstraction Functions

    module Absarray : sig ... end
    module Attribute : sig ... end

    Attribute manipulation in Propositions (i.e., Symbolic Heaps)

    module BiabductionConfig : sig ... end
    module BiabductionReporting : sig ... end
    module BiabductionSummary : sig ... end
    module Buckets : sig ... end

    Classify bugs into buckets

    module Builtin : sig ... end

    Module for builtin functions with their symbolic execution handler

    module BuiltinDefn : sig ... end
    module Dom : sig ... end

    Join and Meet Operators

    module DotBiabduction : sig ... end
    module Errdesc : sig ... end

    Create descriptions of analysis errors

    module Exceptions : sig ... end
    module Interproc : sig ... end

    Interprocedural Analysis

    module JoinState : sig ... end

    Object representing the status of the join operation

    module Match : sig ... end

    Implementation of "Smart" Pattern Matching for higher order singly-linked list predicate.

    module Paths : sig ... end

    Execution Paths

    module Predicates : sig ... end
    module Prop : sig ... end

    Functions for Propositions (i.e., Symbolic Heaps)

    module PropUtil : sig ... end
    module Propgraph : sig ... end

    Propositions seen as graphs

    module Propset : sig ... end

    Functions for Sets of Propositions with and without sharing

    module Prover : sig ... end

    Functions for Theorem Proving

    module Rearrange : sig ... end

    Re-arrangement and extension of structures with fresh variables

    module RetainCycles : sig ... end
    module RetainCyclesType : sig ... end
    module State : sig ... end

    State of symbolic execution

    module SymExec : sig ... end

    Symbolic Execution

    module SymOp : sig ... end

    Symbolic Operations and Failures: the units in which analysis work is measured

    module Tabulation : sig ... end

    Interprocedural footprint analysis

    module Timeout : sig ... end

    Handle timeout events

    diff --git a/website/static/odoc/next/infer/CStubs/Fnv64Hash/index.html b/website/static/odoc/next/infer/CStubs/Fnv64Hash/index.html index 635d0945f61..5cb5d88cb45 100644 --- a/website/static/odoc/next/infer/CStubs/Fnv64Hash/index.html +++ b/website/static/odoc/next/infer/CStubs/Fnv64Hash/index.html @@ -1,2 +1,2 @@ -Fnv64Hash (infer.CStubs.Fnv64Hash)

    Module CStubs.Fnv64Hash

    val fnv64_hash : string -> string
    \ No newline at end of file +Fnv64Hash (infer.CStubs.Fnv64Hash)

    Module CStubs.Fnv64Hash

    val fnv64_hash : string -> string
    diff --git a/website/static/odoc/next/infer/CStubs/index.html b/website/static/odoc/next/infer/CStubs/index.html index 118c48fb4e2..729938509bb 100644 --- a/website/static/odoc/next/infer/CStubs/index.html +++ b/website/static/odoc/next/infer/CStubs/index.html @@ -1,2 +1,2 @@ -CStubs (infer.CStubs)

    Module CStubs

    module Fnv64Hash : sig ... end
    \ No newline at end of file +CStubs (infer.CStubs)

    Module CStubs

    module Fnv64Hash : sig ... end
    diff --git a/website/static/odoc/next/infer/Checkers.html b/website/static/odoc/next/infer/Checkers.html index 1868448006f..416ba582e5f 100644 --- a/website/static/odoc/next/infer/Checkers.html +++ b/website/static/odoc/next/infer/Checkers.html @@ -1,2 +1,2 @@ -Checkers (infer.Checkers)

    Checkers Library

    A collection of various analyses.

    All modules: Checkers

    \ No newline at end of file +Checkers (infer.Checkers)

    Checkers Library

    A collection of various analyses.

    All modules: Checkers

    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html index a6aae28d831..f60d5ace6ff 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html index 16ae817f158..9709e837281 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html index 95f2c579914..6a81c5088ed 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/index.html index 0510a01289c..d1af9763fb2 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/Domain/index.html index b85a22c8293..58cb97bb330 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Checkers.AddressTaken.Analyzer.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/index.html index f617e36dc94..7387db27279 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/TransferFunctions/index.html @@ -1,9 +1,9 @@ -TransferFunctions (infer.Checkers.AddressTaken.Analyzer.TransferFunctions)

    Module Analyzer.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +TransferFunctions (infer.Checkers.AddressTaken.Analyzer.TransferFunctions)

    Module Analyzer.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/index.html index ce478c1b424..4b9e83fc5b0 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Analyzer/index.html @@ -1,23 +1,23 @@ -Analyzer (infer.Checkers.AddressTaken.Analyzer)

    Module AddressTaken.Analyzer

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +Analyzer (infer.Checkers.AddressTaken.Analyzer)

    Module AddressTaken.Analyzer

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = TransferFunctions.Domain.t Absint__AbstractInterpreter.State.t InvariantMap.t
    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option
    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map
    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map
    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option
    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option
    \ No newline at end of file + 'a option
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/Domain/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/Domain/index.html index 6c0820ca52e..d0af5400be3 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/Domain/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Checkers.AddressTaken.Domain)

    Module AddressTaken.Domain

    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Domain (infer.Checkers.AddressTaken.Domain)

    Module AddressTaken.Domain

    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdMap/index.html index 7950a6d1225..8bf6a32b82d 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdSet/index.html index 25e1fdc0d08..4dc05977d47 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html index 4957b9ec152..1dca50caa32 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.Checkers.AddressTaken.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/index.html index 0cba954e3ac..dd2d79e9f08 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Checkers.AddressTaken.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Checkers.AddressTaken.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/index.html index 8503b7cb354..218a7e0fac7 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/TransferFunctions/index.html @@ -1,2 +1,2 @@ -TransferFunctions (infer.Checkers.AddressTaken.TransferFunctions)

    Module AddressTaken.TransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = Domain
    type analysis_data = unit
    val add_address_taken_pvars : IR.Exp.t -> Domain.t -> Domain.t
    val exec_instr : Domain.t -> unit -> 'a -> 'b -> IR.Sil.instr -> Domain.t
    val pp_session_name : 'a -> Stdlib.Format.formatter -> unit
    \ No newline at end of file +TransferFunctions (infer.Checkers.AddressTaken.TransferFunctions)

    Module AddressTaken.TransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = Domain
    type analysis_data = unit
    val add_address_taken_pvars : IR.Exp.t -> Domain.t -> Domain.t
    val exec_instr : Domain.t -> unit -> 'a -> 'b -> IR.Sil.instr -> Domain.t
    val pp_session_name : 'a -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/AddressTaken/index.html b/website/static/odoc/next/infer/Checkers/AddressTaken/index.html index 613adf952fc..f952212facf 100644 --- a/website/static/odoc/next/infer/Checkers/AddressTaken/index.html +++ b/website/static/odoc/next/infer/Checkers/AddressTaken/index.html @@ -1,2 +1,2 @@ -AddressTaken (infer.Checkers.AddressTaken)

    Module Checkers.AddressTaken

    module Domain : sig ... end
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    \ No newline at end of file +AddressTaken (infer.Checkers.AddressTaken)

    Module Checkers.AddressTaken

    module Domain : sig ... end
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    diff --git a/website/static/odoc/next/infer/Checkers/AnnotationReachability/index.html b/website/static/odoc/next/infer/Checkers/AnnotationReachability/index.html index 164b156b7eb..e1312e8d936 100644 --- a/website/static/odoc/next/infer/Checkers/AnnotationReachability/index.html +++ b/website/static/odoc/next/infer/Checkers/AnnotationReachability/index.html @@ -1,4 +1,4 @@ -AnnotationReachability (infer.Checkers.AnnotationReachability)

    Module Checkers.AnnotationReachability

    val checker : +AnnotationReachability (infer.Checkers.AnnotationReachability)

    Module Checkers.AnnotationReachability

    \ No newline at end of file + AnnotationReachabilityDomain.t option
    diff --git a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/CallSites/index.html b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/CallSites/index.html index 2ab6947a418..c983f2ac0bd 100644 --- a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/CallSites/index.html +++ b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/CallSites/index.html @@ -1,2 +1,2 @@ -CallSites (infer.Checkers.AnnotationReachabilityDomain.CallSites)

    Module AnnotationReachabilityDomain.CallSites

    include IStdlib.PrettyPrintable.PPSet with type elt = Absint.CallSite.t
    include IStdlib.IStd.Caml.Set.S with type elt = Absint.CallSite.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +CallSites (infer.Checkers.AnnotationReachabilityDomain.CallSites)

    Module AnnotationReachabilityDomain.CallSites

    include IStdlib.PrettyPrintable.PPSet with type elt = Absint.CallSite.t
    include IStdlib.IStd.Caml.Set.S with type elt = Absint.CallSite.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/SinkMap/index.html b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/SinkMap/index.html index 223200b8076..da81553e4a9 100644 --- a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/SinkMap/index.html +++ b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/SinkMap/index.html @@ -1,5 +1,5 @@ -SinkMap (infer.Checkers.AnnotationReachabilityDomain.SinkMap)

    Module AnnotationReachabilityDomain.SinkMap

    include IStdlib.PrettyPrintable.PPMonoMap +SinkMap (infer.Checkers.AnnotationReachabilityDomain.SinkMap)

    Module AnnotationReachabilityDomain.SinkMap

    include IStdlib.PrettyPrintable.PPMonoMap with type key = IR.Procname.t with type value = CallSites.t
    include IStdlib.PrettyPrintable.MonoMap with type key = IR.Procname.t @@ -9,4 +9,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/index.html b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/index.html index 473a4107d2f..cf68b8bea74 100644 --- a/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/AnnotationReachabilityDomain/index.html @@ -1,5 +1,5 @@ -AnnotationReachabilityDomain (infer.Checkers.AnnotationReachabilityDomain)

    Module Checkers.AnnotationReachabilityDomain

    module CallSites : +AnnotationReachabilityDomain (infer.Checkers.AnnotationReachabilityDomain)

    Module Checkers.AnnotationReachabilityDomain

    module SinkMap : Absint.AbstractDomain.MapS with type key = IR.Procname.t @@ -15,4 +15,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val add_call_site : IR.Annot.t -> IR.Procname.t -> Absint.CallSite.t -> t -> t
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val add_call_site : IR.Annot.t -> IR.Procname.t -> Absint.CallSite.t -> t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/Control/ControlMap/index.html b/website/static/odoc/next/infer/Checkers/Control/ControlMap/index.html index c6d74e0fefc..93d3a6a50bc 100644 --- a/website/static/odoc/next/infer/Checkers/Control/ControlMap/index.html +++ b/website/static/odoc/next/infer/Checkers/Control/ControlMap/index.html @@ -1,12 +1,12 @@ -ControlMap (infer.Checkers.Control.ControlMap)

    Module Control.ControlMap

    Map control var -> loop head location

    type key = IR.Var.t
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +ControlMap (infer.Checkers.Control.ControlMap)

    Module Control.ControlMap

    Map control var -> loop head location

    type key = IR.Var.t
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Checkers/Control/GuardNodes/index.html b/website/static/odoc/next/infer/Checkers/Control/GuardNodes/index.html index 4b7a4e14f69..84b74cdf9ed 100644 --- a/website/static/odoc/next/infer/Checkers/Control/GuardNodes/index.html +++ b/website/static/odoc/next/infer/Checkers/Control/GuardNodes/index.html @@ -1,2 +1,2 @@ -GuardNodes (infer.Checkers.Control.GuardNodes)

    Module Control.GuardNodes

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +GuardNodes (infer.Checkers.Control.GuardNodes)

    Module Control.GuardNodes

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/Control/index.html b/website/static/odoc/next/infer/Checkers/Control/index.html index 1fd21ca2d8c..24a0f97c937 100644 --- a/website/static/odoc/next/infer/Checkers/Control/index.html +++ b/website/static/odoc/next/infer/Checkers/Control/index.html @@ -1,6 +1,6 @@ -Control (infer.Checkers.Control)

    Module Checkers.Control

    module LoopHead = IR.Procdesc.Node
    module LoopHeads = IR.Procdesc.NodeSet
    module ControlMap : sig ... end

    Map control var -> loop head location

    module GuardNodes : sig ... end
    module ExitNodeToLoopHeads = IR.Procdesc.NodeMap

    Map exit node -> loop head set

    module LoopHeadToGuardNodes = IR.Procdesc.NodeMap

    Map loop head -> prune nodes in the loop guard

    type invariant_map
    type loop_control_maps = {
    1. exit_map : LoopHeads.t ExitNodeToLoopHeads.t;
    2. loop_head_to_guard_nodes : GuardNodes.t LoopHeadToGuardNodes.t;
    }
    val compute_invariant_map : IR.Procdesc.t -> loop_control_maps -> invariant_map
    val compute_control_vars : +Control (infer.Checkers.Control)

    Module Checkers.Control

    module LoopHead = IR.Procdesc.Node
    module LoopHeads = IR.Procdesc.NodeSet
    module ControlMap : sig ... end

    Map control var -> loop head location

    module GuardNodes : sig ... end
    module ExitNodeToLoopHeads = IR.Procdesc.NodeMap

    Map exit node -> loop head set

    module LoopHeadToGuardNodes = IR.Procdesc.NodeMap

    Map loop head -> prune nodes in the loop guard

    type invariant_map
    type loop_control_maps = {
    1. exit_map : LoopHeads.t ExitNodeToLoopHeads.t;
    2. loop_head_to_guard_nodes : GuardNodes.t LoopHeadToGuardNodes.t;
    }
    val compute_invariant_map : IR.Procdesc.t -> loop_control_maps -> invariant_map
    val compute_control_vars : invariant_map -> LoopInvariant.VarsInLoop.t LoopHeadToGuardNodes.t -> LoopHead.t -> - IBase.Location.t ControlMap.t
    \ No newline at end of file + IBase.Location.t ControlMap.t
    diff --git a/website/static/odoc/next/infer/Checkers/DisjunctiveDemo/index.html b/website/static/odoc/next/infer/Checkers/DisjunctiveDemo/index.html index 1491a826375..909ec6d6d18 100644 --- a/website/static/odoc/next/infer/Checkers/DisjunctiveDemo/index.html +++ b/website/static/odoc/next/infer/Checkers/DisjunctiveDemo/index.html @@ -1,2 +1,2 @@ -DisjunctiveDemo (infer.Checkers.DisjunctiveDemo)

    Module Checkers.DisjunctiveDemo

    module F = Stdlib.Format
    type domain
    val pp_domain : F.formatter -> domain -> unit
    \ No newline at end of file +DisjunctiveDemo (infer.Checkers.DisjunctiveDemo)

    Module Checkers.DisjunctiveDemo

    module F = Stdlib.Format
    type domain
    val pp_domain : F.formatter -> domain -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/Dominators/GDoms/S/index.html b/website/static/odoc/next/infer/Checkers/Dominators/GDoms/S/index.html index 6cf2a18f2af..5c56ef65b7e 100644 --- a/website/static/odoc/next/infer/Checkers/Dominators/GDoms/S/index.html +++ b/website/static/odoc/next/infer/Checkers/Dominators/GDoms/S/index.html @@ -1,2 +1,2 @@ -S (infer.Checkers.Dominators.GDoms.S)

    Module GDoms.S

    type elt = vertex
    type t = Graph__Dominator.Make(Absint.ProcCfg.MakeOcamlGraph(CFG)).S.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    \ No newline at end of file +S (infer.Checkers.Dominators.GDoms.S)

    Module GDoms.S

    type elt = vertex
    type t = Graph__Dominator.Make(Absint.ProcCfg.MakeOcamlGraph(CFG)).S.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/Dominators/GDoms/index.html b/website/static/odoc/next/infer/Checkers/Dominators/GDoms/index.html index f46dc120775..7b43a7feff9 100644 --- a/website/static/odoc/next/infer/Checkers/Dominators/GDoms/index.html +++ b/website/static/odoc/next/infer/Checkers/Dominators/GDoms/index.html @@ -1,7 +1,7 @@ -GDoms (infer.Checkers.Dominators.GDoms)

    Module Dominators.GDoms

    module S : sig ... end
    type idom = vertex -> vertex
    type idoms = vertex -> vertex -> bool
    type dom_tree = vertex -> vertex list
    type dominators = vertex -> vertex list
    type dom = vertex -> vertex -> bool
    type sdom = vertex -> vertex -> bool
    type dom_frontier = vertex -> vertex list
    val compute_idom : t -> vertex -> vertex -> vertex
    val dominators_to_dom : ('a -> S.t) -> vertex -> 'a -> bool
    val dominators_to_sdom : (vertex -> S.t) -> vertex -> vertex -> bool
    val dom_to_sdom : (vertex -> vertex -> bool) -> vertex -> vertex -> bool
    val dominators_to_sdominators : (vertex -> S.t) -> vertex -> S.t
    val dominators_to_idoms : (vertex -> S.t) -> vertex -> vertex -> bool
    val dominators_to_dom_tree : +GDoms (infer.Checkers.Dominators.GDoms)

    Module Dominators.GDoms

    module S : sig ... end
    type idom = vertex -> vertex
    type idoms = vertex -> vertex -> bool
    type dom_tree = vertex -> vertex list
    type dominators = vertex -> vertex list
    type dom = vertex -> vertex -> bool
    type sdom = vertex -> vertex -> bool
    type dom_frontier = vertex -> vertex list
    val compute_idom : t -> vertex -> vertex -> vertex
    val dominators_to_dom : ('a -> S.t) -> vertex -> 'a -> bool
    val dominators_to_sdom : (vertex -> S.t) -> vertex -> vertex -> bool
    val dom_to_sdom : (vertex -> vertex -> bool) -> vertex -> vertex -> bool
    val dominators_to_sdominators : (vertex -> S.t) -> vertex -> S.t
    val dominators_to_idoms : (vertex -> S.t) -> vertex -> vertex -> bool
    val dominators_to_dom_tree : t -> - ?pred:(t -> vertex -> vertex list) -> + ?pred:(t -> vertex -> vertex list) -> (vertex -> S.t) -> vertex -> - S.t
    val idom_to_dom_tree : t -> (vertex -> vertex) -> vertex -> vertex list
    val idom_to_idoms : idom -> vertex -> vertex -> bool
    val compute_dom_frontier : t -> dom_tree -> idom -> vertex -> vertex list
    val idom_to_dominators : ('a -> 'a) -> 'a -> 'a list
    val idom_to_dom : (vertex -> vertex) -> vertex -> vertex -> bool
    val dom_tree_to_nontrivial_dom : vertex -> dom_tree -> vertex list
    val dom_tree_to_snontrivial_dom : vertex -> dom_tree -> S.t
    \ No newline at end of file + S.t
    val idom_to_dom_tree : t -> (vertex -> vertex) -> vertex -> vertex list
    val idom_to_idoms : idom -> vertex -> vertex -> bool
    val compute_dom_frontier : t -> dom_tree -> idom -> vertex -> vertex list
    val idom_to_dominators : ('a -> 'a) -> 'a -> 'a list
    val idom_to_dom : (vertex -> vertex) -> vertex -> vertex -> bool
    val dom_tree_to_nontrivial_dom : vertex -> dom_tree -> vertex list
    val dom_tree_to_snontrivial_dom : vertex -> dom_tree -> S.t
    diff --git a/website/static/odoc/next/infer/Checkers/Dominators/index.html b/website/static/odoc/next/infer/Checkers/Dominators/index.html index b70984945e7..e8dfc0c2fe9 100644 --- a/website/static/odoc/next/infer/Checkers/Dominators/index.html +++ b/website/static/odoc/next/infer/Checkers/Dominators/index.html @@ -1,9 +1,9 @@ -Dominators (infer.Checkers.Dominators)

    Module Checkers.Dominators

    module L = IBase.Logging
    module GDoms : sig ... end
    val print_dominators : +Dominators (infer.Checkers.Dominators)

    Module Checkers.Dominators

    module L = IBase.Logging
    module GDoms : sig ... end
    val print_dominators : IR.Procdesc.t -> (IR.Procdesc.Node.t -> IR.Procdesc.Node.t) -> unit
    val get_idoms : GDoms.t -> GDoms.vertex -> GDoms.vertex
    val dominates : (GDoms.vertex -> GDoms.vertex) -> GDoms.vertex -> GDoms.vertex -> - bool
    \ No newline at end of file + bool
    diff --git a/website/static/odoc/next/infer/Checkers/ExternalConfigImpactData/index.html b/website/static/odoc/next/infer/Checkers/ExternalConfigImpactData/index.html index 0cd48ff953a..0cb9c74f8a4 100644 --- a/website/static/odoc/next/infer/Checkers/ExternalConfigImpactData/index.html +++ b/website/static/odoc/next/infer/Checkers/ExternalConfigImpactData/index.html @@ -1,2 +1,2 @@ -ExternalConfigImpactData (infer.Checkers.ExternalConfigImpactData)

    Module Checkers.ExternalConfigImpactData

    val is_in_config_data_file : IR.Procname.t -> bool
    \ No newline at end of file +ExternalConfigImpactData (infer.Checkers.ExternalConfigImpactData)

    Module Checkers.ExternalConfigImpactData

    val is_in_config_data_file : IR.Procname.t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/FragmentRetainsViewChecker/index.html b/website/static/odoc/next/infer/Checkers/FragmentRetainsViewChecker/index.html index 4b8780a3c31..163d90d2cc5 100644 --- a/website/static/odoc/next/infer/Checkers/FragmentRetainsViewChecker/index.html +++ b/website/static/odoc/next/infer/Checkers/FragmentRetainsViewChecker/index.html @@ -1,2 +1,2 @@ -FragmentRetainsViewChecker (infer.Checkers.FragmentRetainsViewChecker)

    Module Checkers.FragmentRetainsViewChecker

    val callback_fragment_retains_view : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +FragmentRetainsViewChecker (infer.Checkers.FragmentRetainsViewChecker)

    Module Checkers.FragmentRetainsViewChecker

    val callback_fragment_retains_view : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/Impurity/index.html b/website/static/odoc/next/infer/Checkers/Impurity/index.html index 5be16fc2c15..7807d264e1f 100644 --- a/website/static/odoc/next/infer/Checkers/Impurity/index.html +++ b/website/static/odoc/next/infer/Checkers/Impurity/index.html @@ -1,5 +1,5 @@ -Impurity (infer.Checkers.Impurity)

    Module Checkers.Impurity

    val checker : +Impurity (infer.Checkers.Impurity)

    Module Checkers.Impurity

    An impurity analysis that relies on pulse summaries to determine how the state changes

    \ No newline at end of file + unit

    An impurity analysis that relies on pulse summaries to determine how the state changes

    diff --git a/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedAccess/index.html b/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedAccess/index.html index cdfe923f15f..8ab7555c0a1 100644 --- a/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedAccess/index.html +++ b/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedAccess/index.html @@ -1,2 +1,2 @@ -ModifiedAccess (infer.Checkers.ImpurityDomain.ModifiedAccess)

    Module ImpurityDomain.ModifiedAccess

    type t = {
    1. ordered_access_list : unit Absint.MemoryAccess.t list;
      (*

      list of ordered accesses that are oblivious to modified array indices

      *)
    2. trace : trace;
    }
    \ No newline at end of file +ModifiedAccess (infer.Checkers.ImpurityDomain.ModifiedAccess)

    Module ImpurityDomain.ModifiedAccess

    type t = {
    1. ordered_access_list : unit Pulselib.PulseBasicInterface.Access.access list;
      (*

      list of ordered accesses that are oblivious to modified array indices

      *)
    2. trace : trace;
    }
    diff --git a/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedVarMap/index.html b/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedVarMap/index.html index f5a81528489..352af1e948f 100644 --- a/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedVarMap/index.html +++ b/website/static/odoc/next/infer/Checkers/ImpurityDomain/ModifiedVarMap/index.html @@ -1,2 +1,2 @@ -ModifiedVarMap (infer.Checkers.ImpurityDomain.ModifiedVarMap)

    Module ImpurityDomain.ModifiedVarMap

    type t
    val bottom : t
    val add : IR.Pvar.t -> ModifiedAccess.t -> t -> t
    val fold : (IR.Pvar.t -> ModifiedAccess.t -> 'a -> 'a) -> t -> 'a -> 'a
    \ No newline at end of file +ModifiedVarMap (infer.Checkers.ImpurityDomain.ModifiedVarMap)

    Module ImpurityDomain.ModifiedVarMap

    type t
    val bottom : t
    val add : IR.Pvar.t -> ModifiedAccess.t -> t -> t
    val fold : (IR.Pvar.t -> ModifiedAccess.t -> 'a -> 'a) -> t -> 'a -> 'a
    diff --git a/website/static/odoc/next/infer/Checkers/ImpurityDomain/index.html b/website/static/odoc/next/infer/Checkers/ImpurityDomain/index.html index 56e3bfc110f..d2f96a1ac94 100644 --- a/website/static/odoc/next/infer/Checkers/ImpurityDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/ImpurityDomain/index.html @@ -1,6 +1,7 @@ -ImpurityDomain (infer.Checkers.ImpurityDomain)

    Module Checkers.ImpurityDomain

    module ModifiedAccess : sig ... end
    module ModifiedVarMap : sig ... end
    type t = {
    1. modified_params : ModifiedVarMap.t;
    2. modified_globals : ModifiedVarMap.t;
    3. skipped_calls : Pulselib.PulseSkippedCalls.t;
    4. exited : Exited.t;
    }
    val pure : t
    val is_pure : t -> bool
    type param_source =
    1. | Formal
    2. | Global
    val add_to_errlog : - nesting:int -> +ImpurityDomain (infer.Checkers.ImpurityDomain)

    Module Checkers.ImpurityDomain

    module ModifiedAccess : sig ... end
    module ModifiedVarMap : sig ... end
    type t = {
    1. modified_params : ModifiedVarMap.t;
    2. modified_globals : ModifiedVarMap.t;
    3. skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t;
    4. exited : Exited.t;
    }
    val pure : t
    val is_pure : t -> bool
    type param_source =
    1. | Formal
    2. | Global
    val add_to_errlog : + nesting:int -> param_source -> IR.Pvar.t -> ModifiedAccess.t -> @@ -8,4 +9,4 @@ Absint.Errlog.loc_trace_elem list
    val join : t -> t -> t
    val get_modified_immutables_opt : IR.Tenv.t -> t -> - (ModifiedVarMap.t * ModifiedVarMap.t) option
    \ No newline at end of file + (ModifiedVarMap.t * ModifiedVarMap.t) option
    diff --git a/website/static/odoc/next/infer/Checkers/InefficientKeysetIterator/index.html b/website/static/odoc/next/infer/Checkers/InefficientKeysetIterator/index.html index 9b75534204b..464dd9487da 100644 --- a/website/static/odoc/next/infer/Checkers/InefficientKeysetIterator/index.html +++ b/website/static/odoc/next/infer/Checkers/InefficientKeysetIterator/index.html @@ -1,2 +1,2 @@ -InefficientKeysetIterator (infer.Checkers.InefficientKeysetIterator)

    Module Checkers.InefficientKeysetIterator

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +InefficientKeysetIterator (infer.Checkers.InefficientKeysetIterator)

    Module Checkers.InefficientKeysetIterator

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/Local/index.html b/website/static/odoc/next/infer/Checkers/Lineage/Local/index.html new file mode 100644 index 00000000000..c0ec89b49f9 --- /dev/null +++ b/website/static/odoc/next/infer/Checkers/Lineage/Local/index.html @@ -0,0 +1,2 @@ + +Local (infer.Checkers.Lineage.Local)

    Module Lineage.Local

    type t
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/Out/index.html b/website/static/odoc/next/infer/Checkers/Lineage/Out/index.html new file mode 100644 index 00000000000..a38cfc1d653 --- /dev/null +++ b/website/static/odoc/next/infer/Checkers/Lineage/Out/index.html @@ -0,0 +1,2 @@ + +Out (infer.Checkers.Lineage.Out)

    Module Lineage.Out

    val report_graph : IStdlib.IStd.Out_channel.t -> IR.Procdesc.t -> G.t -> unit
    val report_summary : IR.Procdesc.t -> Summary.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/PPNode/index.html b/website/static/odoc/next/infer/Checkers/Lineage/PPNode/index.html new file mode 100644 index 00000000000..4076be5bf5b --- /dev/null +++ b/website/static/odoc/next/infer/Checkers/Lineage/PPNode/index.html @@ -0,0 +1,2 @@ + +PPNode (infer.Checkers.Lineage.PPNode)

    Module Lineage.PPNode

    type t
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/Summary/index.html b/website/static/odoc/next/infer/Checkers/Lineage/Summary/index.html index 90bd2b4d115..073d8a5a490 100644 --- a/website/static/odoc/next/infer/Checkers/Lineage/Summary/index.html +++ b/website/static/odoc/next/infer/Checkers/Lineage/Summary/index.html @@ -1,2 +1,2 @@ -Summary (infer.Checkers.Lineage.Summary)

    Module Lineage.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val report : t -> IR.Procdesc.t -> unit
    \ No newline at end of file +Summary (infer.Checkers.Lineage.Summary)

    Module Lineage.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val graph : t -> G.t
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/Vertex/index.html b/website/static/odoc/next/infer/Checkers/Lineage/Vertex/index.html new file mode 100644 index 00000000000..33a553fb7ab --- /dev/null +++ b/website/static/odoc/next/infer/Checkers/Lineage/Vertex/index.html @@ -0,0 +1,4 @@ + +Vertex (infer.Checkers.Lineage.Vertex)

    Module Lineage.Vertex

    val pp : t Fmt.t
    diff --git a/website/static/odoc/next/infer/Checkers/Lineage/index.html b/website/static/odoc/next/infer/Checkers/Lineage/index.html index fbd3700f976..192860e0a7a 100644 --- a/website/static/odoc/next/infer/Checkers/Lineage/index.html +++ b/website/static/odoc/next/infer/Checkers/Lineage/index.html @@ -1,6 +1,6 @@ -Lineage (infer.Checkers.Lineage)

    Module Checkers.Lineage

    module Summary : sig ... end
    val checker : +Lineage (infer.Checkers.Lineage)

    Module Checkers.Lineage

    module PPNode : sig ... end
    module Local : sig ... end
    module Vertex : sig ... end
    module G : Graph.Sig.P with type V.t = Vertex.t
    module Summary : sig ... end
    module Out : sig ... end
    \ No newline at end of file + Summary.t option
    diff --git a/website/static/odoc/next/infer/Checkers/LineageBase/index.html b/website/static/odoc/next/infer/Checkers/LineageBase/index.html index 5ccd2a61449..e11aa2b9467 100644 --- a/website/static/odoc/next/infer/Checkers/LineageBase/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageBase/index.html @@ -1,8 +1,8 @@ -LineageBase (infer.Checkers.LineageBase)

    Module Checkers.LineageBase

    val skip_unwanted : +LineageBase (infer.Checkers.LineageBase)

    Module Checkers.LineageBase

    val skip_unwanted : string -> - max_size:int option -> + max_size:int option -> ('payload Absint.InterproceduralAnalysis.t -> 'arg -> 'summary option) -> 'payload Absint.InterproceduralAnalysis.t -> 'arg -> - 'summary option

    Takes a checker and returns a checker that will skip synthethic and too-big functions.

    \ No newline at end of file + 'summary option

    Takes a checker and returns a checker that will skip synthethic and too-big functions.

    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/Cell/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/Cell/index.html index 34b81cb3951..01a506f679b 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/Cell/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/Cell/index.html @@ -1,2 +1,2 @@ -Cell (infer.Checkers.LineageShape.Cell)

    Module LineageShape.Cell

    Cells correspond to variable fields for which no subfield will be considered by the analysis, either because they semantically have none, or because the abstract domain decides that considering them would lead to too deep or too wide field structures.

    A field path of a cell:

    • Cannot have a length greater than IBase.Config.lineage_field_depth. For instance, if that limit is 2, the only cell under both X#foo#bar#baz and X#foo#bar#ham will be X#foo#bar.
    • Cannot cross a field whose field table is wider than IBase.Config.lineage_field_width. For instance, of the variable X has a huge number of fields, the only cell under X#field1 will be X itself.
    • Cannot go twice on same-typed fields if IBase.Config.lineage_prevent_cycles is set. For instance, if X has fields X#head and X#tail, and X#tail has the same shape as X, then the cells under X will be X#head and X#tail.

    If one of these conditions happens, then the cell field path will be truncated before reaching a "scalar" field and the cell will be "abstract".

    To make sure that the aforementioned properties hold, one cannot construct cells directly, but should access them through the Summary.fold_cells and Summary.fold_cell_pairs functions.

    The lineage graph is built on cells.

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : t Fmt.t
    val var : t -> IR.Var.t
    val field_path : t -> FieldPath.t
    val is_abstract : t -> bool
    val var_appears_in_source_code : t -> bool
    val path_from_origin : origin:VarPath.t -> t -> FieldPath.t

    Assuming the cell represents a component of the origin variable path, returns the sub-path subscriptable from this origin path to reach the cell component.

    If the cell is larger than the origin path (eg. because the origin path is longer than the limit and the cells groups it with other paths), returns an empty path. The rationale is that the result of this function can be seen as the subpath which, when extracted from the origin, will cover all the components of that origin stored in the cell. If the cell is larger than the origin then all the components of the origin are in the cell.

    Raises if the cell and the origin path are incompatible (eg. their variables are different).

    Examples assuming a depth limit of 3:

    • origin: X#a ; cell: X#a#b#c ; result : #b#c
    • origin: X#a#b#c ; cell : X#a#b#c ; result : empty
    • origin: X#a#b#c ; cell : X#a#b#d ; result : raises
    • origin: X#a#b#c ; cell : X#a#b#d ; result : raises
    • origin: X#a#b#c#d ; cell : X#a#b#c ; result : empty
    \ No newline at end of file +Cell (infer.Checkers.LineageShape.Cell)

    Module LineageShape.Cell

    Cells correspond to variable fields for which no subfield will be considered by the analysis, either because they semantically have none, or because the abstract domain decides that considering them would lead to too deep or too wide field structures.

    A field path of a cell:

    • Cannot have a length greater than IBase.Config.lineage_field_depth. For instance, if that limit is 2, the only cell under both X#foo#bar#baz and X#foo#bar#ham will be X#foo#bar.
    • Cannot cross a field whose field table is wider than IBase.Config.lineage_field_width. For instance, of the variable X has a huge number of fields, the only cell under X#field1 will be X itself.
    • Cannot go twice on same-typed fields if IBase.Config.lineage_prevent_cycles is set. For instance, if X has fields X#head and X#tail, and X#tail has the same shape as X, then the cells under X will be X#head and X#tail.

    If one of these conditions happens, then the cell field path will be truncated before reaching a "scalar" field and the cell will be "abstract".

    To make sure that the aforementioned properties hold, one cannot construct cells directly, but should access them through the Summary.fold_cells and Summary.fold_cell_pairs functions.

    The lineage graph is built on cells.

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : t Fmt.t
    val var : t -> IR.Var.t
    val field_path : t -> FieldPath.t
    val is_abstract : t -> bool
    val var_appears_in_source_code : t -> bool
    val path_from_origin : origin:VarPath.t -> t -> FieldPath.t

    Assuming the cell represents a component of the origin variable path, returns the sub-path subscriptable from this origin path to reach the cell component.

    Raises if the cell and the origin path are incompatible (eg. their variables are different or the cell path and the origin path are incomatible).

    See VariablePath.extract_from_origin.

    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldLabel/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldLabel/index.html index 16ee3c6ad9d..00dede206e7 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldLabel/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldLabel/index.html @@ -1,2 +1,2 @@ -FieldLabel (infer.Checkers.LineageShape.FieldLabel)

    Module LineageShape.FieldLabel

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val fieldname : IR.Fieldname.t -> t
    val make_fieldname : IR.Typ.name -> string -> t
    val tuple_elem_zero_based : size:int -> index:int -> t
    \ No newline at end of file +FieldLabel (infer.Checkers.LineageShape.FieldLabel)

    Module LineageShape.FieldLabel

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val fieldname : IR.Fieldname.t -> t
    val make_fieldname : IR.Typ.name -> string -> t
    val tuple_elem_zero_based : size:int -> index:int -> t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Key/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Key/index.html index 0767f8fdff9..df8d7500c72 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Key/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Checkers.LineageShape.FieldPath.Map.Key)

    Module Map.Key

    type t = t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    \ No newline at end of file +Key (infer.Checkers.LineageShape.FieldPath.Map.Key)

    Module Map.Key

    type t = t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/argument-1-Key/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/argument-1-Key/index.html index 418239c8db2..a6be988e4c0 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    \ No newline at end of file +Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/index.html index 9a21391429f..12ffbd1f600 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_bin_io/index.html @@ -1,2 +1,2 @@ -Provide_bin_io (infer.Checkers.LineageShape.FieldPath.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    \ No newline at end of file +Provide_bin_io (infer.Checkers.LineageShape.FieldPath.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/argument-1-Key/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/argument-1-Key/index.html index 1e996567304..9555817023e 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    \ No newline at end of file +Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/index.html index db68e3106a0..53dbdabd6f6 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_hash/index.html @@ -1,4 +1,4 @@ -Provide_hash (infer.Checkers.LineageShape.FieldPath.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : +Provide_hash (infer.Checkers.LineageShape.FieldPath.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : 'a Base__Ppx_hash_lib.hash_fold -> - 'a t Base__Ppx_hash_lib.hash_fold
    \ No newline at end of file + 'a t Base__Ppx_hash_lib.hash_fold
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/argument-1-Key/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/argument-1-Key/index.html index 7b7bd8174d2..9bdfc44f34f 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    \ No newline at end of file +Key (infer.Checkers.LineageShape.FieldPath.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/index.html index c54572b63bc..9fa405931c4 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/Provide_of_sexp/index.html @@ -1,2 +1,2 @@ -Provide_of_sexp (infer.Checkers.LineageShape.FieldPath.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    \ No newline at end of file +Provide_of_sexp (infer.Checkers.LineageShape.FieldPath.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/index.html index 0e8de8c6e2f..1480193307c 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Map/index.html @@ -1,10 +1,10 @@ -Map (infer.Checkers.LineageShape.FieldPath.Map)

    Module FieldPath.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : +Map (infer.Checkers.LineageShape.FieldPath.Map)

    Module FieldPath.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
    val empty : 'a t
    val singleton : Key.t -> 'a -> 'a t
    val map_keys : 'v t -> - f:(Key.t -> Key.t) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : + f:(Key.t -> Key.t) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence : (Key.t * 'a) Base__.Sequence.t -> @@ -12,105 +12,105 @@ (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence_exn : (Key.t * 'a) Base__.Sequence.t -> 'a t
    val of_sequence_multi : (Key.t * 'a) Base__.Sequence.t -> 'a list t
    val of_sequence_fold : (Key.t * 'a) Base__.Sequence.t -> - init:'b -> - f:('b -> 'a -> 'b) -> + init:'b -> + f:('b -> 'a -> 'b) -> 'b t
    val of_sequence_reduce : (Key.t * 'a) Base__.Sequence.t -> - f:('a -> 'a -> 'a) -> + f:('a -> 'a -> 'a) -> 'a t
    val of_iteri : - iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : + iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : (Key.t, Key.comparator_witness) Base.Set.t -> - f:(Key.t -> 'v) -> + f:(Key.t -> 'v) -> 'v t
    val quickcheck_generator : Key.t Core__.Quickcheck.Generator.t -> 'a Core__.Quickcheck.Generator.t -> - 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : + 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : 'a t -> - f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> + f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> Base__Map_intf.Finished_or_unfinished.t
    val iter2 : 'a t -> 'b t -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> - unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> + unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : 'a t -> - init:'acc -> - f: - (key:Key.t -> - data:'a -> + init:'acc -> + f: + (key:Key.t -> + data:'a -> 'acc -> ('acc, 'final) Base__.Container.Continue_or_stop.t) -> - finish:('acc -> 'final) -> - 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : + finish:('acc -> 'final) -> + 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : 'a t -> 'b t -> - init:'c -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> - 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : + init:'c -> + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> + 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : 'a t -> - f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> - 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : - ?key_order:[ `Decreasing | `Increasing ] -> + f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> + 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : + ?key_order:[ `Decreasing | `Increasing ] -> 'a t -> (Key.t * 'a) list
    val merge : 'a t -> 'b t -> - f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> + f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> 'c t
    val merge_skewed : 'v t -> 'v t -> - combine:(key:Key.t -> 'v -> 'v -> 'v) -> + combine:(key:Key.t -> 'v -> 'v -> 'v) -> 'v t
    val symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> + data_equal:('a -> 'a -> bool) -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t Base__.Sequence.t
    val fold_symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> - init:'c -> - f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> - 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : - lower_part:'a t -> - upper_part:'a t -> + data_equal:('a -> 'a -> bool) -> + init:'c -> + f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> + 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : + lower_part:'a t -> + upper_part:'a t -> [ `Ok of 'a t | `Overlapping_key_ranges ]
    val subrange : 'a t -> - lower_bound:Key.t Base__.Maybe_bound.t -> - upper_bound:Key.t Base__.Maybe_bound.t -> + lower_bound:Key.t Base__.Maybe_bound.t -> + upper_bound:Key.t Base__.Maybe_bound.t -> 'a t
    val fold_range_inclusive : 'a t -> - min:Key.t -> - max:Key.t -> - init:'b -> - f:(key:Key.t -> data:'a -> 'b -> 'b) -> - 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : + min:Key.t -> + max:Key.t -> + init:'b -> + f:(key:Key.t -> data:'a -> 'b -> 'b) -> + 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : 'a t -> [ `Greater_or_equal_to | `Greater_than | `Less_or_equal_to | `Less_than ] -> Key.t -> (Key.t * 'a) option
    val nth : 'a t -> int -> (Key.t * 'a) option
    val nth_exn : 'a t -> int -> Key.t * 'a
    val rank : 'a t -> Key.t -> int option
    val to_tree : 'a t -> (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t
    val to_sequence : - ?order:[ `Decreasing_key | `Increasing_key ] -> - ?keys_greater_or_equal_to:Key.t -> - ?keys_less_or_equal_to:Key.t -> + ?order:[ `Decreasing_key | `Increasing_key ] -> + ?keys_greater_or_equal_to:Key.t -> + ?keys_less_or_equal_to:Key.t -> 'a t -> (Key.t * 'a) Base__.Sequence.t
    val binary_search_segmented : 'a t -> - segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> + segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> Base__.Binary_searchable.Which_target_by_segment.t -> (Key.t * 'a) option
    val binary_search_subrange : 'a t -> - compare:(key:Key.t -> data:'a -> 'bound -> int) -> - lower_bound:'bound Base__.Maybe_bound.t -> - upper_bound:'bound Base__.Maybe_bound.t -> + compare:(key:Key.t -> data:'a -> 'bound -> int) -> + lower_bound:'bound Base__.Maybe_bound.t -> + upper_bound:'bound Base__.Maybe_bound.t -> 'a t
    val key_set : 'a t -> (Key.t, Key.comparator_witness) Base.Set.t
    val validate : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> 'a Validate.check -> 'a t Validate.check
    val validatei : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> (Key.t * 'a) Validate.check -> 'a t Validate.check
    val quickcheck_observer : Key.t Core__.Quickcheck.Observer.t -> @@ -118,4 +118,4 @@ 'v t Core__.Quickcheck.Observer.t
    val quickcheck_shrinker : Key.t Core__.Quickcheck.Shrinker.t -> 'v Core__.Quickcheck.Shrinker.t -> - 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    \ No newline at end of file + 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Replace_polymorphic_compare/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Replace_polymorphic_compare/index.html index 4ae266f48e8..27705f24674 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Replace_polymorphic_compare/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Replace_polymorphic_compare/index.html @@ -1,2 +1,2 @@ -Replace_polymorphic_compare (infer.Checkers.LineageShape.FieldPath.Replace_polymorphic_compare)

    Module FieldPath.Replace_polymorphic_compare

    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    \ No newline at end of file +Replace_polymorphic_compare (infer.Checkers.LineageShape.FieldPath.Replace_polymorphic_compare)

    Module FieldPath.Replace_polymorphic_compare

    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Elt/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Elt/index.html index 45ffb7fd7fc..652d3064452 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Elt/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.Checkers.LineageShape.FieldPath.Set.Elt)

    Module Set.Elt

    type t = t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    \ No newline at end of file +Elt (infer.Checkers.LineageShape.FieldPath.Set.Elt)

    Module Set.Elt

    type t = t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Named/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Named/index.html index aafcd0e3b7d..59e55957fb7 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Named/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Named/index.html @@ -1,2 +1,2 @@ -Named (infer.Checkers.LineageShape.FieldPath.Set.Named)

    Module Set.Named

    val is_subset : named -> of_:named -> unit Base__.Or_error.t
    val equal : named -> named -> unit Base__.Or_error.t
    \ No newline at end of file +Named (infer.Checkers.LineageShape.FieldPath.Set.Named)

    Module Set.Named

    val is_subset : named -> of_:named -> unit Base__.Or_error.t
    val equal : named -> named -> unit Base__.Or_error.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/argument-1-Elt/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/argument-1-Elt/index.html index 0a72c57bc31..595cd039fe2 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_bin_io.Elt)

    Parameter Provide_bin_io.Elt

    val bin_size_t : Elt.t Bin_prot.Size.sizer
    val bin_write_t : Elt.t Bin_prot.Write.writer
    val bin_read_t : Elt.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Elt.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Elt.t Bin_prot.Type_class.writer
    val bin_reader_t : Elt.t Bin_prot.Type_class.reader
    val bin_t : Elt.t Bin_prot.Type_class.t
    \ No newline at end of file +Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_bin_io.Elt)

    Parameter Provide_bin_io.Elt

    val bin_size_t : Elt.t Bin_prot.Size.sizer
    val bin_write_t : Elt.t Bin_prot.Write.writer
    val bin_read_t : Elt.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Elt.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Elt.t Bin_prot.Type_class.writer
    val bin_reader_t : Elt.t Bin_prot.Type_class.reader
    val bin_t : Elt.t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/index.html index f274a5f5f1f..aca8dba1d84 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_bin_io/index.html @@ -1,2 +1,2 @@ -Provide_bin_io (infer.Checkers.LineageShape.FieldPath.Set.Provide_bin_io)

    Module Set.Provide_bin_io

    Parameters

    module Elt : sig ... end

    Signature

    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    \ No newline at end of file +Provide_bin_io (infer.Checkers.LineageShape.FieldPath.Set.Provide_bin_io)

    Module Set.Provide_bin_io

    Parameters

    module Elt : sig ... end

    Signature

    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/argument-1-Elt/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/argument-1-Elt/index.html index 46da71c0044..f61e213fd52 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_hash.Elt)

    Parameter Provide_hash.Elt

    val hash_fold_t : Base__.Hash.state -> Elt.t -> Base__.Hash.state
    \ No newline at end of file +Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_hash.Elt)

    Parameter Provide_hash.Elt

    val hash_fold_t : Base__.Hash.state -> Elt.t -> Base__.Hash.state
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/index.html index 3bc212393a7..de5f1a8d256 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_hash/index.html @@ -1,2 +1,2 @@ -Provide_hash (infer.Checkers.LineageShape.FieldPath.Set.Provide_hash)

    Module Set.Provide_hash

    Parameters

    module Elt : sig ... end

    Signature

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    \ No newline at end of file +Provide_hash (infer.Checkers.LineageShape.FieldPath.Set.Provide_hash)

    Module Set.Provide_hash

    Parameters

    module Elt : sig ... end

    Signature

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/argument-1-Elt/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/argument-1-Elt/index.html index 5bed9a5cecf..6477c2afbce 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_of_sexp.Elt)

    Parameter Provide_of_sexp.Elt

    val t_of_sexp : Sexplib0.Sexp.t -> Elt.t
    \ No newline at end of file +Elt (infer.Checkers.LineageShape.FieldPath.Set.Provide_of_sexp.Elt)

    Parameter Provide_of_sexp.Elt

    val t_of_sexp : Sexplib0.Sexp.t -> Elt.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/index.html index 485f8471bda..e83f5fdd875 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/Provide_of_sexp/index.html @@ -1,2 +1,2 @@ -Provide_of_sexp (infer.Checkers.LineageShape.FieldPath.Set.Provide_of_sexp)

    Module Set.Provide_of_sexp

    Parameters

    module Elt : sig ... end

    Signature

    val t_of_sexp : Sexplib0.Sexp.t -> t
    \ No newline at end of file +Provide_of_sexp (infer.Checkers.LineageShape.FieldPath.Set.Provide_of_sexp)

    Module Set.Provide_of_sexp

    Parameters

    module Elt : sig ... end

    Signature

    val t_of_sexp : Sexplib0.Sexp.t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/index.html index 835922bdd6d..0226232dc2a 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/Set/index.html @@ -1,48 +1,48 @@ -Set (infer.Checkers.LineageShape.FieldPath.Set)

    Module FieldPath.Set

    module Elt : sig ... end
    type t = (Elt.t, Elt.comparator_witness) Base.Set.t
    val compare : t Base__Ppx_compare_lib.compare
    type named = (Elt.t, Elt.comparator_witness) Core__Set_intf.Named.t
    val length : t -> int
    val is_empty : t -> bool
    val iter : t -> f:(Elt.t -> unit) -> unit
    val fold : t -> init:'accum -> f:('accum -> Elt.t -> 'accum) -> 'accum
    val fold_result : +Set (infer.Checkers.LineageShape.FieldPath.Set)

    Module FieldPath.Set

    module Elt : sig ... end
    type t = (Elt.t, Elt.comparator_witness) Base.Set.t
    val compare : t Base__Ppx_compare_lib.compare
    type named = (Elt.t, Elt.comparator_witness) Core__Set_intf.Named.t
    val length : t -> int
    val is_empty : t -> bool
    val iter : t -> f:(Elt.t -> unit) -> unit
    val fold : t -> init:'accum -> f:('accum -> Elt.t -> 'accum) -> 'accum
    val fold_result : t -> - init:'accum -> - f:('accum -> Elt.t -> ('accum, 'e) Base__.Result.t) -> - ('accum, 'e) Base__.Result.t
    val exists : t -> f:(Elt.t -> bool) -> bool
    val for_all : t -> f:(Elt.t -> bool) -> bool
    val count : t -> f:(Elt.t -> bool) -> int
    val sum : + init:'accum -> + f:('accum -> Elt.t -> ('accum, 'e) Base__.Result.t) -> + ('accum, 'e) Base__.Result.t
    val exists : t -> f:(Elt.t -> bool) -> bool
    val for_all : t -> f:(Elt.t -> bool) -> bool
    val count : t -> f:(Elt.t -> bool) -> int
    val sum : (module Base__Container_intf.Summable with type t = 'sum) -> t -> - f:(Elt.t -> 'sum) -> - 'sum
    val find : t -> f:(Elt.t -> bool) -> Elt.t option
    val find_map : t -> f:(Elt.t -> 'a option) -> 'a option
    val to_list : t -> Elt.t list
    val to_array : t -> Elt.t array
    val invariants : t -> bool
    val mem : t -> Elt.t -> bool
    val add : t -> Elt.t -> t
    val remove : t -> Elt.t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val diff : t -> t -> t
    val symmetric_diff : t -> t -> (Elt.t, Elt.t) Base__.Either.t Base__.Sequence.t
    val compare_direct : t -> t -> int
    val equal : t -> t -> bool
    val is_subset : t -> of_:t -> bool
    val are_disjoint : t -> t -> bool
    module Named : sig ... end
    val fold_until : + f:(Elt.t -> 'sum) -> + 'sum
    val find : t -> f:(Elt.t -> bool) -> Elt.t option
    val find_map : t -> f:(Elt.t -> 'a option) -> 'a option
    val to_list : t -> Elt.t list
    val to_array : t -> Elt.t array
    val invariants : t -> bool
    val mem : t -> Elt.t -> bool
    val add : t -> Elt.t -> t
    val remove : t -> Elt.t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val diff : t -> t -> t
    val symmetric_diff : t -> t -> (Elt.t, Elt.t) Base__.Either.t Base__.Sequence.t
    val compare_direct : t -> t -> int
    val equal : t -> t -> bool
    val is_subset : t -> of_:t -> bool
    val are_disjoint : t -> t -> bool
    module Named : sig ... end
    val fold_until : t -> - init:'b -> - f:('b -> Elt.t -> ('b, 'final) Base__.Container.Continue_or_stop.t) -> - finish:('b -> 'final) -> - 'final
    val fold_right : t -> init:'b -> f:(Elt.t -> 'b -> 'b) -> 'b
    val iter2 : + init:'b -> + f:('b -> Elt.t -> ('b, 'final) Base__.Container.Continue_or_stop.t) -> + finish:('b -> 'final) -> + 'final
    val fold_right : t -> init:'b -> f:(Elt.t -> 'b -> 'b) -> 'b
    val iter2 : t -> t -> - f:([ `Both of Elt.t * Elt.t | `Left of Elt.t | `Right of Elt.t ] -> unit) -> - unit
    val filter : t -> f:(Elt.t -> bool) -> t
    val partition_tf : t -> f:(Elt.t -> bool) -> t * t
    val elements : t -> Elt.t list
    val min_elt : t -> Elt.t option
    val min_elt_exn : t -> Elt.t
    val max_elt : t -> Elt.t option
    val max_elt_exn : t -> Elt.t
    val choose : t -> Elt.t option
    val choose_exn : t -> Elt.t
    val split : t -> Elt.t -> t * Elt.t option * t
    val group_by : t -> equiv:(Elt.t -> Elt.t -> bool) -> t list
    val find_exn : t -> f:(Elt.t -> bool) -> Elt.t
    val nth : t -> int -> Elt.t option
    val remove_index : t -> int -> t
    val to_tree : t -> (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t
    val to_sequence : - ?order:[ `Decreasing | `Increasing ] -> - ?greater_or_equal_to:Elt.t -> - ?less_or_equal_to:Elt.t -> + f:([ `Both of Elt.t * Elt.t | `Left of Elt.t | `Right of Elt.t ] -> unit) -> + unit
    val filter : t -> f:(Elt.t -> bool) -> t
    val partition_tf : t -> f:(Elt.t -> bool) -> t * t
    val elements : t -> Elt.t list
    val min_elt : t -> Elt.t option
    val min_elt_exn : t -> Elt.t
    val max_elt : t -> Elt.t option
    val max_elt_exn : t -> Elt.t
    val choose : t -> Elt.t option
    val choose_exn : t -> Elt.t
    val split : t -> Elt.t -> t * Elt.t option * t
    val group_by : t -> equiv:(Elt.t -> Elt.t -> bool) -> t list
    val find_exn : t -> f:(Elt.t -> bool) -> Elt.t
    val nth : t -> int -> Elt.t option
    val remove_index : t -> int -> t
    val to_tree : t -> (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t
    val to_sequence : + ?order:[ `Decreasing | `Increasing ] -> + ?greater_or_equal_to:Elt.t -> + ?less_or_equal_to:Elt.t -> t -> Elt.t Base__.Sequence.t
    val binary_search_segmented : t -> - segment_of:(Elt.t -> [ `Left | `Right ]) -> + segment_of:(Elt.t -> [ `Left | `Right ]) -> Base__.Binary_searchable.Which_target_by_segment.t -> Elt.t option
    val merge_to_sequence : - ?order:[ `Decreasing | `Increasing ] -> - ?greater_or_equal_to:Elt.t -> - ?less_or_equal_to:Elt.t -> + ?order:[ `Decreasing | `Increasing ] -> + ?greater_or_equal_to:Elt.t -> + ?less_or_equal_to:Elt.t -> t -> t -> (Elt.t, Elt.t) Base__Set_intf.Merge_to_sequence_element.t Base__.Sequence.t
    val to_map : t -> - f:(Elt.t -> 'data) -> + f:(Elt.t -> 'data) -> (Elt.t, 'data, Elt.comparator_witness) Base.Map.t
    val quickcheck_observer : Elt.t Core__.Quickcheck.Observer.t -> t Core__.Quickcheck.Observer.t
    val quickcheck_shrinker : Elt.t Core__.Quickcheck.Shrinker.t -> - t Core__.Quickcheck.Shrinker.t
    val empty : t
    val singleton : Elt.t -> t
    val union_list : t list -> t
    val of_list : Elt.t list -> t
    val of_sequence : Elt.t Base__.Sequence.t -> t
    val of_array : Elt.t array -> t
    val of_sorted_array : Elt.t array -> t Base__.Or_error.t
    val of_sorted_array_unchecked : Elt.t array -> t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Elt.t) -> t
    val stable_dedup_list : Elt.t list -> Elt.t list
    val map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t) -> t
    val filter_map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t option) -> t
    val of_tree : (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t -> t
    val of_hash_set : Elt.t Core__.Hash_set.t -> t
    val of_hashtbl_keys : (Elt.t, 'a) Core__.Hashtbl.t -> t
    val of_map_keys : (Elt.t, 'a, Elt.comparator_witness) Base.Map.t -> t
    val quickcheck_generator : + t Core__.Quickcheck.Shrinker.t
    val empty : t
    val singleton : Elt.t -> t
    val union_list : t list -> t
    val of_list : Elt.t list -> t
    val of_sequence : Elt.t Base__.Sequence.t -> t
    val of_array : Elt.t array -> t
    val of_sorted_array : Elt.t array -> t Base__.Or_error.t
    val of_sorted_array_unchecked : Elt.t array -> t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Elt.t) -> t
    val stable_dedup_list : Elt.t list -> Elt.t list
    val map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t) -> t
    val filter_map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t option) -> t
    val of_tree : (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t -> t
    val of_hash_set : Elt.t Core__.Hash_set.t -> t
    val of_hashtbl_keys : (Elt.t, 'a) Core__.Hashtbl.t -> t
    val of_map_keys : (Elt.t, 'a, Elt.comparator_witness) Base.Map.t -> t
    val quickcheck_generator : Elt.t Core__.Quickcheck.Generator.t -> - t Core__.Quickcheck.Generator.t
    module Provide_of_sexp (Elt : sig ... end) : sig ... end
    module Provide_bin_io (Elt : sig ... end) : sig ... end
    module Provide_hash (Elt : sig ... end) : sig ... end
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    \ No newline at end of file + t Core__.Quickcheck.Generator.t
    module Provide_of_sexp (Elt : sig ... end) : sig ... end
    module Provide_bin_io (Elt : sig ... end) : sig ... end
    module Provide_hash (Elt : sig ... end) : sig ... end
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/index.html index e7f78b7007d..8b2b2dbbad4 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/FieldPath/index.html @@ -1,5 +1,8 @@ -FieldPath (infer.Checkers.LineageShape.FieldPath)

    Module LineageShape.FieldPath

    A module to help manipulating lists of (nested) fields.

    type t = FieldLabel.t list

    The fields are listed in syntactic order: [a; b] for x#a#b.

    include Ppx_compare_lib.Comparable.S with type t := t
    include Ppx_compare_lib.Equal.S with type t := t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include IStdlib.IStd.Comparable.S with type t := t
    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    val ascending : t -> t -> int
    val descending : t -> t -> int
    val between : t -> low:t -> high:t -> bool
    val clamp_exn : t -> min:t -> max:t -> t
    val clamp : t -> min:t -> max:t -> t Base__.Or_error.t
    type comparator_witness
    val comparator : (t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:t Core__.Maybe_bound.t -> t Validate.check
    val validate_ubound : max:t Core__.Maybe_bound.t -> t Validate.check
    val validate_bound : - min:t Core__.Maybe_bound.t -> - max:t Core__.Maybe_bound.t -> - t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Map : sig ... end
    module Set : sig ... end
    val pp : t Fmt.t
    \ No newline at end of file +FieldPath (infer.Checkers.LineageShape.FieldPath)

    Module LineageShape.FieldPath

    A module to help manipulating lists of (nested) fields.

    type t = FieldLabel.t list

    The fields are listed in syntactic order: [a; b] for x#a#b.

    include Ppx_compare_lib.Comparable.S with type t := t
    include Ppx_compare_lib.Equal.S with type t := t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include IStdlib.IStd.Comparable.S with type t := t
    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    val ascending : t -> t -> int
    val descending : t -> t -> int
    val between : t -> low:t -> high:t -> bool
    val clamp_exn : t -> min:t -> max:t -> t
    val clamp : t -> min:t -> max:t -> t Base__.Or_error.t
    type comparator_witness
    val comparator : (t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:t Core__.Maybe_bound.t -> t Validate.check
    val validate_ubound : max:t Core__.Maybe_bound.t -> t Validate.check
    val validate_bound : + min:t Core__.Maybe_bound.t -> + max:t Core__.Maybe_bound.t -> + t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Map : sig ... end
    module Set : sig ... end
    val pp : t Fmt.t
    val first_field_is : FieldLabel.t -> t -> bool

    Returns true iff the field path is not empty and its head is equal to the field label.

    val extract_from : + origin_path:FieldLabel.t list -> + FieldLabel.t list -> + FieldLabel.t list

    Assuming a variable path p represents a component of the origin variable path, returns the sub-path subscriptable from this origin path to reach p.

    If p is larger than the origin path (eg. because the origin path is longer than the limit and the corresponding cell groups it with other paths), returns an empty path. The rationale is that the result of this function can be seen as the subpath which, when extracted from the origin, will cover all the components of that origin stored in a cell. If the cell is larger than the origin then all the components of the origin are in the cell.

    Raises if the path and the origin path are incompatible (ie. they differ on a subfield).

    Examples assuming a depth limit of 3:

    • origin: #a ; path: #a#b#c ; result : #b#c
    • origin: #a#b#c ; path: #a#b#c ; result : empty
    • origin: #a#b#c ; path: #a#b#d ; result : raises
    • origin: #a#b#c ; path: #a#b#d ; result : raises
    • origin: #a#b#c#d ; path: #a#b#c ; result : empty
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/StdModules/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/StdModules/index.html index a7517d099f1..9415040bc8e 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/StdModules/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/StdModules/index.html @@ -1,2 +1,2 @@ -StdModules (infer.Checkers.LineageShape.StdModules)

    Module LineageShape.StdModules

    Can be safely opened to provide module definitions at once.

    module FieldLabel = FieldLabel
    module FieldPath = FieldPath
    module VarPath = VarPath
    module Cell = Cell
    \ No newline at end of file +StdModules (infer.Checkers.LineageShape.StdModules)

    Module LineageShape.StdModules

    Can be safely opened to provide module definitions at once.

    module FieldLabel = FieldLabel
    module FieldPath = FieldPath
    module VarPath = VarPath
    module Cell = Cell
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/Summary/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/Summary/index.html index 0bba79de10e..7c9235b49cf 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/Summary/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/Summary/index.html @@ -1,13 +1,24 @@ -Summary (infer.Checkers.LineageShape.Summary)

    Module LineageShape.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val assert_equal_shapes : t option -> VarPath.t -> VarPath.t -> unit
    val fold_field_labels : +Summary (infer.Checkers.LineageShape.Summary)

    Module LineageShape.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val assert_equal_shapes : t option -> VarPath.t -> VarPath.t -> unit
    val fold_field_labels : t option -> VarPath.t -> - init:'accum -> - f:('accum -> FieldLabel.t -> 'accum) -> - fallback:('accum -> 'accum) -> + init:'accum -> + f:('accum -> FieldLabel.t -> 'accum) -> + fallback:('accum -> 'accum) -> 'accum

    If a variable path has a shape that corresponds to a statically known set of field labels, folds over those field labels.

    Otherwise, calls the fallback function on init.

    If the summary is None, will always fallback.

    val as_field_label_singleton : t option -> VarPath.t -> FieldLabel.t option

    If a variable path has the shape that corresponds to a single statically known label, return it.

    val fold_cells : t option -> VarPath.t -> - init:'accum -> - f:('accum -> Cell.t -> 'accum) -> - 'accum

    Folds over all cells under a variable and field path. A field path is "terminal" if its length (that includes the prefixed fields given as parameters) is equal to IBase.Config.lineage_field_depth, or no more field can be subscripted from its corresponding type, or it has strictly more than IBase.Config.lineage_field_width immediate subfields.

    The result will not cross any shape whose field table is wider than IBase.Config.lineage_field_width, even if one of the parameter does. For instance, if some variable X has a huge number of fields, the only terminal field of X#field1 will be X itself.

    If the summary is None, f will be called once with a var-only abstract cell.

    \ No newline at end of file + init:'accum -> + f:('accum -> Cell.t -> 'accum) -> + 'accum

    Folds over all cells under a variable and field path. A field path is "terminal" if its length (that includes the prefixed fields given as parameters) is equal to IBase.Config.lineage_field_depth, or no more field can be subscripted from its corresponding type, or it has strictly more than IBase.Config.lineage_field_width immediate subfields.

    The result will not cross any shape whose field table is wider than IBase.Config.lineage_field_width, even if one of the parameter does. For instance, if some variable X has a huge number of fields, the only terminal field of X#field1 will be X itself.

    If the summary is None, f will be called once with a var-only abstract cell.

    val fold_argument_path : + t option -> + int -> + FieldPath.t -> + init:'accum -> + f:('accum -> FieldPath.t -> 'accum) -> + 'accum

    Folds over the terminal field paths of the given field of the argument at the given index. See fold_cells.

    val fold_return_path : + t option -> + FieldPath.t -> + init:'accum -> + f:('accum -> FieldPath.t -> 'accum) -> + 'accum

    Folds over the terminal field paths of the given field of the formal return. See fold_cells.

    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/VarPath/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/VarPath/index.html index 710af131e34..3267026f0a0 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/VarPath/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/VarPath/index.html @@ -1,2 +1,2 @@ -VarPath (infer.Checkers.LineageShape.VarPath)

    Module LineageShape.VarPath

    A variable path is a pair of a variable and a possibly empty list of subscripted fields. They are built from their in-program occurrences. They may semantically have sub-fields themselves: it is the job of the Cell module to determine the final graph nodes constructed from paths.

    The type of variable paths: a variable and a possibly empty list of subscripted fields.

    val var : IR.Var.t -> t
    val sub_label : t -> FieldLabel.t -> t

    Subscript one sub-field from a variable path.

    val sub_path : t -> FieldPath.t -> t

    Subscript nested sub-fields from a variable path.

    val make : IR.Var.t -> FieldPath.t -> t
    val pvar : IR.Pvar.t -> t
    val ident : IR.Ident.t -> t
    \ No newline at end of file +VarPath (infer.Checkers.LineageShape.VarPath)

    Module LineageShape.VarPath

    A variable path is a pair of a variable and a possibly empty list of subscripted fields. They are built from their in-program occurrences. They may semantically have sub-fields themselves: it is the job of the Cell module to determine the final graph nodes constructed from paths.

    The type of variable paths: a variable and a possibly empty list of subscripted fields.

    val var : IR.Var.t -> t
    val sub_label : t -> FieldLabel.t -> t

    Subscript one sub-field from a variable path.

    val sub_path : t -> FieldPath.t -> t

    Subscript nested sub-fields from a variable path.

    val make : IR.Var.t -> FieldPath.t -> t
    val pvar : IR.Pvar.t -> t
    val ident : IR.Ident.t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/LineageShape/index.html b/website/static/odoc/next/infer/Checkers/LineageShape/index.html index af9b243546a..8a99313eba3 100644 --- a/website/static/odoc/next/infer/Checkers/LineageShape/index.html +++ b/website/static/odoc/next/infer/Checkers/LineageShape/index.html @@ -1,2 +1,2 @@ -LineageShape (infer.Checkers.LineageShape)

    Module Checkers.LineageShape

    module FieldLabel : sig ... end
    module FieldPath : sig ... end

    A module to help manipulating lists of (nested) fields.

    module VarPath : sig ... end

    A variable path is a pair of a variable and a possibly empty list of subscripted fields. They are built from their in-program occurrences. They may semantically have sub-fields themselves: it is the job of the Cell module to determine the final graph nodes constructed from paths.

    module Cell : sig ... end

    Cells correspond to variable fields for which no subfield will be considered by the analysis, either because they semantically have none, or because the abstract domain decides that considering them would lead to too deep or too wide field structures.

    module Summary : sig ... end
    module StdModules : sig ... end

    Can be safely opened to provide module definitions at once.

    \ No newline at end of file +LineageShape (infer.Checkers.LineageShape)

    Module Checkers.LineageShape

    module FieldLabel : sig ... end
    module FieldPath : sig ... end

    A module to help manipulating lists of (nested) fields.

    module VarPath : sig ... end

    A variable path is a pair of a variable and a possibly empty list of subscripted fields. They are built from their in-program occurrences. They may semantically have sub-fields themselves: it is the job of the Cell module to determine the final graph nodes constructed from paths.

    module Cell : sig ... end

    Cells correspond to variable fields for which no subfield will be considered by the analysis, either because they semantically have none, or because the abstract domain decides that considering them would lead to too deep or too wide field structures.

    module Summary : sig ... end
    module StdModules : sig ... end

    Can be safely opened to provide module definitions at once.

    diff --git a/website/static/odoc/next/infer/Checkers/LithoDomain/LocalAccessPath/index.html b/website/static/odoc/next/infer/Checkers/LithoDomain/LocalAccessPath/index.html index c5998f8d521..1489a2aa098 100644 --- a/website/static/odoc/next/infer/Checkers/LithoDomain/LocalAccessPath/index.html +++ b/website/static/odoc/next/infer/Checkers/LithoDomain/LocalAccessPath/index.html @@ -1,5 +1,5 @@ -LocalAccessPath (infer.Checkers.LithoDomain.LocalAccessPath)

    Module LithoDomain.LocalAccessPath

    Access path + its parent procedure

    type t = private {
    1. access_path : Absint.AccessPath.t;
    2. parent : IR.Procname.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make_from_pvar : IR.Pvar.t -> IR.Typ.t -> IR.Procname.t -> t
    val make_from_access_expression : +LocalAccessPath (infer.Checkers.LithoDomain.LocalAccessPath)

    Module LithoDomain.LocalAccessPath

    Access path + its parent procedure

    type t = private {
    1. access_path : Absint.AccessPath.t;
    2. parent : IR.Procname.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make_from_pvar : IR.Pvar.t -> IR.Typ.t -> IR.Procname.t -> t
    val make_from_access_expression : Absint.HilExp.AccessExpression.t -> IR.Procname.t -> - t
    \ No newline at end of file + t
    diff --git a/website/static/odoc/next/infer/Checkers/LithoDomain/Mem/index.html b/website/static/odoc/next/infer/Checkers/LithoDomain/Mem/index.html index 23159060afa..39d0adbd263 100644 --- a/website/static/odoc/next/infer/Checkers/LithoDomain/Mem/index.html +++ b/website/static/odoc/next/infer/Checkers/LithoDomain/Mem/index.html @@ -1,2 +1,2 @@ -Mem (infer.Checkers.LithoDomain.Mem)

    Module LithoDomain.Mem

    type t
    val contains_build : t -> bool
    \ No newline at end of file +Mem (infer.Checkers.LithoDomain.Mem)

    Module LithoDomain.Mem

    type t
    val contains_build : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LithoDomain/MethodCallPrefix/index.html b/website/static/odoc/next/infer/Checkers/LithoDomain/MethodCallPrefix/index.html index 0381067ee16..9dd30d93454 100644 --- a/website/static/odoc/next/infer/Checkers/LithoDomain/MethodCallPrefix/index.html +++ b/website/static/odoc/next/infer/Checkers/LithoDomain/MethodCallPrefix/index.html @@ -1,2 +1,2 @@ -MethodCallPrefix (infer.Checkers.LithoDomain.MethodCallPrefix)

    Module LithoDomain.MethodCallPrefix

    Called procedure & location

    type t = private {
    1. prefix : string;
    2. procname : IR.Procname.t;
    3. location : IBase.Location.t;
    }
    val make_with_prefixes : IR.Procname.t -> IBase.Location.t -> t list
    \ No newline at end of file +MethodCallPrefix (infer.Checkers.LithoDomain.MethodCallPrefix)

    Module LithoDomain.MethodCallPrefix

    Called procedure & location

    type t = private {
    1. prefix : string;
    2. procname : IR.Procname.t;
    3. location : IBase.Location.t;
    }
    val make_with_prefixes : IR.Procname.t -> IBase.Location.t -> t list
    diff --git a/website/static/odoc/next/infer/Checkers/LithoDomain/index.html b/website/static/odoc/next/infer/Checkers/LithoDomain/index.html index a7a1f9fb126..5f868a320c9 100644 --- a/website/static/odoc/next/infer/Checkers/LithoDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/LithoDomain/index.html @@ -1,38 +1,38 @@ -LithoDomain (infer.Checkers.LithoDomain)

    Module Checkers.LithoDomain

    val is_component_or_section_builder : IR.Typ.Name.t -> IR.Tenv.t -> bool
    module LocalAccessPath : sig ... end

    Access path + its parent procedure

    val suffixes : IStdlib.IStd.String.Set.t
    module MethodCallPrefix : sig ... end

    Called procedure & location

    module Mem : sig ... end
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val subst : - callsite:IBase.Location.t -> - formals:(IR.Pvar.t * IR.Typ.t) list -> - actuals:Absint.HilExp.t list -> - ret_id_typ:Absint.AccessPath.base -> - caller_pname:IR.Procname.t -> - callee_pname:IR.Procname.t -> - caller:t -> - callee:Mem.t -> +LithoDomain (infer.Checkers.LithoDomain)

    Module Checkers.LithoDomain

    val is_component_or_section_builder : IR.Typ.Name.t -> IR.Tenv.t -> bool
    module LocalAccessPath : sig ... end

    Access path + its parent procedure

    val suffixes : IStdlib.IStd.String.Set.t
    module MethodCallPrefix : sig ... end

    Called procedure & location

    module Mem : sig ... end
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val subst : + callsite:IBase.Location.t -> + formals:(IR.Pvar.t * IR.Typ.t) list -> + actuals:Absint.HilExp.t list -> + ret_id_typ:Absint.AccessPath.base -> + caller_pname:IR.Procname.t -> + callee_pname:IR.Procname.t -> + caller:t -> + callee:Mem.t -> t
    type summary = Mem.t

    type for saving in summary payload

    val init : IR.Tenv.t -> IR.Procname.t -> (IR.Pvar.t * IR.Typ.t) list -> LocalAccessPath.t -> - t
    val assign : lhs:LocalAccessPath.t -> rhs:LocalAccessPath.t -> t -> t
    val assume_null : LocalAccessPath.t -> t -> t

    Semantics of null assume statement, i.e., assume(x==null)

    val call_create : + t
    val assign : lhs:LocalAccessPath.t -> rhs:LocalAccessPath.t -> t -> t
    val assume_null : LocalAccessPath.t -> t -> t

    Semantics of null assume statement, i.e., assume(x==null)

    val call_create : LocalAccessPath.t -> IR.Typ.name -> IBase.Location.t -> t -> t

    Semantics of builder creation method

    val call_builder : - ret:LocalAccessPath.t -> - receiver:LocalAccessPath.t -> + ret:LocalAccessPath.t -> + receiver:LocalAccessPath.t -> MethodCallPrefix.t -> t -> t

    Semantics of builder's methods, e.g. prop

    val call_build_method : - ret:LocalAccessPath.t -> - receiver:LocalAccessPath.t -> + ret:LocalAccessPath.t -> + receiver:LocalAccessPath.t -> t -> - t

    Semantics of builder's final build method

    val call_return : t -> t

    Semantics of return method

    val pp_summary : Stdlib.Format.formatter -> summary -> unit
    val get_summary : is_void_func:bool -> t -> summary
    val check_required_props : - check_on_string_set: + t

    Semantics of builder's final build method

    val call_return : t -> t

    Semantics of return method

    val pp_summary : Stdlib.Format.formatter -> summary -> unit
    val get_summary : is_void_func:bool -> t -> summary
    val check_required_props : + check_on_string_set: (IR.Typ.name -> IBase.Location.t -> MethodCallPrefix.t list -> IStdlib.IStd.String.Set.t -> unit) -> summary -> - summary
    \ No newline at end of file + summary
    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/Domain/index.html b/website/static/odoc/next/infer/Checkers/Liveness/Domain/index.html index 720b26cf28d..d8b69db1a1c 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/Domain/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.Checkers.Liveness.Domain)

    Module Liveness.Domain

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val add : IR.Var.t -> t -> t
    val fold : (IR.Var.t -> 'a -> 'a) -> t -> 'a -> 'a
    val union : t -> t -> t
    val diff : t -> t -> t
    \ No newline at end of file +Domain (infer.Checkers.Liveness.Domain)

    Module Liveness.Domain

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val add : IR.Var.t -> t -> t
    val fold : (IR.Var.t -> 'a -> 'a) -> t -> 'a -> 'a
    val union : t -> t -> t
    val diff : t -> t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/ExtendedDomain/index.html b/website/static/odoc/next/infer/Checkers/Liveness/ExtendedDomain/index.html index 0a561103efc..145fab8fbbb 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/ExtendedDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/ExtendedDomain/index.html @@ -1,2 +1,2 @@ -ExtendedDomain (infer.Checkers.Liveness.ExtendedDomain)

    Module Liveness.ExtendedDomain

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +ExtendedDomain (infer.Checkers.Liveness.ExtendedDomain)

    Module Liveness.ExtendedDomain

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdMap/index.html index df34ab347f3..ae426c5a687 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdSet/index.html index 0f4292b52a6..a60472d280d 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/index.html index 58fc4df8c10..fbce277f121 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/index.html b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/index.html index a2768f1e90d..ef750361d04 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG)

    Parameter PreAnalysisTransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Checkers.Liveness.PreAnalysisTransferFunctions.CFG)

    Parameter PreAnalysisTransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/index.html b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/index.html index 696602c96b4..e7f381d16a6 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/PreAnalysisTransferFunctions/index.html @@ -1,5 +1,5 @@ -PreAnalysisTransferFunctions (infer.Checkers.Liveness.PreAnalysisTransferFunctions)

    Module Liveness.PreAnalysisTransferFunctions

    Parameters

    Signature

    include Absint.TransferFunctions.SIL +PreAnalysisTransferFunctions (infer.Checkers.Liveness.PreAnalysisTransferFunctions)

    Module Liveness.PreAnalysisTransferFunctions

    Parameters

    Signature

    include Absint.TransferFunctions.SIL with module CFG = CFG with module Domain = ExtendedDomain with type analysis_data = IR.Procdesc.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/Checkers/Liveness/index.html b/website/static/odoc/next/infer/Checkers/Liveness/index.html index 4ce0f3201f2..fe8a448bfb4 100644 --- a/website/static/odoc/next/infer/Checkers/Liveness/index.html +++ b/website/static/odoc/next/infer/Checkers/Liveness/index.html @@ -1,7 +1,7 @@ -Liveness (infer.Checkers.Liveness)

    Module Checkers.Liveness

    module Domain : sig ... end
    type t
    val live_before : IR.Procdesc.Node.id -> t -> Domain.t option
    val live_after : IR.Procdesc.Node.id -> t -> Domain.t option
    val compute : IR.Procdesc.t -> t
    module PreAnalysisTransferFunctions +Liveness (infer.Checkers.Liveness)

    Module Checkers.Liveness

    module Domain : sig ... end
    type t
    val live_before : IR.Procdesc.Node.id -> t -> Domain.t option
    val live_after : IR.Procdesc.Node.id -> t -> Domain.t option
    val compute : IR.Procdesc.t -> t
    val checker : Absint.IntraproceduralAnalysis.t -> unit
    val is_always_in_scope : IR.Procdesc.t -> IR.Pvar.t -> bool
    \ No newline at end of file + and type analysis_data = IR.Procdesc.t
    val checker : Absint.IntraproceduralAnalysis.t -> unit
    val is_always_in_scope : IR.Procdesc.t -> IR.Pvar.t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LoopInvariant/InvariantVars/index.html b/website/static/odoc/next/infer/Checkers/LoopInvariant/InvariantVars/index.html index 1020791e1ee..0090e2c8ac9 100644 --- a/website/static/odoc/next/infer/Checkers/LoopInvariant/InvariantVars/index.html +++ b/website/static/odoc/next/infer/Checkers/LoopInvariant/InvariantVars/index.html @@ -1,2 +1,2 @@ -InvariantVars (infer.Checkers.LoopInvariant.InvariantVars)

    Module LoopInvariant.InvariantVars

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +InvariantVars (infer.Checkers.LoopInvariant.InvariantVars)

    Module LoopInvariant.InvariantVars

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LoopInvariant/LoopNodes/index.html b/website/static/odoc/next/infer/Checkers/LoopInvariant/LoopNodes/index.html index 7da7fe4a1a9..844898da709 100644 --- a/website/static/odoc/next/infer/Checkers/LoopInvariant/LoopNodes/index.html +++ b/website/static/odoc/next/infer/Checkers/LoopInvariant/LoopNodes/index.html @@ -1,2 +1,2 @@ -LoopNodes (infer.Checkers.LoopInvariant.LoopNodes)

    Module LoopInvariant.LoopNodes

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +LoopNodes (infer.Checkers.LoopInvariant.LoopNodes)

    Module LoopInvariant.LoopNodes

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LoopInvariant/VarSet/index.html b/website/static/odoc/next/infer/Checkers/LoopInvariant/VarSet/index.html index 572860a08ed..6141779056b 100644 --- a/website/static/odoc/next/infer/Checkers/LoopInvariant/VarSet/index.html +++ b/website/static/odoc/next/infer/Checkers/LoopInvariant/VarSet/index.html @@ -1,2 +1,2 @@ -VarSet (infer.Checkers.LoopInvariant.VarSet)

    Module LoopInvariant.VarSet

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +VarSet (infer.Checkers.LoopInvariant.VarSet)

    Module LoopInvariant.VarSet

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LoopInvariant/VarsInLoop/index.html b/website/static/odoc/next/infer/Checkers/LoopInvariant/VarsInLoop/index.html index 2d8cc28c563..64944e24e74 100644 --- a/website/static/odoc/next/infer/Checkers/LoopInvariant/VarsInLoop/index.html +++ b/website/static/odoc/next/infer/Checkers/LoopInvariant/VarsInLoop/index.html @@ -1,2 +1,2 @@ -VarsInLoop (infer.Checkers.LoopInvariant.VarsInLoop)

    Module LoopInvariant.VarsInLoop

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +VarsInLoop (infer.Checkers.LoopInvariant.VarsInLoop)

    Module LoopInvariant.VarsInLoop

    type elt = IR.Var.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/LoopInvariant/index.html b/website/static/odoc/next/infer/Checkers/LoopInvariant/index.html index 53c9ef9b079..02cab0f2e23 100644 --- a/website/static/odoc/next/infer/Checkers/LoopInvariant/index.html +++ b/website/static/odoc/next/infer/Checkers/LoopInvariant/index.html @@ -1,9 +1,9 @@ -LoopInvariant (infer.Checkers.LoopInvariant)

    Module Checkers.LoopInvariant

    module InvariantVars : sig ... end
    module VarsInLoop : sig ... end
    module LoopNodes : sig ... end
    module VarSet : sig ... end
    module LoopHeadToLoopNodes = IR.Procdesc.NodeMap

    Map loop header node -> all nodes in the loop

    module LoopHeadToInvVars = IR.Procdesc.NodeMap

    Map loop head -> invariant vars in loop

    type invariant_map = VarsInLoop.t IR.Procdesc.NodeMap.t
    val get_inv_vars_in_loop : +LoopInvariant (infer.Checkers.LoopInvariant)

    Module Checkers.LoopInvariant

    module InvariantVars : sig ... end
    module VarsInLoop : sig ... end
    module LoopNodes : sig ... end
    module VarSet : sig ... end
    module LoopHeadToLoopNodes = IR.Procdesc.NodeMap

    Map loop header node -> all nodes in the loop

    module LoopHeadToInvVars = IR.Procdesc.NodeMap

    Map loop head -> invariant vars in loop

    type invariant_map = VarsInLoop.t IR.Procdesc.NodeMap.t
    val get_inv_vars_in_loop : IR.Tenv.t -> ReachingDefs.invariant_map -> - is_pure_by_default:bool -> - get_callee_purity: + is_pure_by_default:bool -> + get_callee_purity: (IR.Procname.t -> PurityDomain.ModifiedParamIndices.t Absint.AbstractDomain.Types.top_lifted @@ -17,4 +17,4 @@ option) -> ReachingDefs.invariant_map -> LoopNodes.t LoopHeadToInvVars.t -> - invariant_map
    \ No newline at end of file + invariant_map
    diff --git a/website/static/odoc/next/infer/Checkers/Loop_control/index.html b/website/static/odoc/next/infer/Checkers/Loop_control/index.html index 40d1630cc45..79ab258fd7e 100644 --- a/website/static/odoc/next/infer/Checkers/Loop_control/index.html +++ b/website/static/odoc/next/infer/Checkers/Loop_control/index.html @@ -1,5 +1,5 @@ -Loop_control (infer.Checkers.Loop_control)

    Module Checkers.Loop_control

    val get_all_nodes_upwards_until : +Loop_control (infer.Checkers.Loop_control)

    Module Checkers.Loop_control

    val get_all_nodes_upwards_until : IR.Procdesc.Node.t -> IR.Procdesc.Node.t list -> Control.GuardNodes.t

    Starting from the start_nodes, find all the nodes upwards until the target is reached, i.e picking up predecessors which have not been already added to the found_nodes

    val get_loop_head_to_source_nodes : @@ -8,4 +8,4 @@ IR.Procdesc.Node.t list IR.Procdesc.NodeMap.t -> Control.loop_control_maps

    Get a pair of maps (exit_map, loop_head_to_guard_map) where exit_map : exit_node -> loop_head set (i.e. target of the back edges) loop_head_to_guard_map : loop_head -> guard_nodes and guard_nodes contains the nodes that may affect the looping behavior, i.e. occur in the guard of the loop conditional.

    val get_loop_head_to_loop_nodes : IR.Procdesc.Node.t list IR.Procdesc.NodeMap.t -> - Control.GuardNodes.t Checkers.Control.LoopHeadToGuardNodes.t

    Get a map from loop head -> all the nodes included in the corresponding loop

    \ No newline at end of file + Control.GuardNodes.t Checkers.Control.LoopHeadToGuardNodes.t

    Get a map from loop head -> all the nodes included in the corresponding loop

    diff --git a/website/static/odoc/next/infer/Checkers/ParameterNotNullChecked/index.html b/website/static/odoc/next/infer/Checkers/ParameterNotNullChecked/index.html index 11fcdbc9498..9c7d3e69de3 100644 --- a/website/static/odoc/next/infer/Checkers/ParameterNotNullChecked/index.html +++ b/website/static/odoc/next/infer/Checkers/ParameterNotNullChecked/index.html @@ -1,2 +1,2 @@ -ParameterNotNullChecked (infer.Checkers.ParameterNotNullChecked)

    Module Checkers.ParameterNotNullChecked

    Checker for when an Objective-C block is a parameter of a function or method, and it's executed in the method's body without being checked for null first.

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +ParameterNotNullChecked (infer.Checkers.ParameterNotNullChecked)

    Module Checkers.ParameterNotNullChecked

    Checker for when an Objective-C block is a parameter of a function or method, and it's executed in the method's body without being checked for null first.

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/PrintfArgs/index.html b/website/static/odoc/next/infer/Checkers/PrintfArgs/index.html index e1656fa358c..89716fbba1a 100644 --- a/website/static/odoc/next/infer/Checkers/PrintfArgs/index.html +++ b/website/static/odoc/next/infer/Checkers/PrintfArgs/index.html @@ -1,2 +1,2 @@ -PrintfArgs (infer.Checkers.PrintfArgs)

    Module Checkers.PrintfArgs

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +PrintfArgs (infer.Checkers.PrintfArgs)

    Module Checkers.PrintfArgs

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/PurityAnalysis/index.html b/website/static/odoc/next/infer/Checkers/PurityAnalysis/index.html index 30d07c13236..0acf7556aae 100644 --- a/website/static/odoc/next/infer/Checkers/PurityAnalysis/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityAnalysis/index.html @@ -1,5 +1,5 @@ -PurityAnalysis (infer.Checkers.PurityAnalysis)

    Module Checkers.PurityAnalysis

    val checker : +PurityAnalysis (infer.Checkers.PurityAnalysis)

    Module Checkers.PurityAnalysis

    \ No newline at end of file + PurityDomain.summary option
    diff --git a/website/static/odoc/next/infer/Checkers/PurityChecker/index.html b/website/static/odoc/next/infer/Checkers/PurityChecker/index.html index a3e7e9cb448..37fb4c9dc84 100644 --- a/website/static/odoc/next/infer/Checkers/PurityChecker/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityChecker/index.html @@ -1,5 +1,5 @@ -PurityChecker (infer.Checkers.PurityChecker)

    Module Checkers.PurityChecker

    val should_report : IR.Procname.t -> bool
    val checker : +PurityChecker (infer.Checkers.PurityChecker)

    Module Checkers.PurityChecker

    val should_report : IR.Procname.t -> bool
    val checker : Absint.IntraproceduralAnalysis.t -> PurityDomain.summary option -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Checkers/PurityDomain/ModifiedParamIndices/index.html b/website/static/odoc/next/infer/Checkers/PurityDomain/ModifiedParamIndices/index.html index 62820969e61..fb6901156fc 100644 --- a/website/static/odoc/next/infer/Checkers/PurityDomain/ModifiedParamIndices/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityDomain/ModifiedParamIndices/index.html @@ -1,2 +1,2 @@ -ModifiedParamIndices (infer.Checkers.PurityDomain.ModifiedParamIndices)

    Module PurityDomain.ModifiedParamIndices

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val empty : t
    val of_list : int list -> t
    val is_empty : t -> bool
    val mem : int -> t -> bool
    val add : int -> t -> t
    \ No newline at end of file +ModifiedParamIndices (infer.Checkers.PurityDomain.ModifiedParamIndices)

    Module PurityDomain.ModifiedParamIndices

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val empty : t
    val of_list : int list -> t
    val is_empty : t -> bool
    val mem : int -> t -> bool
    val add : int -> t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/PurityDomain/index.html b/website/static/odoc/next/infer/Checkers/PurityDomain/index.html index 81d887462c0..ebbfda265a1 100644 --- a/website/static/odoc/next/infer/Checkers/PurityDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityDomain/index.html @@ -1,5 +1,5 @@ -PurityDomain (infer.Checkers.PurityDomain)

    Module Checkers.PurityDomain

    module ModifiedParamIndices : sig ... end
    include Absint.AbstractDomain.S +PurityDomain (infer.Checkers.PurityDomain)

    Module Checkers.PurityDomain

    module ModifiedParamIndices : sig ... end
    include Absint.AbstractDomain.S with type t = ModifiedParamIndices.t Absint.AbstractDomain.Types.top_lifted
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val pure : t

    Pure abstract state: no side-effect on parameters and global values. The return value depends only on the value of parameters.

    val impure_global : t

    Impure abstract state: there may be side-effect on the parameters or global values. Or the return value may depend on the machine state, e.g. `Math.random`.

    val impure_params : ModifiedParamIndices.t -> t

    Impure abstract state: there may be side-effect on the parameters, but not on global values.

    val is_pure : t -> bool
    val all_params_modified : (IR.Exp.t * IR.Typ.t) list -> ModifiedParamIndices.t
    type summary = t
    val pp_summary : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file + with type t = ModifiedParamIndices.t Absint.AbstractDomain.Types.top_lifted
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val pure : t

    Pure abstract state: no side-effect on parameters and global values. The return value depends only on the value of parameters.

    val impure_global : t

    Impure abstract state: there may be side-effect on the parameters or global values. Or the return value may depend on the machine state, e.g. `Math.random`.

    val impure_params : ModifiedParamIndices.t -> t

    Impure abstract state: there may be side-effect on the parameters, but not on global values.

    val is_pure : t -> bool
    val all_params_modified : (IR.Exp.t * IR.Typ.t) list -> ModifiedParamIndices.t
    type summary = t
    val pp_summary : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/PurityModels/BuiltinPureMethods/index.html b/website/static/odoc/next/infer/Checkers/PurityModels/BuiltinPureMethods/index.html index 2748e51adb8..01734969180 100644 --- a/website/static/odoc/next/infer/Checkers/PurityModels/BuiltinPureMethods/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityModels/BuiltinPureMethods/index.html @@ -1,2 +1,2 @@ -BuiltinPureMethods (infer.Checkers.PurityModels.BuiltinPureMethods)

    Module PurityModels.BuiltinPureMethods

    type elt = IStdlib.IStd.String.t
    type t = Stdlib__Set.Make(IStdlib.IStd.String).t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    \ No newline at end of file +BuiltinPureMethods (infer.Checkers.PurityModels.BuiltinPureMethods)

    Module PurityModels.BuiltinPureMethods

    type elt = IStdlib.IStd.String.t
    type t = Stdlib__Set.Make(IStdlib.IStd.String).t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/PurityModels/ProcName/index.html b/website/static/odoc/next/infer/Checkers/PurityModels/ProcName/index.html index ccff7962236..7e65af6cc9d 100644 --- a/website/static/odoc/next/infer/Checkers/PurityModels/ProcName/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityModels/ProcName/index.html @@ -1,4 +1,4 @@ -ProcName (infer.Checkers.PurityModels.ProcName)

    Module PurityModels.ProcName

    val dispatch : +ProcName (infer.Checkers.PurityModels.ProcName)

    Module PurityModels.ProcName

    \ No newline at end of file + Absint.ProcnameDispatcher.ProcName.dispatcher
    diff --git a/website/static/odoc/next/infer/Checkers/PurityModels/index.html b/website/static/odoc/next/infer/Checkers/PurityModels/index.html index 581d9987a0a..8601139fbff 100644 --- a/website/static/odoc/next/infer/Checkers/PurityModels/index.html +++ b/website/static/odoc/next/infer/Checkers/PurityModels/index.html @@ -1,2 +1,2 @@ -PurityModels (infer.Checkers.PurityModels)

    Module Checkers.PurityModels

    module BuiltinPureMethods : sig ... end
    val modifies_first : PurityDomain.t
    val modifies_third : PurityDomain.t
    val pure_builtins : 'a -> BuiltinPureMethods.elt -> bool
    val getStarValue : 'a -> string -> bool
    module ProcName : sig ... end
    \ No newline at end of file +PurityModels (infer.Checkers.PurityModels)

    Module Checkers.PurityModels

    module BuiltinPureMethods : sig ... end
    val modifies_first : PurityDomain.t
    val modifies_third : PurityDomain.t
    val pure_builtins : 'a -> BuiltinPureMethods.elt -> bool
    val getStarValue : 'a -> string -> bool
    module ProcName : sig ... end
    diff --git a/website/static/odoc/next/infer/Checkers/ReachingDefs/Defs/index.html b/website/static/odoc/next/infer/Checkers/ReachingDefs/Defs/index.html index 076f35751ef..e958f5b107b 100644 --- a/website/static/odoc/next/infer/Checkers/ReachingDefs/Defs/index.html +++ b/website/static/odoc/next/infer/Checkers/ReachingDefs/Defs/index.html @@ -1,2 +1,2 @@ -Defs (infer.Checkers.ReachingDefs.Defs)

    Module ReachingDefs.Defs

    The node in which the reaching definition x := e is defined.

    A definition x :=e, declared at node N, reaches the current node if there is a path from node N to the current node such that x is not modified along the path *

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Defs (infer.Checkers.ReachingDefs.Defs)

    Module ReachingDefs.Defs

    The node in which the reaching definition x := e is defined.

    A definition x :=e, declared at node N, reaches the current node if there is a path from node N to the current node such that x is not modified along the path *

    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/ReachingDefs/ReachingDefsMap/index.html b/website/static/odoc/next/infer/Checkers/ReachingDefs/ReachingDefsMap/index.html index f9389ce1cc8..6f8a83bffa9 100644 --- a/website/static/odoc/next/infer/Checkers/ReachingDefs/ReachingDefsMap/index.html +++ b/website/static/odoc/next/infer/Checkers/ReachingDefs/ReachingDefsMap/index.html @@ -1,8 +1,8 @@ -ReachingDefsMap (infer.Checkers.ReachingDefs.ReachingDefsMap)

    Module ReachingDefs.ReachingDefsMap

    Map var -> its reaching definition

    type key = IR.Var.t
    type value = Defs.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +ReachingDefsMap (infer.Checkers.ReachingDefs.ReachingDefsMap)

    Module ReachingDefs.ReachingDefsMap

    Map var -> its reaching definition

    type key = IR.Var.t
    type value = Defs.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/ReachingDefs/index.html b/website/static/odoc/next/infer/Checkers/ReachingDefs/index.html index 48107f8a865..6d5ed7da331 100644 --- a/website/static/odoc/next/infer/Checkers/ReachingDefs/index.html +++ b/website/static/odoc/next/infer/Checkers/ReachingDefs/index.html @@ -1,5 +1,5 @@ -ReachingDefs (infer.Checkers.ReachingDefs)

    Module Checkers.ReachingDefs

    module Defs : sig ... end

    The node in which the reaching definition x := e is defined.

    module ReachingDefsMap : sig ... end

    Map var -> its reaching definition

    type invariant_map
    val compute_invariant_map : IR.Procdesc.t -> invariant_map
    val extract_post : +ReachingDefs (infer.Checkers.ReachingDefs)

    Module Checkers.ReachingDefs

    module Defs : sig ... end

    The node in which the reaching definition x := e is defined.

    module ReachingDefsMap : sig ... end

    Map var -> its reaching definition

    type invariant_map
    val compute_invariant_map : IR.Procdesc.t -> invariant_map
    val extract_post : IR.Procdesc.Node.id -> invariant_map -> - ReachingDefsMap.t option
    \ No newline at end of file + ReachingDefsMap.t option
    diff --git a/website/static/odoc/next/infer/Checkers/RequiredProps/index.html b/website/static/odoc/next/infer/Checkers/RequiredProps/index.html index 28f9027daf7..ded195dc2a6 100644 --- a/website/static/odoc/next/infer/Checkers/RequiredProps/index.html +++ b/website/static/odoc/next/infer/Checkers/RequiredProps/index.html @@ -1,4 +1,4 @@ -RequiredProps (infer.Checkers.RequiredProps)

    Module Checkers.RequiredProps

    val checker : +RequiredProps (infer.Checkers.RequiredProps)

    Module Checkers.RequiredProps

    \ No newline at end of file + LithoDomain.summary option
    diff --git a/website/static/odoc/next/infer/Checkers/ScopeLeakage/Summary/index.html b/website/static/odoc/next/infer/Checkers/ScopeLeakage/Summary/index.html index 5e55cbbd7d7..07fb189a29e 100644 --- a/website/static/odoc/next/infer/Checkers/ScopeLeakage/Summary/index.html +++ b/website/static/odoc/next/infer/Checkers/ScopeLeakage/Summary/index.html @@ -1,2 +1,2 @@ -Summary (infer.Checkers.ScopeLeakage.Summary)

    Module ScopeLeakage.Summary

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Summary (infer.Checkers.ScopeLeakage.Summary)

    Module ScopeLeakage.Summary

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/ScopeLeakage/index.html b/website/static/odoc/next/infer/Checkers/ScopeLeakage/index.html index 893906967e7..f893a421cbc 100644 --- a/website/static/odoc/next/infer/Checkers/ScopeLeakage/index.html +++ b/website/static/odoc/next/infer/Checkers/ScopeLeakage/index.html @@ -1,2 +1,2 @@ -ScopeLeakage (infer.Checkers.ScopeLeakage)

    Module Checkers.ScopeLeakage

    module F = Stdlib.Format

    This analysis operates over Java bytecode. It assumes that types (classes, interfaces, enums, etc.) may be annotated with so-called scope annotations. The analysis is parameterized by a set of scopes and a "must-not-hold" relation over pairs of scopes, which it reads from a configuration file.

    The analysis aims to detect violations of the following property: if there exist a path of fields from object OA to object OB and the type of OA (or one of its super-types) is annotated with scope SA and the type of OB (or one of its super-types) is annotated with scope SB then must-not-hold(SA, SB) must be false. Intuitively, the given objects have different scopes that should not be nested, for example, different intended lifetimes, and a forbidden path from OA to OB results in OB "leaking" out of the scope SA.

    The implementation reads a configuration to determine a list of (scope) "generators" for each type of scope and a scope class for each type of scope. A generator for a scope type SA is given by the name of a class and a list of methods where it is understood that any of the methods listed for the given class returns an object that is known to have scope SA. (This can be seen as a form of lightweight modeling.) A scope class is the name of the class that represents a given scope.

    module Summary : sig ... end
    \ No newline at end of file +ScopeLeakage (infer.Checkers.ScopeLeakage)

    Module Checkers.ScopeLeakage

    module F = Stdlib.Format

    This analysis operates over Java bytecode. It assumes that types (classes, interfaces, enums, etc.) may be annotated with so-called scope annotations. The analysis is parameterized by a set of scopes and a "must-not-hold" relation over pairs of scopes, which it reads from a configuration file.

    The analysis aims to detect violations of the following property: if there exist a path of fields from object OA to object OB and the type of OA (or one of its super-types) is annotated with scope SA and the type of OB (or one of its super-types) is annotated with scope SB then must-not-hold(SA, SB) must be false. Intuitively, the given objects have different scopes that should not be nested, for example, different intended lifetimes, and a forbidden path from OA to OB results in OB "leaking" out of the scope SA.

    The implementation reads a configuration to determine a list of (scope) "generators" for each type of scope and a scope class for each type of scope. A generator for a scope type SA is given by the name of a class and a list of methods where it is understood that any of the methods listed for the given class returns an object that is known to have scope SA. (This can be seen as a form of lightweight modeling.) A scope class is the name of the class that represents a given scope.

    module Summary : sig ... end
    diff --git a/website/static/odoc/next/infer/Checkers/SelfInBlock/index.html b/website/static/odoc/next/infer/Checkers/SelfInBlock/index.html index cb5259bf4c7..246f86e32c9 100644 --- a/website/static/odoc/next/infer/Checkers/SelfInBlock/index.html +++ b/website/static/odoc/next/infer/Checkers/SelfInBlock/index.html @@ -1,2 +1,2 @@ -SelfInBlock (infer.Checkers.SelfInBlock)

    Module Checkers.SelfInBlock

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +SelfInBlock (infer.Checkers.SelfInBlock)

    Module Checkers.SelfInBlock

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SilValidation/index.html b/website/static/odoc/next/infer/Checkers/SilValidation/index.html index eb9861b8e47..91f00f21e98 100644 --- a/website/static/odoc/next/infer/Checkers/SilValidation/index.html +++ b/website/static/odoc/next/infer/Checkers/SilValidation/index.html @@ -1,2 +1,2 @@ -SilValidation (infer.Checkers.SilValidation)

    Module Checkers.SilValidation

    \ No newline at end of file +SilValidation (infer.Checkers.SilValidation)

    Module Checkers.SilValidation

    diff --git a/website/static/odoc/next/infer/Checkers/Siof/index.html b/website/static/odoc/next/infer/Checkers/Siof/index.html index 7c8f6ccf712..b8b4400c9a9 100644 --- a/website/static/odoc/next/infer/Checkers/Siof/index.html +++ b/website/static/odoc/next/infer/Checkers/Siof/index.html @@ -1,4 +1,4 @@ -Siof (infer.Checkers.Siof)

    Module Checkers.Siof

    val checker : +Siof (infer.Checkers.Siof)

    Module Checkers.Siof

    \ No newline at end of file + SiofDomain.t option
    diff --git a/website/static/odoc/next/infer/Checkers/SiofDomain/Summary/index.html b/website/static/odoc/next/infer/Checkers/SiofDomain/Summary/index.html index fbe5ab85c35..e82aeee1cbb 100644 --- a/website/static/odoc/next/infer/Checkers/SiofDomain/Summary/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofDomain/Summary/index.html @@ -1,2 +1,2 @@ -Summary (infer.Checkers.SiofDomain.Summary)

    Module SiofDomain.Summary

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Summary (infer.Checkers.SiofDomain.Summary)

    Module SiofDomain.Summary

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Checkers/SiofDomain/VarNames/index.html b/website/static/odoc/next/infer/Checkers/SiofDomain/VarNames/index.html index 46f3679049b..f743616e009 100644 --- a/website/static/odoc/next/infer/Checkers/SiofDomain/VarNames/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofDomain/VarNames/index.html @@ -1,2 +1,2 @@ -VarNames (infer.Checkers.SiofDomain.VarNames)

    Module SiofDomain.VarNames

    type elt = IStdlib.IStd.String.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +VarNames (infer.Checkers.SiofDomain.VarNames)

    Module SiofDomain.VarNames

    type elt = IStdlib.IStd.String.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/SiofDomain/index.html b/website/static/odoc/next/infer/Checkers/SiofDomain/index.html index b91611f579d..9da0d74cd97 100644 --- a/website/static/odoc/next/infer/Checkers/SiofDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofDomain/index.html @@ -1,2 +1,2 @@ -SiofDomain (infer.Checkers.SiofDomain)

    Module Checkers.SiofDomain

    module VarNames : sig ... end
    module Summary : sig ... end
    include module type of Summary
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +SiofDomain (infer.Checkers.SiofDomain)

    Module Checkers.SiofDomain

    module VarNames : sig ... end
    module Summary : sig ... end
    include module type of Summary
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVar/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVar/index.html index 0cd6dfbc0ec..aa8ad8080bf 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVar/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVar/index.html @@ -1,2 +1,2 @@ -GlobalVar (infer.Checkers.SiofTrace.GlobalVar)

    Module SiofTrace.GlobalVar

    include IStdlib.IStd.Caml.Set.OrderedType with type t = IR.Pvar.t
    type t = IR.Pvar.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +GlobalVar (infer.Checkers.SiofTrace.GlobalVar)

    Module SiofTrace.GlobalVar

    include IStdlib.IStd.Caml.Set.OrderedType with type t = IR.Pvar.t
    type t = IR.Pvar.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVarSet/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVarSet/index.html index 4862629d262..54a343bddf4 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVarSet/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/GlobalVarSet/index.html @@ -1,2 +1,2 @@ -GlobalVarSet (infer.Checkers.SiofTrace.GlobalVarSet)

    Module SiofTrace.GlobalVarSet

    include IStdlib.IStd.Caml.Set.S with type elt = IR.Pvar.t
    type elt = IR.Pvar.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +GlobalVarSet (infer.Checkers.SiofTrace.GlobalVarSet)

    Module SiofTrace.GlobalVarSet

    include IStdlib.IStd.Caml.Set.S with type elt = IR.Pvar.t
    type elt = IR.Pvar.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sanitizer/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sanitizer/index.html index 829b78c57f0..32f05e4d72c 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Checkers.SiofTrace.Sanitizer)

    Module SiofTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Checkers.SiofTrace.Sanitizer)

    Module SiofTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Kind/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Kind/index.html index d9e30f8f68e..bde967d6236 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Checkers.SiofTrace.Sink.Kind)

    Module Sink.Kind

    type t = IR.Pvar.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Checkers.SiofTrace.Sink.Kind)

    Module Sink.Kind

    type t = IR.Pvar.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Set/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Set/index.html index 08831af2128..fa52b90d006 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Checkers.SiofTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Checkers.SiofTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/index.html index 6277bc398dc..92e0b742474 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.Checkers.SiofTrace.Sink)

    Module SiofTrace.Sink

    include Absint.TaintTraceElem.S with type Kind.t = IR.Pvar.t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : +Sink (infer.Checkers.SiofTrace.Sink)

    Module SiofTrace.Sink

    include Absint.TaintTraceElem.S with type Kind.t = IR.Pvar.t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Kind/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Kind/index.html index fbdb9b15992..a4e8e0e82fd 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Checkers.SiofTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Checkers.SiofTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Set/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Set/index.html index 3647d5f79cd..199e26f9edd 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Set/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Checkers.SiofTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Checkers.SiofTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/index.html index 441322e11cc..514b732e24d 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Source/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Checkers.SiofTrace.Source)

    Module SiofTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Checkers.SiofTrace.Source)

    Module SiofTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/AccessMap/index.html index 4b5eb58964a..d345cef53fc 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Checkers.SiofTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Checkers.SiofTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/TraceDomain/index.html index b11909922eb..8fa008846bd 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Checkers.SiofTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Checkers.SiofTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/index.html index 44f1e6cbf57..00c7113f906 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Checkers.SiofTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Checkers.SiofTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/FootprintConfig/index.html index 84c323debc8..9b9fbf9ab67 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Checkers.SiofTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Checkers.SiofTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Known/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Known/index.html index 267f6e74ff4..32ac6cd752b 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Checkers.SiofTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Checkers.SiofTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Sanitizers/index.html index c2265d0cdbd..523a0e5b559 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Checkers.SiofTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Checkers.SiofTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/index.html index f2fe82a458f..a2cf2773bd3 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Checkers.SiofTrace.Sources)

    Module SiofTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Checkers.SiofTrace.Sources)

    Module SiofTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Checkers/SiofTrace/index.html b/website/static/odoc/next/infer/Checkers/SiofTrace/index.html index 9f828bb2404..0ab21cdd74e 100644 --- a/website/static/odoc/next/infer/Checkers/SiofTrace/index.html +++ b/website/static/odoc/next/infer/Checkers/SiofTrace/index.html @@ -1,35 +1,35 @@ -SiofTrace (infer.Checkers.SiofTrace)

    Module Checkers.SiofTrace

    include Absint.SinkTrace.S with type Sink.Kind.t = IR.Pvar.t
    include Absint.TaintTrace.S with type Sink.Kind.t = IR.Pvar.t
    include Absint.TaintTrace.Spec with type Sink.Kind.t = IR.Pvar.t
    module Sink : Absint.Sink.S with type Kind.t = IR.Pvar.t
    val get_report : +SiofTrace (infer.Checkers.SiofTrace)

    Module Checkers.SiofTrace

    include Absint.SinkTrace.S with type Sink.Kind.t = IR.Pvar.t
    include Absint.TaintTrace.S with type Sink.Kind.t = IR.Pvar.t
    include Absint.TaintTrace.Spec with type Sink.Kind.t = IR.Pvar.t
    module Sink : Absint.Sink.S with type Kind.t = IR.Pvar.t
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    A path from some procedure via the given passthroughs to the given call stack, with passthroughs for each callee

    val get_reportable_sink_paths : t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path list

    get a path for each of the reportable flows to a sink in this trace

    val get_reportable_sink_path : Sink.t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> sink_path option

    get a report for a single sink

    val with_callsite : t -> Absint.CallSite.t -> t

    update sink with the given call site

    val of_sink : Sink.t -> t
    val to_sink_loc_trace : - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> sink_path -> Absint.Errlog.loc_trace_elem list
    val make_access : IR.Pvar.t -> IBase.Location.t -> Sink.t
    val trace_of_error : IBase.Location.t -> string -> sink_path -> - Absint.Errlog.loc_trace_elem list
    \ No newline at end of file + Absint.Errlog.loc_trace_elem list
    diff --git a/website/static/odoc/next/infer/Checkers/index.html b/website/static/odoc/next/infer/Checkers/index.html index 4a7d5e9c8b0..0e5420a3f68 100644 --- a/website/static/odoc/next/infer/Checkers/index.html +++ b/website/static/odoc/next/infer/Checkers/index.html @@ -1,2 +1,2 @@ -Checkers (infer.Checkers)

    Module Checkers

    module AddressTaken : sig ... end
    module AnnotationReachability : sig ... end
    module AnnotationReachabilityDomain : sig ... end
    module Control : sig ... end
    module DisjunctiveDemo : sig ... end
    module Dominators : sig ... end
    module ExternalConfigImpactData : sig ... end
    module FragmentRetainsViewChecker : sig ... end
    module Impurity : sig ... end
    module ImpurityDomain : sig ... end
    module InefficientKeysetIterator : sig ... end
    module Lineage : sig ... end
    module LineageBase : sig ... end
    module LineageShape : sig ... end
    module LithoDomain : sig ... end
    module Liveness : sig ... end
    module LoopInvariant : sig ... end
    module Loop_control : sig ... end
    module ParameterNotNullChecked : sig ... end

    Checker for when an Objective-C block is a parameter of a function or method, and it's executed in the method's body without being checked for null first.

    module PrintfArgs : sig ... end
    module PurityAnalysis : sig ... end
    module PurityChecker : sig ... end
    module PurityDomain : sig ... end
    module PurityModels : sig ... end
    module ReachingDefs : sig ... end
    module RequiredProps : sig ... end
    module ScopeLeakage : sig ... end
    module SelfInBlock : sig ... end
    module SilValidation : sig ... end
    module Siof : sig ... end
    module SiofDomain : sig ... end
    module SiofTrace : sig ... end
    \ No newline at end of file +Checkers (infer.Checkers)

    Module Checkers

    module AddressTaken : sig ... end
    module AnnotationReachability : sig ... end
    module AnnotationReachabilityDomain : sig ... end
    module Control : sig ... end
    module DisjunctiveDemo : sig ... end
    module Dominators : sig ... end
    module ExternalConfigImpactData : sig ... end
    module FragmentRetainsViewChecker : sig ... end
    module Impurity : sig ... end
    module ImpurityDomain : sig ... end
    module InefficientKeysetIterator : sig ... end
    module Lineage : sig ... end
    module LineageBase : sig ... end
    module LineageShape : sig ... end
    module LithoDomain : sig ... end
    module Liveness : sig ... end
    module LoopInvariant : sig ... end
    module Loop_control : sig ... end
    module ParameterNotNullChecked : sig ... end

    Checker for when an Objective-C block is a parameter of a function or method, and it's executed in the method's body without being checked for null first.

    module PrintfArgs : sig ... end
    module PurityAnalysis : sig ... end
    module PurityChecker : sig ... end
    module PurityDomain : sig ... end
    module PurityModels : sig ... end
    module ReachingDefs : sig ... end
    module RequiredProps : sig ... end
    module ScopeLeakage : sig ... end
    module SelfInBlock : sig ... end
    module SilValidation : sig ... end
    module Siof : sig ... end
    module SiofDomain : sig ... end
    module SiofTrace : sig ... end
    diff --git a/website/static/odoc/next/infer/ClangFrontend.html b/website/static/odoc/next/infer/ClangFrontend.html index 47bedebbbbc..09075660e4f 100644 --- a/website/static/odoc/next/infer/ClangFrontend.html +++ b/website/static/odoc/next/infer/ClangFrontend.html @@ -1,2 +1,2 @@ -ClangFrontend (infer.ClangFrontend)

    Clang Frontend

    Translates code that Clang understands into Infer's intermediate representation language IR.Sil.

    All modules: ClangFrontend

    Capturing source files

    Start at ClangFrontend.Capture for how Infer uses Clang to parse source files, using our Clang plugin. For more information on our clang plugin itself, refer to the relevant documentation in facebook-clang-plugins:

    Quick guide to changing the AST format

    1. Create a simple example (example.cpp) source file with construct that needs to be exported. The smaller the better.
    2. Export the extra information by changing the code in libtooling/ASTExporter.h. For more information, refer to the ATD_GUIDELINES.
    3. Compile Infer with the new version of facebook-clang-plugins. Running make from top level of Infer repository will do that. Sometimes there may be compilation errors due to .atd file changes --they need to be fixed.
    4. Use newly-exported information in the frontend as you please.

    Tips & Tricks

    • To view the AST in a human readable version, Infer can generate .bdump files: infer -g -- clang -c example.cpp && sh example.cpp.ast.sh. Then open example.cpp.ast.bdump.
    • To inspect the AST visually: clang -c example.cpp -Xclang -ast-dump. It doesn't include all the information that Infer sees, but it's often a good place to start.
    • If running bdump is failing (it happens on huge sources sometimes), there is a way to view it in "Yojson" format. To do that, replace all occurrences of BiniouASTExporter with YojsonASTExporter in the .ast.sh debug script.
    \ No newline at end of file +ClangFrontend (infer.ClangFrontend)

    Clang Frontend

    Translates code that Clang understands into Infer's intermediate representation language IR.Sil.

    All modules: ClangFrontend

    Capturing source files

    Start at ClangFrontend.Capture for how Infer uses Clang to parse source files, using our Clang plugin. For more information on our clang plugin itself, refer to the relevant documentation in facebook-clang-plugins:

    Quick guide to changing the AST format

    1. Create a simple example (example.cpp) source file with construct that needs to be exported. The smaller the better.
    2. Export the extra information by changing the code in libtooling/ASTExporter.h. For more information, refer to the ATD_GUIDELINES.
    3. Compile Infer with the new version of facebook-clang-plugins. Running make from top level of Infer repository will do that. Sometimes there may be compilation errors due to .atd file changes --they need to be fixed.
    4. Use newly-exported information in the frontend as you please.

    Tips & Tricks

    • To view the AST in a human readable version, Infer can generate .bdump files: infer -g -- clang -c example.cpp && sh example.cpp.ast.sh. Then open example.cpp.ast.bdump.
    • To inspect the AST visually: clang -c example.cpp -Xclang -ast-dump. It doesn't include all the information that Infer sees, but it's often a good place to start.
    • If running bdump is failing (it happens on huge sources sometimes), there is a way to view it in "Yojson" format. To do that, replace all occurrences of BiniouASTExporter with YojsonASTExporter in the .ast.sh debug script.
    diff --git a/website/static/odoc/next/infer/ClangFrontend/AstToRangeMap/index.html b/website/static/odoc/next/infer/ClangFrontend/AstToRangeMap/index.html index f33b0607780..9a2ee7c1871 100644 --- a/website/static/odoc/next/infer/ClangFrontend/AstToRangeMap/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/AstToRangeMap/index.html @@ -1,6 +1,6 @@ -AstToRangeMap (infer.ClangFrontend.AstToRangeMap)

    Module ClangFrontend.AstToRangeMap

    val process_ast : +AstToRangeMap (infer.ClangFrontend.AstToRangeMap)

    Module ClangFrontend.AstToRangeMap

    \ No newline at end of file + IR.Procname.Map.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/Ast_expressions/index.html b/website/static/odoc/next/infer/ClangFrontend/Ast_expressions/index.html index bdbfeaecb86..b992f6a664b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/Ast_expressions/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/Ast_expressions/index.html @@ -1,15 +1,15 @@ -Ast_expressions (infer.ClangFrontend.Ast_expressions)

    Module ClangFrontend.Ast_expressions

    This module creates extra ast constructs that are needed for the translation

    val create_pointer_qual_type : - ?quals:IR.Typ.type_quals -> +Ast_expressions (infer.ClangFrontend.Ast_expressions)

    Module ClangFrontend.Ast_expressions

    This module creates extra ast constructs that are needed for the translation

    val create_void_type : ATDGenerated.Clang_ast_t.qual_type
    val create_char_star_type : - ?quals:IR.Typ.type_quals -> + ?quals:IR.Typ.type_quals -> unit -> ATDGenerated.Clang_ast_t.qual_type
    val create_class_pointer_qual_type : - ?quals:IR.Typ.type_quals -> + ?quals:IR.Typ.type_quals -> IR.Typ.Name.t -> ATDGenerated.Clang_ast_t.qual_type

    We translate the logical negation of an expression with a conditional !x <=> x?0:1

    \ No newline at end of file + ATDGenerated.Clang_ast_t.stmt

    We translate the logical negation of an expression with a conditional !x <=> x?0:1

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CAddImplicitDeallocImpl/index.html b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitDeallocImpl/index.html index 991876d0a37..38f43328554 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CAddImplicitDeallocImpl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitDeallocImpl/index.html @@ -1,2 +1,2 @@ -CAddImplicitDeallocImpl (infer.ClangFrontend.CAddImplicitDeallocImpl)

    Module ClangFrontend.CAddImplicitDeallocImpl

    val process : IR.Cfg.t -> IR.Tenv.t -> unit

    This models ARC implementation of dealloc, see https://clang.llvm.org/docs/AutomaticReferenceCounting.html#dealloc. Dealloc methods can be added to ObjC classes to free C memory for example, but the deallocation of the ObjC instance variables of the object is done automatically. So here we add this explicitely to Infer: we add calls to dealloc of the ObjC instance variables. Here we assume that every ObjC class has already a dealloc method, because if it doesn't exist we add an empty method in CFrontend_decl.create_and_process_dealloc_objc_impl TODO(T68411500): add calls to dealloc of the superclass.

    \ No newline at end of file +CAddImplicitDeallocImpl (infer.ClangFrontend.CAddImplicitDeallocImpl)

    Module ClangFrontend.CAddImplicitDeallocImpl

    val process : IR.Cfg.t -> IR.Tenv.t -> unit

    This models ARC implementation of dealloc, see https://clang.llvm.org/docs/AutomaticReferenceCounting.html#dealloc. Dealloc methods can be added to ObjC classes to free C memory for example, but the deallocation of the ObjC instance variables of the object is done automatically. So here we add this explicitely to Infer: we add calls to dealloc of the ObjC instance variables. Here we assume that every ObjC class has already a dealloc method, because if it doesn't exist we add an empty method in CFrontend_decl.create_and_process_dealloc_objc_impl TODO(T68411500): add calls to dealloc of the superclass.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html index 98f1956816f..33d40c95e8c 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html @@ -1,2 +1,2 @@ -CAddImplicitGettersSetters (infer.ClangFrontend.CAddImplicitGettersSetters)

    Module ClangFrontend.CAddImplicitGettersSetters

    val process : IR.Cfg.t -> IR.Tenv.t -> unit

    In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.

    \ No newline at end of file +CAddImplicitGettersSetters (infer.ClangFrontend.CAddImplicitGettersSetters)

    Module ClangFrontend.CAddImplicitGettersSetters

    val process : IR.Cfg.t -> IR.Tenv.t -> unit

    In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CArithmetic_trans/index.html b/website/static/odoc/next/infer/ClangFrontend/CArithmetic_trans/index.html index 9056b7b2449..a625cbe07c2 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CArithmetic_trans/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CArithmetic_trans/index.html @@ -1,5 +1,5 @@ -CArithmetic_trans (infer.ClangFrontend.CArithmetic_trans)

    Module ClangFrontend.CArithmetic_trans

    Utility module for translating unary, binary, and atomic operations and compound assignments

    val bin_op_to_string : ATDGenerated.Clang_ast_t.binary_operator_info -> string
    val binary_operation_instruction : +CArithmetic_trans (infer.ClangFrontend.CArithmetic_trans)

    Module ClangFrontend.CArithmetic_trans

    Utility module for translating unary, binary, and atomic operations and compound assignments

    val bin_op_to_string : ATDGenerated.Clang_ast_t.binary_operator_info -> string
    val sil_const_plus_one : IR.Exp.t -> IR.Exp.t
    \ No newline at end of file + IR.Exp.t * IR.Sil.instr list
    val sil_const_plus_one : IR.Exp.t -> IR.Exp.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html b/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html index bf4c0ad479f..30c835a91ad 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html @@ -1,5 +1,5 @@ -CAst_utils (infer.ClangFrontend.CAst_utils)

    Module ClangFrontend.CAst_utils

    Functions for transformations of ast nodes

    val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
    val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
    val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
    val get_decl : +CAst_utils (infer.ClangFrontend.CAst_utils)

    Module ClangFrontend.CAst_utils

    Functions for transformations of ast nodes

    val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
    val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
    val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
    val get_decl_opt : ATDGenerated.Clang_ast_t.pointer option -> @@ -25,7 +25,7 @@ unit
    val get_enum_constant_exp_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option * IR.Exp.t option
    val get_qualified_name : - ?linters_mode:bool -> + ?linters_mode:bool -> ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

    returns sanitized, fully qualified name given name info

    val get_unqualified_name : ATDGenerated.Clang_ast_t.named_decl_info -> string

    returns sanitized unqualified name given name info

    val get_class_name_from_member : ATDGenerated.Clang_ast_t.named_decl_info -> @@ -39,9 +39,9 @@ IR.Tenv.t -> ATDGenerated.Clang_ast_t.qual_type -> IR.Typ.t
    type procname_from_decl = - ?tenv:IR.Tenv.t -> - ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> - ?outer_proc:IR.Procname.t -> + ?tenv:IR.Tenv.t -> + ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> + ?outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> IR.Procname.t
    val qual_type_of_decl_ptr : ATDGenerated.Clang_ast_t.pointer -> @@ -73,10 +73,10 @@ ATDGenerated.Clang_ast_t.decl_ref option
    val get_captured_mode : - lci_capture_this:bool -> - lci_capture_kind: + lci_capture_this:bool -> + lci_capture_kind: [< `LCK_ByCopy | `LCK_ByRef | `LCK_StarThis | `LCK_This | `LCK_VLAType ] -> IR.CapturedVar.capture_mode
    val create_objc_block_name : ATDGenerated.Clang_ast_t.decl_info -> ATDGenerated.Clang_ast_t.block_decl_info -> - string * string
    \ No newline at end of file + string * string
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CContext/CXXTemporarySet/index.html b/website/static/odoc/next/infer/ClangFrontend/CContext/CXXTemporarySet/index.html index e33fe081742..44159664aa8 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CContext/CXXTemporarySet/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CContext/CXXTemporarySet/index.html @@ -1,2 +1,2 @@ -CXXTemporarySet (infer.ClangFrontend.CContext.CXXTemporarySet)

    Module CContext.CXXTemporarySet

    include IStdlib.IStd.Caml.Set.S with type elt = cxx_temporary
    type elt = cxx_temporary
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +CXXTemporarySet (infer.ClangFrontend.CContext.CXXTemporarySet)

    Module CContext.CXXTemporarySet

    include IStdlib.IStd.Caml.Set.S with type elt = cxx_temporary
    type elt = cxx_temporary
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CContext/index.html b/website/static/odoc/next/infer/ClangFrontend/CContext/index.html index a13890939b3..5906be32c85 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CContext/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CContext/index.html @@ -1,5 +1,5 @@ -CContext (infer.ClangFrontend.CContext)

    Module ClangFrontend.CContext

    Contains current class and current method to be translated as well as local variables, and the cfg, and tenv corresponding to the current file.

    module StmtMap = ClangPointers.Map
    type cxx_temporary = {
    1. pvar : IR.Pvar.t;
    2. typ : IR.Typ.t;
    3. qual_type : ATDGenerated.Clang_ast_t.qual_type;
    4. marker : (IR.Pvar.t * IR.Sil.if_kind) option;
      (*

      Some (m, _) means that creating pvar should also set m to 1 so that we know whether pvar needs to be destroyed after the current full-expression

      *)
    }
    type var_to_destroy =
    1. | VarDecl of ATDGenerated.Clang_ast_t.decl_info +CContext (infer.ClangFrontend.CContext)

      Module ClangFrontend.CContext

      Contains current class and current method to be translated as well as local variables, and the cfg, and tenv corresponding to the current file.

      module StmtMap = ClangPointers.Map
      type cxx_temporary = {
      1. pvar : IR.Pvar.t;
      2. typ : IR.Typ.t;
      3. qual_type : ATDGenerated.Clang_ast_t.qual_type;
      4. marker : (IR.Pvar.t * IR.Sil.if_kind) option;
        (*

        Some (m, _) means that creating pvar should also set m to 1 so that we know whether pvar needs to be destroyed after the current full-expression

        *)
      }
      val pp_var_to_destroy : Stdlib.Format.formatter -> var_to_destroy -> unit
      type curr_class =
      1. | ContextClsDeclPtr of int
      2. | ContextNoCls
      val compare_curr_class : curr_class -> curr_class -> int
      type str_node_map = (string, IR.Procdesc.Node.t) IStdlib.IStd.Caml.Hashtbl.t
      type t = {
      1. translation_unit_context : CFrontend_config.translation_unit_context;
      2. tenv : IR.Tenv.t;
      3. cfg : IR.Cfg.t;
      4. procdesc : IR.Procdesc.t;
      5. immediate_curr_class : curr_class;
      6. return_param_typ : IR.Typ.t option;
      7. outer_context : t option;
        (*

        in case of objc blocks, the context of the method containing the block

        *)
      8. mutable blocks_static_vars : (IR.Pvar.t * IR.Typ.t) list IR.Procname.Map.t;
      9. label_map : str_node_map;
      10. vars_to_destroy : var_to_destroy list StmtMap.t;
        (*

        mapping from a statement to a list of variables, that go out of scope after the end of the statement

        *)
      11. temporary_names : (ATDGenerated.Clang_ast_t.pointer, IR.Pvar.t * IR.Typ.t) @@ -18,4 +18,4 @@ IR.Typ.t option -> t option -> t
      val add_block_static_var : t -> IR.Procname.t -> (IR.Pvar.t * IR.Typ.t) -> unit
      val get_outer_procname : t -> IR.Procname.t
      \ No newline at end of file + IStdlib.PrettyPrintable.PPSet with type elt = cxx_temporary
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CEnum_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/CEnum_decl/index.html index 727d67f235d..571e773a2ed 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CEnum_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CEnum_decl/index.html @@ -1,2 +1,2 @@ -CEnum_decl (infer.ClangFrontend.CEnum_decl)

    Module ClangFrontend.CEnum_decl

    Translate an enumeration declaration by adding it to the tenv and

    translating the code and adding it to a fake procdesc

    \ No newline at end of file +CEnum_decl (infer.ClangFrontend.CEnum_decl)

    Module ClangFrontend.CEnum_decl

    Translate an enumeration declaration by adding it to the tenv and

    translating the code and adding it to a fake procdesc

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CField_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/CField_decl/index.html index 890d230e71a..4f680515130 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CField_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CField_decl/index.html @@ -1,6 +1,5 @@ -CField_decl (infer.ClangFrontend.CField_decl)

    Module ClangFrontend.CField_decl

    Utility module to retrieve fields of structs of classes

    val get_fields : - implements_remodel_class:bool -> +CField_decl (infer.ClangFrontend.CField_decl)

    Module ClangFrontend.CField_decl

    Utility module to retrieve fields of structs of classes

    \ No newline at end of file + field_type list
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend/index.html index b65751e908a..e36e48fabcd 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend/index.html @@ -1,5 +1,5 @@ -CFrontend (infer.ClangFrontend.CFrontend)

    Module ClangFrontend.CFrontend

    val do_source_file : +CFrontend (infer.ClangFrontend.CFrontend)

    Module ClangFrontend.CFrontend

    Translate one file into a cfg. Create a tenv, cg and cfg file for a source file given its ast in json format. Translate the json file into a cfg by adding all the type and class declarations to the tenv, adding all the functions and methods declarations as procdescs to the cfg, and adding the control flow graph of all the code of those functions and methods to the cfg.

    \ No newline at end of file + unit

    Translate one file into a cfg. Create a tenv, cg and cfg file for a source file given its ast in json format. Translate the json file into a cfg by adding all the type and class declarations to the tenv, adding all the functions and methods declarations as procdescs to the cfg, and adding the control flow graph of all the code of those functions and methods to the cfg.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend_config/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend_config/index.html index 1d94e8899d5..f26afa71028 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend_config/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend_config/index.html @@ -1,7 +1,7 @@ -CFrontend_config (infer.ClangFrontend.CFrontend_config)

    Module ClangFrontend.CFrontend_config

    Module that contains constants and global state used in the frontend

    type clang_lang =
    1. | C
    2. | CPP
    3. | ObjC
    4. | ObjCPP
    val compare_clang_lang : clang_lang -> clang_lang -> int
    val equal_clang_lang : clang_lang -> clang_lang -> bool
    type translation_unit_context = {
    1. lang : clang_lang;
    2. source_file : IBase.SourceFile.t;
    3. integer_type_widths : IR.IntegerWidths.t;
    4. is_objc_arc_on : bool;
    }
    type decl_trans_context = [
    1. | `DeclTraversal
    2. | `Translation
    3. | `CppLambdaExprTranslation
    ]

    Constants

    val alloc : string
    val allocWithZone : string
    val anon_field : string
    val arrayWithObjects_count : string
    val dictionaryWithObjects_forKeys_count : string
    val dealloc : string
    val assert_fail : string
    val assert_rtn : string
    val biniou_buffer_size : int
    val builtin_expect : string
    val builtin_memset_chk : string
    val builtin_object_size : string
    val clang_bin : string -> string

    Script to run our own clang. The argument is expected to be either "" or "++".

    val class_method : string
    val cxx_constructor : string
    val fbAssertWithSignalAndLogFunctionHelper : string
    val google_LogMessageFatal : string
    val google_MakeCheckOpString : string
    val handleFailureInFunction : string
    val handleFailureInMethod : string
    val infer : string
    val init : string
    val is_kind_of_class : string
    val malloc : string
    val new_str : string
    val next_object : string
    val nsenumerator_cl : string
    val nsstring_cl : string
    val objc_class : string
    val objc_object : string
    val object_enumerator : string
    val return_param : string
    val self : string
    val string_with_utf8_m : string
    val this : string
    val replace_with_deref_first_arg_attr : string
    val modeled_function_attributes : string list

    Global state

    val enum_map : +CFrontend_config (infer.ClangFrontend.CFrontend_config)

    Module ClangFrontend.CFrontend_config

    Module that contains constants and global state used in the frontend

    type clang_lang =
    1. | C
    2. | CPP
    3. | ObjC
    4. | ObjCPP
    val compare_clang_lang : clang_lang -> clang_lang -> int
    val equal_clang_lang : clang_lang -> clang_lang -> bool
    type translation_unit_context = {
    1. lang : clang_lang;
    2. source_file : IBase.SourceFile.t;
    3. integer_type_widths : IR.IntegerWidths.t;
    4. is_objc_arc_on : bool;
    }
    type decl_trans_context = [
    1. | `DeclTraversal
    2. | `Translation
    3. | `CppLambdaExprTranslation
    ]

    Constants

    val alloc : string
    val allocWithZone : string
    val arrayWithObjects_count : string
    val dictionaryWithObjects_forKeys_count : string
    val dealloc : string
    val assert_fail : string
    val assert_rtn : string
    val biniou_buffer_size : int
    val builtin_expect : string
    val builtin_memset_chk : string
    val builtin_object_size : string
    val clang_bin : string -> string

    Script to run our own clang. The argument is expected to be either "" or "++".

    val class_method : string
    val cxx_constructor : string
    val fbAssertWithSignalAndLogFunctionHelper : string
    val google_LogMessageFatal : string
    val google_MakeCheckOpString : string
    val handleFailureInFunction : string
    val handleFailureInMethod : string
    val infer : string
    val init : string
    val is_kind_of_class : string
    val malloc : string
    val new_str : string
    val next_object : string
    val nsenumerator_cl : string
    val nsstring_cl : string
    val objc_class : string
    val objc_object : string
    val object_enumerator : string
    val return_param : string
    val self : string
    val string_with_utf8_m : string
    val this : string
    val replace_with_deref_first_arg_attr : string
    val modeled_function_attributes : string list

    Global state

    Map from enum constants pointers to their predecesor and their sil value

    val global_translation_unit_decls : ATDGenerated.Clang_ast_t.decl list IStdlib.IStd.ref

    Map from type pointers (clang pointers and types created later by frontend) to sil types Populated during frontend execution when new type is found

    val procedures_attempted : int IStdlib.IStd.ref
    val procedures_failed : int IStdlib.IStd.ref
    val reset_global_state : unit -> unit
    \ No newline at end of file + IR.Typ.desc Clang_ast_extend.TypePointerMap.t IStdlib.IStd.ref

    Map from type pointers (clang pointers and types created later by frontend) to sil types Populated during frontend execution when new type is found

    val procedures_attempted : int IStdlib.IStd.ref
    val procedures_failed : int IStdlib.IStd.ref
    val reset_global_state : unit -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html index dd7085f8819..e688cacf87f 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html @@ -1,8 +1,8 @@ -T (infer.ClangFrontend.CFrontend_decl.CFrontend_decl_funct.T)

    Parameter CFrontend_decl_funct.T

    Translates instructions: (statements and expressions) from the ast into sil

    val instructions_trans : +T (infer.ClangFrontend.CFrontend_decl.CFrontend_decl_funct.T)

    Parameter CFrontend_decl_funct.T

    Translates instructions: (statements and expressions) from the ast into sil

    val instructions_trans : CContext.t -> ATDGenerated.Clang_ast_t.stmt -> CFrontend_config.instr_type list -> IR.Procdesc.Node.t -> - is_destructor_wrapper:bool -> - IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    \ No newline at end of file + is_destructor_wrapper:bool -> + IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/index.html index 3d37ec0a316..8a1ffa1692b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/CFrontend_decl_funct/index.html @@ -1,5 +1,5 @@ -CFrontend_decl_funct (infer.ClangFrontend.CFrontend_decl.CFrontend_decl_funct)

    Module CFrontend_decl.CFrontend_decl_funct

    Parameters

    Signature

    val function_decl : +CFrontend_decl_funct (infer.ClangFrontend.CFrontend_decl.CFrontend_decl_funct)

    Module CFrontend_decl.CFrontend_decl_funct

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/index.html index 6b82d3f913c..e4b6b6bd3db 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend_decl/index.html @@ -1,4 +1,4 @@ -CFrontend_decl (infer.ClangFrontend.CFrontend_decl)

    Module ClangFrontend.CFrontend_decl

    Translate declarations *

    module CFrontend_decl_funct +CFrontend_decl (infer.ClangFrontend.CFrontend_decl)

    Module ClangFrontend.CFrontend_decl

    Translate declarations *

    \ No newline at end of file + CModule_type.CFrontend
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CFrontend_errors/index.html b/website/static/odoc/next/infer/ClangFrontend/CFrontend_errors/index.html index 03a3c06c755..d62f06ed01f 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CFrontend_errors/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CFrontend_errors/index.html @@ -1,16 +1,16 @@ -CFrontend_errors (infer.ClangFrontend.CFrontend_errors)

    Module ClangFrontend.CFrontend_errors

    type exception_details = {
    1. msg : string;
    2. position : IBase.Logging.ocaml_pos;
    3. source_range : ATDGenerated.Clang_ast_t.source_range;
    4. ast_node : string option;
    }
    exception Unimplemented of exception_details
    exception IncorrectAssumption of exception_details
    exception Invalid_declaration
    val unimplemented : +CFrontend_errors (infer.ClangFrontend.CFrontend_errors)

    Module ClangFrontend.CFrontend_errors

    type exception_details = {
    1. msg : string;
    2. position : IBase.Logging.ocaml_pos;
    3. source_range : ATDGenerated.Clang_ast_t.source_range;
    4. ast_node : string option;
    }
    exception Unimplemented of exception_details
    exception IncorrectAssumption of exception_details
    exception Invalid_declaration
    val unimplemented : IBase.Logging.ocaml_pos -> ATDGenerated.Clang_ast_t.source_range -> - ?ast_node:string -> + ?ast_node:string -> ('a, Stdlib.Format.formatter, unit, _) IStdlib.IStd.format4 -> 'a

    Raise Unimplemented. This is caught at the level of translating a method and makes the frontend give up on that method.

    val incorrect_assumption : IBase.Logging.ocaml_pos -> ATDGenerated.Clang_ast_t.source_range -> - ?ast_node:string -> + ?ast_node:string -> ('a, Stdlib.Format.formatter, unit, _) IStdlib.IStd.format4 -> 'a

    Used to mark places in the frontend that incorrectly assume something to be impossible. TODO(t21762295) get rid of all instances of this.

    val protect : - f:(unit -> unit) -> - recover:(unit -> unit) -> - pp_context:(Stdlib.Format.formatter -> unit -> unit) -> - unit

    Catch frontend errors in f to avoid crashing due to bugs in the frontend. Upon error recover is run and pp_context is used to provide more info to the user.

    \ No newline at end of file + f:(unit -> unit) -> + recover:(unit -> unit) -> + pp_context:(Stdlib.Format.formatter -> unit -> unit) -> + unit

    Catch frontend errors in f to avoid crashing due to bugs in the frontend. Upon error recover is run and pp_context is used to provide more info to the user.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CGeneral_utils/index.html b/website/static/odoc/next/infer/ClangFrontend/CGeneral_utils/index.html index 3f98a2b6d32..7d41002720c 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CGeneral_utils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CGeneral_utils/index.html @@ -1,5 +1,5 @@ -CGeneral_utils (infer.ClangFrontend.CGeneral_utils)

    Module ClangFrontend.CGeneral_utils

    General utility functions such as functions on lists

    val add_no_duplicates_fields : +CGeneral_utils (infer.ClangFrontend.CGeneral_utils)

    Module ClangFrontend.CGeneral_utils

    General utility functions such as functions on lists

    val add_no_duplicates_fields : IR.Struct.field -> IR.Struct.field list -> IR.Struct.field list
    val append_no_duplicates_fields : @@ -8,12 +8,8 @@ IR.Struct.field list
    val append_no_duplicates_methods : IR.Procname.t list -> IR.Procname.t list -> - IR.Procname.t list
    val swap_elements_list : 'a list -> 'a list
    val list_range : int -> int -> int list
    val mk_class_field_name : - ?cxx_record_decl_info:ATDGenerated.Clang_ast_t.cxx_record_decl_info -> - IR.Typ.name -> - string -> - IR.Fieldname.t
    val get_var_name_mangled : + IR.Procname.t list
    val swap_elements_list : 'a list -> 'a list
    val list_range : int -> int -> int list
    val mk_class_field_name : IR.Typ.name -> string -> IR.Fieldname.t
    val is_cpp_translation : CFrontend_config.translation_unit_context -> bool

    true if the current language is C++ or ObjC++

    val is_objc_extension : CFrontend_config.translation_unit_context -> bool

    true if the current language is ObjC or ObjC++

    val is_type_pod : ATDGenerated.Clang_ast_t.qual_type -> bool
    \ No newline at end of file + string * IR.Mangled.t
    val is_cpp_translation : CFrontend_config.translation_unit_context -> bool

    true if the current language is C++ or ObjC++

    val is_objc_extension : CFrontend_config.translation_unit_context -> bool

    true if the current language is ObjC or ObjC++

    val is_type_pod : ATDGenerated.Clang_ast_t.qual_type -> bool
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CLocation/index.html b/website/static/odoc/next/infer/ClangFrontend/CLocation/index.html index d04d531478f..557bc1e80b5 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CLocation/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CLocation/index.html @@ -1,14 +1,14 @@ -CLocation (infer.ClangFrontend.CLocation)

    Module ClangFrontend.CLocation

    Module for function to retrieve the location (file, line, etc) of instructions

    val should_translate_lib : +CLocation (infer.ClangFrontend.CLocation)

    Module ClangFrontend.CLocation

    Module for function to retrieve the location (file, line, etc) of instructions

    val should_translate_lib : IBase.SourceFile.t -> ATDGenerated.Clang_ast_t.source_range -> CFrontend_config.decl_trans_context -> - translate_when_used:bool -> + translate_when_used:bool -> bool
    val is_file_block_listed : string -> bool
    val location_of_source_range : - ?pick_location:[ `Start | `End ] -> + ?pick_location:[ `Start | `End ] -> IBase.SourceFile.t -> ATDGenerated.Clang_ast_t.source_range -> IBase.Location.t

    picks the start of the source range by default

    val location_of_stmt_info : @@ -17,4 +17,4 @@ IBase.Location.t
    \ No newline at end of file + IBase.Location.t * IBase.Location.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CMethodProperties/index.html b/website/static/odoc/next/infer/ClangFrontend/CMethodProperties/index.html index 42bf1410b54..15931ac59d1 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CMethodProperties/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CMethodProperties/index.html @@ -1,5 +1,5 @@ -CMethodProperties (infer.ClangFrontend.CMethodProperties)

    Module ClangFrontend.CMethodProperties

    Functions for extracting properties of functions or method declarations

    val is_inside_objc_class_method : ATDGenerated.Clang_ast_t.decl -> bool
    val get_return_type : +CMethodProperties (infer.ClangFrontend.CMethodProperties)

    Module ClangFrontend.CMethodProperties

    Functions for extracting properties of functions or method declarations

    val is_inside_objc_class_method : ATDGenerated.Clang_ast_t.decl -> bool
    val is_no_return : ATDGenerated.Clang_ast_t.decl -> bool
    val is_variadic : ATDGenerated.Clang_ast_t.decl -> bool
    \ No newline at end of file + ATDGenerated.Clang_ast_t.block_captured_variable list
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CMethodSignature/index.html b/website/static/odoc/next/infer/ClangFrontend/CMethodSignature/index.html index 62cf835a468..ec2911e51f1 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CMethodSignature/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CMethodSignature/index.html @@ -1,34 +1,34 @@ -CMethodSignature (infer.ClangFrontend.CMethodSignature)

    Module ClangFrontend.CMethodSignature

    Define the signature of a method consisting of its name, its arguments, return type, location and whether its an instance method.

    type param_type = {
    1. annot : IR.Annot.Item.t;
    2. is_no_escape_block_arg : bool;
    3. is_pointer_to_const : bool;
    4. is_reference : bool;
    5. name : IR.Mangled.t;
    6. typ : IR.Typ.t;
    }
    type t = {
    1. name : IR.Procname.t;
    2. access : ATDGenerated.Clang_ast_t.access_specifier;
    3. class_param : param_type option;
    4. params : param_type list;
    5. ret_type : IR.Typ.t * IR.Annot.Item.t;
    6. has_added_return_param : bool;
    7. is_ret_type_pod : bool;
    8. is_ret_constexpr : bool;
    9. attributes : ATDGenerated.Clang_ast_t.attribute list;
    10. loc : ATDGenerated.Clang_ast_t.source_range;
    11. method_kind : IR.ClangMethodKind.t;
    12. is_cpp_const_member_fun : bool;
    13. is_cpp_virtual : bool;
    14. is_cpp_copy_assignment : bool;
    15. is_cpp_copy_ctor : bool;
    16. is_cpp_move_ctor : bool;
    17. is_cpp_deleted : bool;
    18. is_cpp_implicit : bool;
    19. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    20. is_no_return : bool;
    21. is_variadic : bool;
    22. pointer_to_parent : ATDGenerated.Clang_ast_t.pointer option;
    23. pointer_to_property_opt : ATDGenerated.Clang_ast_t.pointer option;
    24. return_param_typ : IR.Typ.t option;
    }
    val is_getter : t -> bool
    val is_setter : t -> bool
    val mk : +CMethodSignature (infer.ClangFrontend.CMethodSignature)

    Module ClangFrontend.CMethodSignature

    Define the signature of a method consisting of its name, its arguments, return type, location and whether its an instance method.

    type param_type = {
    1. annot : IR.Annot.Item.t;
    2. is_no_escape_block_arg : bool;
    3. is_pointer_to_const : bool;
    4. is_reference : bool;
    5. name : IR.Mangled.t;
    6. typ : IR.Typ.t;
    }
    type t = {
    1. name : IR.Procname.t;
    2. access : ATDGenerated.Clang_ast_t.access_specifier;
    3. class_param : param_type option;
    4. params : param_type list;
    5. ret_type : IR.Typ.t * IR.Annot.Item.t;
    6. has_added_return_param : bool;
    7. is_ret_type_pod : bool;
    8. is_ret_constexpr : bool;
    9. attributes : ATDGenerated.Clang_ast_t.attribute list;
    10. loc : ATDGenerated.Clang_ast_t.source_range;
    11. method_kind : IR.ClangMethodKind.t;
    12. is_cpp_const_member_fun : bool;
    13. is_cpp_virtual : bool;
    14. is_cpp_copy_assignment : bool;
    15. is_cpp_copy_ctor : bool;
    16. is_cpp_move_ctor : bool;
    17. is_cpp_deleted : bool;
    18. is_cpp_implicit : bool;
    19. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    20. is_no_return : bool;
    21. is_variadic : bool;
    22. pointer_to_parent : ATDGenerated.Clang_ast_t.pointer option;
    23. pointer_to_property_opt : ATDGenerated.Clang_ast_t.pointer option;
    24. return_param_typ : IR.Typ.t option;
    }
    val is_getter : t -> bool
    val is_setter : t -> bool
    val mk : IR.Procname.t -> param_type option -> param_type list -> (IR.Typ.t * IR.Annot.Item.t) -> - ?has_added_return_param:bool -> - ?is_ret_type_pod:bool -> - is_ret_constexpr:bool -> + ?has_added_return_param:bool -> + ?is_ret_type_pod:bool -> + is_ret_constexpr:bool -> ATDGenerated.Clang_ast_t.attribute list -> ATDGenerated.Clang_ast_t.source_range -> IR.ClangMethodKind.t -> - ?is_cpp_const_member_fun:bool -> - ?is_cpp_virtual:bool -> - ?is_cpp_copy_assignment:bool -> - ?is_cpp_copy_ctor:bool -> - ?is_cpp_move_ctor:bool -> - ?is_cpp_deleted:bool -> - ?is_cpp_implicit:bool -> - ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> - ?is_no_return:bool -> - ?is_variadic:bool -> + ?is_cpp_const_member_fun:bool -> + ?is_cpp_virtual:bool -> + ?is_cpp_copy_assignment:bool -> + ?is_cpp_copy_ctor:bool -> + ?is_cpp_move_ctor:bool -> + ?is_cpp_deleted:bool -> + ?is_cpp_implicit:bool -> + ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> + ?is_no_return:bool -> + ?is_variadic:bool -> ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.pointer option -> IR.Typ.t option -> ATDGenerated.Clang_ast_t.access_specifier -> t
    val pp : Stdlib.Format.formatter -> t -> unit
    val mk_param_type : - ?is_pointer_to_const:bool -> - ?is_reference:bool -> - ?annot:IR.Annot.Item.t -> - ?is_no_escape_block_arg:bool -> + ?is_pointer_to_const:bool -> + ?is_reference:bool -> + ?annot:IR.Annot.Item.t -> + ?is_no_escape_block_arg:bool -> IR.Mangled.t -> IR.Typ.t -> - param_type
    \ No newline at end of file + param_type
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CMethod_trans/index.html b/website/static/odoc/next/infer/ClangFrontend/CMethod_trans/index.html index 9b76b10909c..cd3eed8a4b2 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CMethod_trans/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CMethod_trans/index.html @@ -1,14 +1,14 @@ -CMethod_trans (infer.ClangFrontend.CMethod_trans)

    Module ClangFrontend.CMethod_trans

    Methods for creating a procdesc from a method or function declaration and for resolving a method call and finding the right callee

    type method_call_type =
    1. | MCVirtual
    2. | MCNoVirtual
    3. | MCStatic

    When the methoc call is MCStatic, means that it is a class method. When it is MCVirtual, it means that it is an instance method and that the method to be called will be determined at runtime. If it is MCNoVirtual it means that it is an instance method but that the method to be called will be determined at compile time

    val compare_method_call_type : method_call_type -> method_call_type -> int
    val equal_method_call_type : method_call_type -> method_call_type -> bool
    val should_create_procdesc : +CMethod_trans (infer.ClangFrontend.CMethod_trans)

    Module ClangFrontend.CMethod_trans

    Methods for creating a procdesc from a method or function declaration and for resolving a method call and finding the right callee

    type method_call_type =
    1. | MCVirtual
    2. | MCNoVirtual
    3. | MCStatic

    When the methoc call is MCStatic, means that it is a class method. When it is MCVirtual, it means that it is an instance method and that the method to be called will be determined at runtime. If it is MCNoVirtual it means that it is an instance method but that the method to be called will be determined at compile time

    val compare_method_call_type : method_call_type -> method_call_type -> int
    val equal_method_call_type : method_call_type -> method_call_type -> bool
    val should_create_procdesc : IR.Cfg.t -> IR.Procname.t -> - defined:bool -> - set_objc_accessor_attr:bool -> + defined:bool -> + set_objc_accessor_attr:bool -> bool

    Return if a procdesc should be added or not. It returns false when the same name of procdesc was added previously. defined represents if the function body is non-empty. set_objc_accessor_attr represents if the function is a getter/setter in Obj-C.

    val create_local_procdesc : - ?loc_instantiated:IBase.Location.t -> - ?set_objc_accessor_attr:bool -> - ?record_lambda_captured:bool -> - ?is_cpp_lambda_call_operator:bool -> + ?loc_instantiated:IBase.Location.t -> + ?set_objc_accessor_attr:bool -> + ?record_lambda_captured:bool -> + ?is_cpp_lambda_call_operator:bool -> CFrontend_config.translation_unit_context -> IR.Cfg.t -> IR.Tenv.t -> @@ -16,8 +16,8 @@ ATDGenerated.Clang_ast_t.stmt list -> (IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> bool
    val create_attributes : - ?loc_instantiated:IBase.Location.t -> - ?set_objc_accessor_attr:bool -> + ?loc_instantiated:IBase.Location.t -> + ?set_objc_accessor_attr:bool -> CFrontend_config.translation_unit_context -> IR.Tenv.t -> CMethodSignature.t -> @@ -44,8 +44,8 @@ CMethodSignature.t option
    val get_method_name_from_clang : CMethodSignature.t option -> IR.Procname.t option
    val create_procdesc_with_pointer : - ?is_cpp_lambda_call_operator:bool -> - ?captured_vars:(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> + ?is_cpp_lambda_call_operator:bool -> + ?captured_vars:(IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> CContext.t -> ATDGenerated.Clang_ast_t.pointer -> IR.Typ.Name.t option -> @@ -56,4 +56,4 @@ (IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> IR.Procname.t
    \ No newline at end of file + ATDGenerated.Clang_ast_t.lambda_capture_info list
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CMockPointerSubst/index.html b/website/static/odoc/next/infer/ClangFrontend/CMockPointerSubst/index.html index 78c8c61b2cc..8fc5c8e38be 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CMockPointerSubst/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CMockPointerSubst/index.html @@ -1,2 +1,2 @@ -CMockPointerSubst (infer.ClangFrontend.CMockPointerSubst)

    Module ClangFrontend.CMockPointerSubst

    val process : IR.Cfg.t -> string -> unit
    \ No newline at end of file +CMockPointerSubst (infer.ClangFrontend.CMockPointerSubst)

    Module ClangFrontend.CMockPointerSubst

    val process : IR.Cfg.t -> string -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CModule_type/index.html b/website/static/odoc/next/infer/ClangFrontend/CModule_type/index.html index a2f169d32cf..fe7d0a3b52b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CModule_type/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CModule_type/index.html @@ -1,2 +1,2 @@ -CModule_type (infer.ClangFrontend.CModule_type)

    Module ClangFrontend.CModule_type

    type block_data = {
    1. captured_vars : (IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list;
    2. context : CContext.t;
    3. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    4. procname : IR.Procname.t;
    5. return_type : ATDGenerated.Clang_ast_t.qual_type;
    }
    module type CTranslation = sig ... end

    Translates instructions: (statements and expressions) from the ast into sil

    module type CFrontend = sig ... end
    \ No newline at end of file +CModule_type (infer.ClangFrontend.CModule_type)

    Module ClangFrontend.CModule_type

    type block_data = {
    1. captured_vars : (IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list;
    2. context : CContext.t;
    3. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    4. procname : IR.Procname.t;
    5. return_type : ATDGenerated.Clang_ast_t.qual_type;
    }
    module type CTranslation = sig ... end

    Translates instructions: (statements and expressions) from the ast into sil

    module type CFrontend = sig ... end
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CFrontend/index.html b/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CFrontend/index.html index ebcc13883fb..77e28dc455d 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CFrontend/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CFrontend/index.html @@ -1,5 +1,5 @@ -CFrontend (infer.ClangFrontend.CModule_type.CFrontend)

    Module type CModule_type.CFrontend

    val function_decl : +CFrontend (infer.ClangFrontend.CModule_type.CFrontend)

    Module type CModule_type.CFrontend

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CTranslation/index.html b/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CTranslation/index.html index d9e6472a4f3..e6d940b1053 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CTranslation/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CModule_type/module-type-CTranslation/index.html @@ -1,8 +1,8 @@ -CTranslation (infer.ClangFrontend.CModule_type.CTranslation)

    Module type CModule_type.CTranslation

    Translates instructions: (statements and expressions) from the ast into sil

    val instructions_trans : +CTranslation (infer.ClangFrontend.CModule_type.CTranslation)

    Module type CModule_type.CTranslation

    Translates instructions: (statements and expressions) from the ast into sil

    val instructions_trans : CContext.t -> ATDGenerated.Clang_ast_t.stmt -> CFrontend_config.instr_type list -> IR.Procdesc.Node.t -> - is_destructor_wrapper:bool -> - IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    \ No newline at end of file + is_destructor_wrapper:bool -> + IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CReplaceDynamicDispatch/index.html b/website/static/odoc/next/infer/ClangFrontend/CReplaceDynamicDispatch/index.html index 8351e8858d4..02f5200ab8c 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CReplaceDynamicDispatch/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CReplaceDynamicDispatch/index.html @@ -1,2 +1,2 @@ -CReplaceDynamicDispatch (infer.ClangFrontend.CReplaceDynamicDispatch)

    Module ClangFrontend.CReplaceDynamicDispatch

    val process : IR.Cfg.t -> unit

    Replace placeholder method call with the actual method

    \ No newline at end of file +CReplaceDynamicDispatch (infer.ClangFrontend.CReplaceDynamicDispatch)

    Module ClangFrontend.CReplaceDynamicDispatch

    val process : IR.Cfg.t -> unit

    Replace placeholder method call with the actual method

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CScope/CXXTemporaries/index.html b/website/static/odoc/next/infer/ClangFrontend/CScope/CXXTemporaries/index.html index e278548ddf5..c49e23bd7b2 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CScope/CXXTemporaries/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CScope/CXXTemporaries/index.html @@ -1,5 +1,5 @@ -CXXTemporaries (infer.ClangFrontend.CScope.CXXTemporaries)

    Module CScope.CXXTemporaries

    val get_destroyable_temporaries : +CXXTemporaries (infer.ClangFrontend.CScope.CXXTemporaries)

    Module CScope.CXXTemporaries

    val get_destroyable_temporaries : CContext.t -> ATDGenerated.Clang_ast_t.stmt list -> - CContext.CXXTemporarySet.t
    \ No newline at end of file + CContext.CXXTemporarySet.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CScope/Variables/index.html b/website/static/odoc/next/infer/ClangFrontend/CScope/Variables/index.html index 3f27d0ccb23..3626d8a9b24 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CScope/Variables/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CScope/Variables/index.html @@ -1,5 +1,5 @@ -Variables (infer.ClangFrontend.CScope.Variables)

    Module CScope.Variables

    val compute_vars_to_destroy_map : +Variables (infer.ClangFrontend.CScope.Variables)

    Module CScope.Variables

    \ No newline at end of file + CContext.var_to_destroy list ClangPointers.Map.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CScope/index.html b/website/static/odoc/next/infer/ClangFrontend/CScope/index.html index 0d89d7543bf..59c690148f6 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CScope/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CScope/index.html @@ -1,2 +1,2 @@ -CScope (infer.ClangFrontend.CScope)

    Module ClangFrontend.CScope

    val breaks_control_flow : ATDGenerated.Clang_ast_t.stmt -> bool
    module Variables : sig ... end
    module CXXTemporaries : sig ... end
    \ No newline at end of file +CScope (infer.ClangFrontend.CScope)

    Module ClangFrontend.CScope

    val breaks_control_flow : ATDGenerated.Clang_ast_t.stmt -> bool
    module Variables : sig ... end
    module CXXTemporaries : sig ... end
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CStructUtils/index.html b/website/static/odoc/next/infer/ClangFrontend/CStructUtils/index.html index 27a2a843e5a..28f9db2ead7 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CStructUtils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CStructUtils/index.html @@ -1,9 +1,9 @@ -CStructUtils (infer.ClangFrontend.CStructUtils)

    Module ClangFrontend.CStructUtils

    val struct_copy : +CStructUtils (infer.ClangFrontend.CStructUtils)

    Module ClangFrontend.CStructUtils

    val struct_copy : IR.Tenv.t -> IBase.Location.t -> IR.Exp.t -> IR.Exp.t -> - typ:IR.Typ.t -> - struct_name:IR.Typ.name -> - IR.Sil.instr list
    \ No newline at end of file + typ:IR.Typ.t -> + struct_name:IR.Typ.name -> + IR.Sil.instr list
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/argument-1-F/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/argument-1-F/index.html index 83994324da7..73bb602c3c2 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/argument-1-F/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/argument-1-F/index.html @@ -1,5 +1,5 @@ -F (infer.ClangFrontend.CTrans.CTrans_funct.F)

    Parameter CTrans_funct.F

    val function_decl : +F (infer.ClangFrontend.CTrans.CTrans_funct.F)

    Parameter CTrans_funct.F

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/index.html index b7db4ad898f..cd17008841b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans/CTrans_funct/index.html @@ -1,8 +1,8 @@ -CTrans_funct (infer.ClangFrontend.CTrans.CTrans_funct)

    Module CTrans.CTrans_funct

    Translates instructions: (statements and expressions) from the ast into sil

    Parameters

    Signature

    val instructions_trans : +CTrans_funct (infer.ClangFrontend.CTrans.CTrans_funct)

    Module CTrans.CTrans_funct

    Translates instructions: (statements and expressions) from the ast into sil

    Parameters

    Signature

    val instructions_trans : CContext.t -> ATDGenerated.Clang_ast_t.stmt -> CFrontend_config.instr_type list -> IR.Procdesc.Node.t -> - is_destructor_wrapper:bool -> - IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    \ No newline at end of file + is_destructor_wrapper:bool -> + IR.Procdesc.Node.t list

    It receives the context, a list of statements from clang ast, list of custom statments to be added before clang statements and the exit node and it returns a list of cfg nodes that represent the translation of the stmts into sil.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans/index.html index afaf023f390..ced7d14988f 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans/index.html @@ -1,2 +1,2 @@ -CTrans (infer.ClangFrontend.CTrans)

    Module ClangFrontend.CTrans

    Translates instructions: (statements and expressions) from the ast into sil

    \ No newline at end of file +CTrans (infer.ClangFrontend.CTrans)

    Module ClangFrontend.CTrans

    Translates instructions: (statements and expressions) from the ast into sil

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_models/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_models/index.html index 4fe9cef380f..8c586511f52 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_models/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_models/index.html @@ -1,5 +1,5 @@ -CTrans_models (infer.ClangFrontend.CTrans_models)

    Module ClangFrontend.CTrans_models

    val is_modelled_static_function : string -> bool
    val is_builtin_expect : IR.Procname.t -> bool
    val is_builtin_object_size : IR.Procname.t -> bool
    val is_std_addressof : IR.Procname.t -> bool
    val is_replace_with_deref_first_arg : IR.Procname.t -> bool
    val is_assert_log : IR.Procname.t -> bool
    val is_handleFailureInMethod : string -> bool
    val is_modeled_builtin : string -> bool
    val is_modeled_attribute : string -> bool
    val get_predefined_model_method_signature : +CTrans_models (infer.ClangFrontend.CTrans_models)

    Module ClangFrontend.CTrans_models

    val is_modelled_static_function : string -> bool
    val is_builtin_expect : IR.Procname.t -> bool
    val is_builtin_object_size : IR.Procname.t -> bool
    val is_std_addressof : IR.Procname.t -> bool
    val is_replace_with_deref_first_arg : IR.Procname.t -> bool
    val is_assert_log : IR.Procname.t -> bool
    val is_handleFailureInMethod : string -> bool
    val is_modeled_builtin : string -> bool
    val is_modeled_attribute : string -> bool
    val get_predefined_model_method_signature : IR.Typ.Name.t -> string -> (IR.Typ.Name.t -> @@ -7,4 +7,4 @@ IR.Procname.ObjC_Cpp.kind -> IR.Procname.Parameter.clang_parameter list -> IR.Procname.t) -> - CMethodSignature.t option
    \ No newline at end of file + CMethodSignature.t option
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/GotoLabel/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/GotoLabel/index.html index 606286e4bfe..45918895dc7 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/GotoLabel/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/GotoLabel/index.html @@ -1,6 +1,6 @@ -GotoLabel (infer.ClangFrontend.CTrans_utils.GotoLabel)

    Module CTrans_utils.GotoLabel

    Module for translating goto instructions by keeping a map of labels.

    val find_goto_label : +GotoLabel (infer.ClangFrontend.CTrans_utils.GotoLabel)

    Module CTrans_utils.GotoLabel

    Module for translating goto instructions by keeping a map of labels.

    val find_goto_label : CContext.t -> string -> IBase.Location.t -> - IR.Procdesc.Node.t
    \ No newline at end of file + IR.Procdesc.Node.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Loops/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Loops/index.html index f4f421c2054..c0a6d234e60 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Loops/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Loops/index.html @@ -1,2 +1,2 @@ -Loops (infer.ClangFrontend.CTrans_utils.Loops)

    Module CTrans_utils.Loops

    Module that provides utility functions for translating different types of loops.

    \ No newline at end of file +Loops (infer.ClangFrontend.CTrans_utils.Loops)

    Module CTrans_utils.Loops

    Module that provides utility functions for translating different types of loops.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Nodes/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Nodes/index.html index 2edddd8d6f5..60ec078ac0b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Nodes/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Nodes/index.html @@ -1,10 +1,10 @@ -Nodes (infer.ClangFrontend.CTrans_utils.Nodes)

    Module CTrans_utils.Nodes

    Module for creating cfg nodes and other utility functions related to them.

    val is_binary_assign_op : ATDGenerated.Clang_ast_t.binary_operator_info -> bool
    val create_prune_node : +Nodes (infer.ClangFrontend.CTrans_utils.Nodes)

    Module CTrans_utils.Nodes

    Module for creating cfg nodes and other utility functions related to them.

    val is_binary_assign_op : ATDGenerated.Clang_ast_t.binary_operator_info -> bool
    val create_prune_node : IR.Procdesc.t -> - branch:bool -> - negate_cond:bool -> + branch:bool -> + negate_cond:bool -> IR.Exp.t -> IR.Sil.instr list -> IBase.Location.t -> IR.Sil.if_kind -> - IR.Procdesc.Node.t
    val is_true_prune_node : IR.Procdesc.Node.t -> bool
    \ No newline at end of file + IR.Procdesc.Node.t
    val is_true_prune_node : IR.Procdesc.Node.t -> bool
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/PriorityNode/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/PriorityNode/index.html index c338f45a1bc..9c4d8500a9f 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/PriorityNode/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/PriorityNode/index.html @@ -1,5 +1,5 @@ -PriorityNode (infer.ClangFrontend.CTrans_utils.PriorityNode)

    Module CTrans_utils.PriorityNode

    priority_node is used to enforce some kind of policy for creating nodes in the cfg. Certain elements of the AST _must_ create nodes therefore there is no need for them to use priority_node. Certain elements instead need or need not to create a node depending of certain factors. When an element of the latter kind wants to create a node it must claim priority first (like taking a lock). priority can be claimes only when it is free. If an element of AST succedes in claiming priority its id (pointer) is recorded in priority. After an element has finished it frees the priority. In general an AST element E checks if an ancestor has claimed priority. If priority is already claimed E does not have to create a node. If priority is free then it means E has to create the node. Then E claims priority and release it afterward.

    type t = priority_node
    val is_priority_free : trans_state -> bool
    val try_claim_priority_node : +PriorityNode (infer.ClangFrontend.CTrans_utils.PriorityNode)

    Module CTrans_utils.PriorityNode

    priority_node is used to enforce some kind of policy for creating nodes in the cfg. Certain elements of the AST _must_ create nodes therefore there is no need for them to use priority_node. Certain elements instead need or need not to create a node depending of certain factors. When an element of the latter kind wants to create a node it must claim priority first (like taking a lock). priority can be claimes only when it is free. If an element of AST succedes in claiming priority its id (pointer) is recorded in priority. After an element has finished it frees the priority. In general an AST element E checks if an ancestor has claimed priority. If priority is already claimed E does not have to create a node. If priority is free then it means E has to create the node. Then E claims priority and release it afterward.

    type t = priority_node
    val is_priority_free : trans_state -> bool
    val try_claim_priority_node : trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_state
    val force_claim_priority_node : @@ -22,7 +22,7 @@ IBase.Location.t -> IR.Procdesc.Node.stmt_nodekind -> ATDGenerated.Clang_ast_t.stmt_info -> - return:(IR.Exp.t * IR.Typ.t) -> + return:(IR.Exp.t * IR.Typ.t) -> trans_result list -> trans_result

    convenience wrapper around compute_controls_to_parent

    val compute_result_to_parent : trans_state -> @@ -35,18 +35,18 @@ IR.Procdesc.Node.stmt_nodekind -> trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> - mk_first_opt: + mk_first_opt: (trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_result option) -> - mk_second:(trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_result) -> - mk_return:(fst:trans_result -> snd:trans_result -> IR.Exp.t * IR.Typ.t) -> + mk_second:(trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_result) -> + mk_return:(fst:trans_result -> snd:trans_result -> IR.Exp.t * IR.Typ.t) -> trans_result
    val force_sequential_with_acc : IBase.Location.t -> IR.Procdesc.Node.stmt_nodekind -> trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> - mk_first: + mk_first: (trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_result * 'a) -> - mk_second: + mk_second: ('a -> trans_state -> ATDGenerated.Clang_ast_t.stmt_info -> trans_result) -> - mk_return:(fst:trans_result -> snd:trans_result -> IR.Exp.t * IR.Typ.t) -> - trans_result
    \ No newline at end of file + mk_return:(fst:trans_result -> snd:trans_result -> IR.Exp.t * IR.Typ.t) -> + trans_result
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Self/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Self/index.html index 07edcc1175c..18890a8de27 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Self/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/Self/index.html @@ -1,8 +1,8 @@ -Self (infer.ClangFrontend.CTrans_utils.Self)

    Module CTrans_utils.Self

    This module handles the translation of the variable self which is challenging because self is used both as a variable in instance method calls and also as a type in class method calls.

    val add_self_parameter_for_super_instance : +Self (infer.ClangFrontend.CTrans_utils.Self)

    Module CTrans_utils.Self

    This module handles the translation of the variable self which is challenging because self is used both as a variable in instance method calls and also as a type in class method calls.

    val is_var_self : IR.Pvar.t -> bool -> bool
    \ No newline at end of file + trans_result option
    val is_var_self : IR.Pvar.t -> bool -> bool
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/index.html b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/index.html index 671071526d2..b9d85a7d00a 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CTrans_utils/index.html @@ -1,13 +1,13 @@ -CTrans_utils (infer.ClangFrontend.CTrans_utils)

    Module ClangFrontend.CTrans_utils

    module F = Stdlib.Format

    Utility methods to support the translation of clang ast constructs into sil instructions.

    type continuation = {
    1. break : IR.Procdesc.Node.t list;
    2. continue : IR.Procdesc.Node.t list;
    3. return_temp : bool;
      (*

      true if temps should not be removed in the node but returned to ancestors

      *)
    }
    type priority_node =
    1. | Free
      (*

      no node currently being created

      *)
    2. | Busy of ATDGenerated.Clang_ast_t.pointer
      (*

      the translation of the clang expression or statement at pointer will create a node with the collected instructions from the sub-expressions (see control.instrs

      *)

    Whether we are collecting instructions for a new block in the CFG (Busy) or there are no blocks being created from enclosing translations (Free)

    type trans_state = {
    1. context : CContext.t;
      (*

      global context of the translation

      *)
    2. succ_nodes : IR.Procdesc.Node.t list;
      (*

      successor nodes in the CFG, i.e. instructions that will happen *after* the current expression or statement being translated (note that the CFG is constructed bottom-up, starting from the last instructions)

      *)
    3. continuation : continuation option;
      (*

      current continuation, used for break, continue, and the like

      *)
    4. priority : priority_node;
    5. var_exp_typ : (IR.Exp.t * IR.Typ.t) option;
      (*

      the expression (usually of the form Exp.Lvar pvar) that the enclosing expression or statement is trying to initialize, if any

      *)
    6. opaque_exp : (IR.Exp.t * IR.Typ.t) option;
      (*

      needed for translating OpaqueValueExpr nodes

      *)
    7. is_fst_arg_objc_instance_method_call : bool;
    8. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    }

    The input of the translation constructed from enclosing expressions.

    val pp_trans_state : F.formatter -> trans_state -> unit
    val default_trans_state : CContext.t -> trans_state
    type control = {
    1. root_nodes : IR.Procdesc.Node.t list;
      (*

      Top cfg nodes (root) created by the translation

      *)
    2. leaf_nodes : IR.Procdesc.Node.t list;
      (*

      Bottom cfg nodes (leaf) created by the translate

      *)
    3. instrs : IR.Sil.instr list;
      (*

      Instructions that need to be placed in the current CFG node being constructed, *after* leaf_nodes.

      *)
    4. initd_exps : IR.Exp.t list;
      (*

      list of expressions that are initialized by the instructions

      *)
    5. cxx_temporary_markers_set : IR.Pvar.t list;
      (*

      markers for C++ temporaries that have been set during the translation; used to avoid adding the same marker several times

      *)
    }

    Part of the translation result that is (loosely) related to control flow graph construction. More importantly, this is the part of a trans_result that some internal translation functions work on when constructing a trans_result before the other components of the translation result are available (such as the return expression). This is made into a separate type to make intermediate computations easier to write and easier to typecheck.

    val pp_control : F.formatter -> control -> unit
    type trans_result = {
    1. control : control;
    2. return : IR.Exp.t * IR.Typ.t;
      (*

      value returned by the translated statement

      *)
    3. method_name : IR.Procname.t option;
      (*

      in the specific case of translating a method call in C++, we get the method name called at the same time we get the this object that contains the method. The this instance object is returned as the return field, while the method to call is filled in here. This field is None in all other cases.

      *)
    4. method_signature : CMethodSignature.t option;
      (*

      in the specific case of translating a function call, we get the method signature. This field is None in all other cases.

      *)
    5. is_cpp_call_virtual : bool;
    }

    A translation result. It is returned by the translation function.

    val empty_control : control
    val mk_trans_result : - ?method_name:IR.Procname.t -> - ?method_signature:CMethodSignature.t -> - ?is_cpp_call_virtual:bool -> +CTrans_utils (infer.ClangFrontend.CTrans_utils)

    Module ClangFrontend.CTrans_utils

    module F = Stdlib.Format

    Utility methods to support the translation of clang ast constructs into sil instructions.

    type continuation = {
    1. break : IR.Procdesc.Node.t list;
    2. continue : IR.Procdesc.Node.t list;
    3. return_temp : bool;
      (*

      true if temps should not be removed in the node but returned to ancestors

      *)
    }
    type priority_node =
    1. | Free
      (*

      no node currently being created

      *)
    2. | Busy of ATDGenerated.Clang_ast_t.pointer
      (*

      the translation of the clang expression or statement at pointer will create a node with the collected instructions from the sub-expressions (see control.instrs

      *)

    Whether we are collecting instructions for a new block in the CFG (Busy) or there are no blocks being created from enclosing translations (Free)

    type trans_state = {
    1. context : CContext.t;
      (*

      global context of the translation

      *)
    2. succ_nodes : IR.Procdesc.Node.t list;
      (*

      successor nodes in the CFG, i.e. instructions that will happen *after* the current expression or statement being translated (note that the CFG is constructed bottom-up, starting from the last instructions)

      *)
    3. continuation : continuation option;
      (*

      current continuation, used for break, continue, and the like

      *)
    4. priority : priority_node;
    5. var_exp_typ : (IR.Exp.t * IR.Typ.t) option;
      (*

      the expression (usually of the form Exp.Lvar pvar) that the enclosing expression or statement is trying to initialize, if any

      *)
    6. opaque_exp : (IR.Exp.t * IR.Typ.t) option;
      (*

      needed for translating OpaqueValueExpr nodes

      *)
    7. is_fst_arg_objc_instance_method_call : bool;
    8. block_as_arg_attributes : IR.ProcAttributes.block_as_arg_attributes option;
    }

    The input of the translation constructed from enclosing expressions.

    val pp_trans_state : F.formatter -> trans_state -> unit
    val default_trans_state : CContext.t -> trans_state
    type control = {
    1. root_nodes : IR.Procdesc.Node.t list;
      (*

      Top cfg nodes (root) created by the translation

      *)
    2. leaf_nodes : IR.Procdesc.Node.t list;
      (*

      Bottom cfg nodes (leaf) created by the translate

      *)
    3. instrs : IR.Sil.instr list;
      (*

      Instructions that need to be placed in the current CFG node being constructed, *after* leaf_nodes.

      *)
    4. initd_exps : IR.Exp.t list;
      (*

      list of expressions that are initialized by the instructions

      *)
    5. cxx_temporary_markers_set : IR.Pvar.t list;
      (*

      markers for C++ temporaries that have been set during the translation; used to avoid adding the same marker several times

      *)
    }

    Part of the translation result that is (loosely) related to control flow graph construction. More importantly, this is the part of a trans_result that some internal translation functions work on when constructing a trans_result before the other components of the translation result are available (such as the return expression). This is made into a separate type to make intermediate computations easier to write and easier to typecheck.

    val pp_control : F.formatter -> control -> unit
    type trans_result = {
    1. control : control;
    2. return : IR.Exp.t * IR.Typ.t;
      (*

      value returned by the translated statement

      *)
    3. method_name : IR.Procname.t option;
      (*

      in the specific case of translating a method call in C++, we get the method name called at the same time we get the this object that contains the method. The this instance object is returned as the return field, while the method to call is filled in here. This field is None in all other cases.

      *)
    4. method_signature : CMethodSignature.t option;
      (*

      in the specific case of translating a function call, we get the method signature. This field is None in all other cases.

      *)
    5. is_cpp_call_virtual : bool;
    }

    A translation result. It is returned by the translation function.

    val empty_control : control
    val mk_trans_result : + ?method_name:IR.Procname.t -> + ?method_signature:CMethodSignature.t -> + ?is_cpp_call_virtual:bool -> (IR.Exp.t * IR.Typ.t) -> control -> trans_result
    val undefined_expression : unit -> IR.Exp.t
    val collect_controls : IR.Procdesc.t -> control list -> control

    Collect the results of translating a list of instructions, and link up the nodes created.

    val collect_trans_results : IR.Procdesc.t -> - return:(IR.Exp.t * IR.Typ.t) -> + return:(IR.Exp.t * IR.Typ.t) -> trans_result list -> trans_result
    val is_return_temp : continuation option -> bool
    val mk_cond_continuation : continuation option -> continuation option
    val define_condition_side_effects : (IR.Exp.t * IR.Typ.t) -> @@ -23,12 +23,12 @@ (IR.Exp.t * IR.Typ.t) -> IBase.Location.t -> IR.Sil.instr * IR.Exp.t
    val dereference_value_from_result : - ?strip_pointer:bool -> + ?strip_pointer:bool -> ATDGenerated.Clang_ast_t.source_range -> IBase.Location.t -> trans_result -> trans_result

    Given a trans_result, create a temporary variable with dereferenced value of an expression assigned to it

    val cpp_new_trans : @@ -69,4 +69,4 @@ IR.Exp.t * IR.Typ.t
    val should_remove_first_param : trans_state -> ATDGenerated.Clang_ast_t.stmt -> - IR.Typ.name option

    Return a class name when the first parameter should be removed according to its context, for example, when self or [x class] is given as the first parameter for a class method.

    \ No newline at end of file + IR.Typ.name option

    Return a class name when the first parameter should be removed according to its context, for example, when self or [x class] is given as the first parameter for a class method.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CType/index.html b/website/static/odoc/next/infer/ClangFrontend/CType/index.html index 2d7aefd6982..24ee33b64e1 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CType/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CType/index.html @@ -1,4 +1,4 @@ -CType (infer.ClangFrontend.CType)

    Module ClangFrontend.CType

    Utility module for retrieving types

    val add_pointer_to_typ : IR.Typ.t -> IR.Typ.t
    val objc_classname_of_type : IR.Typ.t -> IR.Typ.Name.t
    val objc_classname_of_desc : IR.Typ.desc -> IR.Typ.Name.t
    val is_class : IR.Typ.t -> bool
    val return_type_of_function_type : +CType (infer.ClangFrontend.CType)

    Module ClangFrontend.CType

    Utility module for retrieving types

    val add_pointer_to_typ : IR.Typ.t -> IR.Typ.t
    val objc_classname_of_type : IR.Typ.t -> IR.Typ.Name.t
    val objc_classname_of_desc : IR.Typ.desc -> IR.Typ.Name.t
    val is_class : IR.Typ.t -> bool
    val is_block_type : ATDGenerated.Clang_ast_t.qual_type -> bool
    val is_reference_type : ATDGenerated.Clang_ast_t.qual_type -> bool
    val is_pointer_to_const : ATDGenerated.Clang_ast_t.qual_type -> bool
    \ No newline at end of file + ATDGenerated.Clang_ast_t.qual_type
    val is_block_type : ATDGenerated.Clang_ast_t.qual_type -> bool
    val is_reference_type : ATDGenerated.Clang_ast_t.qual_type -> bool
    val is_pointer_to_const : ATDGenerated.Clang_ast_t.qual_type -> bool
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/NoAstDecl/index.html b/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/NoAstDecl/index.html index 507382162aa..f6e65f62b02 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/NoAstDecl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/NoAstDecl/index.html @@ -1,5 +1,5 @@ -NoAstDecl (infer.ClangFrontend.CType_decl.CProcname.NoAstDecl)

    Module CProcname.NoAstDecl

    WARNING: functions from this module should not be used if full decl is available in AST

    val c_function_of_string : IR.Tenv.t -> string -> IR.Procname.t
    val cpp_method_of_string : +NoAstDecl (infer.ClangFrontend.CType_decl.CProcname.NoAstDecl)

    Module CProcname.NoAstDecl

    WARNING: functions from this module should not be used if full decl is available in AST

    val c_function_of_string : IR.Tenv.t -> string -> IR.Procname.t
    val cpp_method_of_string : IR.Tenv.t -> IR.Typ.Name.t -> string -> @@ -8,4 +8,4 @@ string -> IR.Procname.ObjC_Cpp.kind -> IR.Procname.Parameter.clang_parameter list -> - IR.Procname.t
    \ No newline at end of file + IR.Procname.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/index.html b/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/index.html index 7db3b05bb7f..3c8100c856d 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CType_decl/CProcname/index.html @@ -1,7 +1,7 @@ -CProcname (infer.ClangFrontend.CType_decl.CProcname)

    Module CType_decl.CProcname

    val from_decl : - ?tenv:IR.Tenv.t -> - ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> - ?outer_proc:IR.Procname.t -> +CProcname (infer.ClangFrontend.CType_decl.CProcname)

    Module CType_decl.CProcname

    val from_decl : + ?tenv:IR.Tenv.t -> + ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> + ?outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> - IR.Procname.t

    Given decl, return its procname. This function should be used for all procedures present in original AST

    module NoAstDecl : sig ... end

    WARNING: functions from this module should not be used if full decl is available in AST

    \ No newline at end of file + IR.Procname.t

    Given decl, return its procname. This function should be used for all procedures present in original AST

    module NoAstDecl : sig ... end

    WARNING: functions from this module should not be used if full decl is available in AST

    diff --git a/website/static/odoc/next/infer/ClangFrontend/CType_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/CType_decl/index.html index e83cfb250bf..a37284a19fe 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CType_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CType_decl/index.html @@ -1,6 +1,6 @@ -CType_decl (infer.ClangFrontend.CType_decl)

    Module ClangFrontend.CType_decl

    module CProcname : sig ... end

    Processes types and record declarations by adding them to the tenv

    val get_record_typename : - ?tenv:IR.Tenv.t -> +CType_decl (infer.ClangFrontend.CType_decl)

    Module ClangFrontend.CType_decl

    module CProcname : sig ... end

    Processes types and record declarations by adding them to the tenv

    val get_record_typename : + ?tenv:IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl -> IR.Typ.Name.t
    val add_types_from_decl_to_tenv : IR.Tenv.t -> @@ -20,19 +20,19 @@ IR.Typ.template_arg list
    val method_signature_of_decl : IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl -> - ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> - ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> + ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> + ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> IR.Procname.t -> CMethodSignature.t
    val method_signature_body_of_decl : IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl -> - ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> - ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> + ?block_return_type:ATDGenerated.Clang_ast_t.qual_type -> + ?block_as_arg_attributes:IR.ProcAttributes.block_as_arg_attributes option -> IR.Procname.t -> CMethodSignature.t * ATDGenerated.Clang_ast_t.stmt option * CFrontend_config.instr_type list
    val should_add_return_param : IR.Typ.t -> bool
    val type_of_captured_var : IR.Tenv.t -> - is_block_inside_objc_class_method:bool -> + is_block_inside_objc_class_method:bool -> ATDGenerated.Clang_ast_t.decl_ref -> - IR.Typ.t option
    \ No newline at end of file + IR.Typ.t option
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CType_to_sil_type/index.html b/website/static/odoc/next/infer/ClangFrontend/CType_to_sil_type/index.html index 779eeb0f87a..ed2effc5ead 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CType_to_sil_type/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CType_to_sil_type/index.html @@ -1,9 +1,9 @@ -CType_to_sil_type (infer.ClangFrontend.CType_to_sil_type)

    Module ClangFrontend.CType_to_sil_type

    val get_builtin_objc_typename : [< `ObjCClass | `ObjCId ] -> IR.Typ.Name.t
    val type_of_builtin_type_kind : - ?is_const:bool -> +CType_to_sil_type (infer.ClangFrontend.CType_to_sil_type)

    Module ClangFrontend.CType_to_sil_type

    val get_builtin_objc_typename : [< `ObjCClass | `ObjCId ] -> IR.Typ.Name.t
    val type_of_builtin_type_kind : + ?is_const:bool -> ATDGenerated.Clang_ast_t.builtin_type_kind -> IR.Typ.t
    \ No newline at end of file + IR.Typ.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CVar_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/CVar_decl/index.html index b856d980fb4..094f8d0b04c 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CVar_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CVar_decl/index.html @@ -1,5 +1,5 @@ -CVar_decl (infer.ClangFrontend.CVar_decl)

    Module ClangFrontend.CVar_decl

    Process variable declarations by saving them as local or global variables.

    val sil_var_of_decl : +CVar_decl (infer.ClangFrontend.CVar_decl)

    Module ClangFrontend.CVar_decl

    Process variable declarations by saving them as local or global variables.

    val mk_temp_sil_var : IR.Procdesc.t -> name:string -> IR.Pvar.t
    val mk_temp_sil_var_for_expr : + (IR.Pvar.t * IR.Typ.t * bool) list
    val mk_temp_sil_var : IR.Procdesc.t -> name:string -> IR.Pvar.t
    val mk_temp_sil_var_for_expr : CContext.t -> - name:string -> - clang_pointer:int -> + name:string -> + clang_pointer:int -> ATDGenerated.Clang_ast_t.expr_info -> IR.Pvar.t * IR.Typ.t
    val materialize_cpp_temporary : CContext.t -> @@ -34,10 +34,10 @@ IR.Pvar.t * IR.Typ.t
    \ No newline at end of file + IR.Pvar.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CViewControllerLifecycle/index.html b/website/static/odoc/next/infer/ClangFrontend/CViewControllerLifecycle/index.html index da23cc7cda5..4aec6738cf6 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CViewControllerLifecycle/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CViewControllerLifecycle/index.html @@ -1,2 +1,2 @@ -CViewControllerLifecycle (infer.ClangFrontend.CViewControllerLifecycle)

    Module ClangFrontend.CViewControllerLifecycle

    val process : IR.Cfg.t -> IR.Tenv.t -> unit
    \ No newline at end of file +CViewControllerLifecycle (infer.ClangFrontend.CViewControllerLifecycle)

    Module ClangFrontend.CViewControllerLifecycle

    val process : IR.Cfg.t -> IR.Tenv.t -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/Capture/index.html b/website/static/odoc/next/infer/ClangFrontend/Capture/index.html index 5a2ee9821ba..2e0fc7d32dc 100644 --- a/website/static/odoc/next/infer/ClangFrontend/Capture/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/Capture/index.html @@ -1,2 +1,2 @@ -Capture (infer.ClangFrontend.Capture)

    Module ClangFrontend.Capture

    val run_clang : ClangCommand.t -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a
    val capture : ClangCommand.t -> unit

    If the command is detected to correspond to a source file, translate it.

    1. Given a compilation command, attach our ASTExporter clang plugin to the command and run it.
    2. Our clang plugin emits the AST (Abstract Syntax Tree) as Biniou data that we deserialize. The AST format is described in ATDGenerated.Clang_ast_t (and its Biniou API is in ATDGenerated.Clang_ast_b).
    3. If enabled, invoke translation to IR.Sil via CFrontend.
    \ No newline at end of file +Capture (infer.ClangFrontend.Capture)

    Module ClangFrontend.Capture

    val run_clang : ClangCommand.t -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a
    val capture : ClangCommand.t -> unit

    If the command is detected to correspond to a source file, translate it.

    1. Given a compilation command, attach our ASTExporter clang plugin to the command and run it.
    2. Our clang plugin emits the AST (Abstract Syntax Tree) as Biniou data that we deserialize. The AST format is described in ATDGenerated.Clang_ast_t (and its Biniou API is in ATDGenerated.Clang_ast_b).
    3. If enabled, invoke translation to IR.Sil via CFrontend.
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangCommand/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangCommand/index.html index 41801aced63..6c644b57ee9 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangCommand/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangCommand/index.html @@ -1,7 +1,7 @@ -ClangCommand (infer.ClangFrontend.ClangCommand)

    Module ClangFrontend.ClangCommand

    type t
    val mk : - is_driver:bool -> +ClangCommand (infer.ClangFrontend.ClangCommand)

    Module ClangFrontend.ClangCommand

    type t
    val mk : + is_driver:bool -> ClangQuotes.style -> - prog:string -> - args:string list -> - t

    mk ~is_driver qs prog args finds the type of command depending on its arguments args. The quoting style of the arguments have to be provided, so that the command may be run later on. Beware that this doesn't look inside argument files. This can be used to create a "clang -### ..." command on which to call command_to_run, but other functions from the module will not work as expected unless the command has been normalized by "clang -### ...".

    val command_to_run : t -> string

    Make a command into a string ready to be passed to a shell to be executed. Fine to call with clang driver commands.

    val can_attach_ast_exporter : t -> bool

    Whether the command is suitable for attaching the AST exporter. Must be called on normalized commands.

    val may_capture : t -> bool

    Whether the command has a chance of triggering compilation steps we can capture.

    val with_plugin_args : t -> t

    Add the arguments needed to attach the facebook-clang-plugins plugin. Must be called on normalized commands.

    val prepend_arg : string -> t -> t
    val append_args : string list -> t -> t
    val get_orig_argv : t -> string list
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file + prog:string -> + args:string list -> + t

    mk ~is_driver qs prog args finds the type of command depending on its arguments args. The quoting style of the arguments have to be provided, so that the command may be run later on. Beware that this doesn't look inside argument files. This can be used to create a "clang -### ..." command on which to call command_to_run, but other functions from the module will not work as expected unless the command has been normalized by "clang -### ...".

    val command_to_run : t -> string

    Make a command into a string ready to be passed to a shell to be executed. Fine to call with clang driver commands.

    val can_attach_ast_exporter : t -> bool

    Whether the command is suitable for attaching the AST exporter. Must be called on normalized commands.

    val may_capture : t -> bool

    Whether the command has a chance of triggering compilation steps we can capture.

    val with_plugin_args : t -> t

    Add the arguments needed to attach the facebook-clang-plugins plugin. Must be called on normalized commands.

    val prepend_arg : string -> t -> t
    val append_args : string list -> t -> t
    val get_orig_argv : t -> string list
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Key/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Key/index.html index 2600b3a336f..41712b10d3c 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Key/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Key/index.html @@ -1,3 +1,3 @@ -Key (infer.ClangFrontend.ClangPointers.Map.Key)

    Module Map.Key

    type t = IStdlib.IStd.Int.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = - Core__Map.Make(IStdlib.IStd.Int).Key.comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    \ No newline at end of file +Key (infer.ClangFrontend.ClangPointers.Map.Key)

    Module Map.Key

    type t = IStdlib.IStd.Int.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = + Core__Map.Make(IStdlib.IStd.Int).Key.comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html index 6170cfc6589..948614597cd 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ClangFrontend.ClangPointers.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    \ No newline at end of file +Key (infer.ClangFrontend.ClangPointers.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/index.html index d80dea176ce..99423aad02e 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_bin_io/index.html @@ -1,2 +1,2 @@ -Provide_bin_io (infer.ClangFrontend.ClangPointers.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    \ No newline at end of file +Provide_bin_io (infer.ClangFrontend.ClangPointers.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/argument-1-Key/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/argument-1-Key/index.html index d1e8f87b753..98648e8327e 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ClangFrontend.ClangPointers.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    \ No newline at end of file +Key (infer.ClangFrontend.ClangPointers.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/index.html index f328c652b3b..e0731846d11 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_hash/index.html @@ -1,4 +1,4 @@ -Provide_hash (infer.ClangFrontend.ClangPointers.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : +Provide_hash (infer.ClangFrontend.ClangPointers.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : 'a Base__Ppx_hash_lib.hash_fold -> - 'a t Base__Ppx_hash_lib.hash_fold
    \ No newline at end of file + 'a t Base__Ppx_hash_lib.hash_fold
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html index c54a95da9cc..a4f3026d176 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ClangFrontend.ClangPointers.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    \ No newline at end of file +Key (infer.ClangFrontend.ClangPointers.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/index.html index 147db13ec5d..03449807c04 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/Provide_of_sexp/index.html @@ -1,2 +1,2 @@ -Provide_of_sexp (infer.ClangFrontend.ClangPointers.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    \ No newline at end of file +Provide_of_sexp (infer.ClangFrontend.ClangPointers.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/index.html index 0bfe63f31b0..1a18edbfaa4 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/Map/index.html @@ -1,10 +1,10 @@ -Map (infer.ClangFrontend.ClangPointers.Map)

    Module ClangPointers.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : +Map (infer.ClangFrontend.ClangPointers.Map)

    Module ClangPointers.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
    val empty : 'a t
    val singleton : Key.t -> 'a -> 'a t
    val map_keys : 'v t -> - f:(Key.t -> Key.t) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : + f:(Key.t -> Key.t) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence : (Key.t * 'a) Base__.Sequence.t -> @@ -12,105 +12,105 @@ (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence_exn : (Key.t * 'a) Base__.Sequence.t -> 'a t
    val of_sequence_multi : (Key.t * 'a) Base__.Sequence.t -> 'a list t
    val of_sequence_fold : (Key.t * 'a) Base__.Sequence.t -> - init:'b -> - f:('b -> 'a -> 'b) -> + init:'b -> + f:('b -> 'a -> 'b) -> 'b t
    val of_sequence_reduce : (Key.t * 'a) Base__.Sequence.t -> - f:('a -> 'a -> 'a) -> + f:('a -> 'a -> 'a) -> 'a t
    val of_iteri : - iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : + iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : (Key.t, Key.comparator_witness) Base.Set.t -> - f:(Key.t -> 'v) -> + f:(Key.t -> 'v) -> 'v t
    val quickcheck_generator : Key.t Core__.Quickcheck.Generator.t -> 'a Core__.Quickcheck.Generator.t -> - 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : + 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : 'a t -> - f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> + f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> Base__Map_intf.Finished_or_unfinished.t
    val iter2 : 'a t -> 'b t -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> - unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> + unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : 'a t -> - init:'acc -> - f: - (key:Key.t -> - data:'a -> + init:'acc -> + f: + (key:Key.t -> + data:'a -> 'acc -> ('acc, 'final) Base__.Container.Continue_or_stop.t) -> - finish:('acc -> 'final) -> - 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : + finish:('acc -> 'final) -> + 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : 'a t -> 'b t -> - init:'c -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> - 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : + init:'c -> + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> + 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : 'a t -> - f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> - 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : - ?key_order:[ `Decreasing | `Increasing ] -> + f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> + 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : + ?key_order:[ `Decreasing | `Increasing ] -> 'a t -> (Key.t * 'a) list
    val merge : 'a t -> 'b t -> - f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> + f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> 'c t
    val merge_skewed : 'v t -> 'v t -> - combine:(key:Key.t -> 'v -> 'v -> 'v) -> + combine:(key:Key.t -> 'v -> 'v -> 'v) -> 'v t
    val symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> + data_equal:('a -> 'a -> bool) -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t Base__.Sequence.t
    val fold_symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> - init:'c -> - f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> - 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : - lower_part:'a t -> - upper_part:'a t -> + data_equal:('a -> 'a -> bool) -> + init:'c -> + f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> + 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : + lower_part:'a t -> + upper_part:'a t -> [ `Ok of 'a t | `Overlapping_key_ranges ]
    val subrange : 'a t -> - lower_bound:Key.t Base__.Maybe_bound.t -> - upper_bound:Key.t Base__.Maybe_bound.t -> + lower_bound:Key.t Base__.Maybe_bound.t -> + upper_bound:Key.t Base__.Maybe_bound.t -> 'a t
    val fold_range_inclusive : 'a t -> - min:Key.t -> - max:Key.t -> - init:'b -> - f:(key:Key.t -> data:'a -> 'b -> 'b) -> - 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : + min:Key.t -> + max:Key.t -> + init:'b -> + f:(key:Key.t -> data:'a -> 'b -> 'b) -> + 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : 'a t -> [ `Greater_or_equal_to | `Greater_than | `Less_or_equal_to | `Less_than ] -> Key.t -> (Key.t * 'a) option
    val nth : 'a t -> int -> (Key.t * 'a) option
    val nth_exn : 'a t -> int -> Key.t * 'a
    val rank : 'a t -> Key.t -> int option
    val to_tree : 'a t -> (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t
    val to_sequence : - ?order:[ `Decreasing_key | `Increasing_key ] -> - ?keys_greater_or_equal_to:Key.t -> - ?keys_less_or_equal_to:Key.t -> + ?order:[ `Decreasing_key | `Increasing_key ] -> + ?keys_greater_or_equal_to:Key.t -> + ?keys_less_or_equal_to:Key.t -> 'a t -> (Key.t * 'a) Base__.Sequence.t
    val binary_search_segmented : 'a t -> - segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> + segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> Base__.Binary_searchable.Which_target_by_segment.t -> (Key.t * 'a) option
    val binary_search_subrange : 'a t -> - compare:(key:Key.t -> data:'a -> 'bound -> int) -> - lower_bound:'bound Base__.Maybe_bound.t -> - upper_bound:'bound Base__.Maybe_bound.t -> + compare:(key:Key.t -> data:'a -> 'bound -> int) -> + lower_bound:'bound Base__.Maybe_bound.t -> + upper_bound:'bound Base__.Maybe_bound.t -> 'a t
    val key_set : 'a t -> (Key.t, Key.comparator_witness) Base.Set.t
    val validate : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> 'a Validate.check -> 'a t Validate.check
    val validatei : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> (Key.t * 'a) Validate.check -> 'a t Validate.check
    val quickcheck_observer : Key.t Core__.Quickcheck.Observer.t -> @@ -118,4 +118,4 @@ 'v t Core__.Quickcheck.Observer.t
    val quickcheck_shrinker : Key.t Core__.Quickcheck.Shrinker.t -> 'v Core__.Quickcheck.Shrinker.t -> - 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    \ No newline at end of file + 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/index.html index 9ebf32444ee..4711043a1a5 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangPointers/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangPointers/index.html @@ -1,3 +1,3 @@ -ClangPointers (infer.ClangFrontend.ClangPointers)

    Module ClangFrontend.ClangPointers

    module Map : sig ... end
    val pointer_decl_table : ATDGenerated.Clang_ast_t.decl IStdlib.IStd.Int.Table.t

    maps decl pointer to its decl record

    val pointer_stmt_table : ATDGenerated.Clang_ast_t.stmt IStdlib.IStd.Int.Table.t

    maps stmt pointer to its stmt record

    val pointer_type_table : - ATDGenerated.Clang_ast_t.c_type IStdlib.IStd.Int.Table.t

    map pointer to its type

    val populate_all_tables : ATDGenerated.Clang_ast_t.decl -> unit

    discover what pointers should point to in the tables above; should be run once for the current toplevel decl

    \ No newline at end of file +ClangPointers (infer.ClangFrontend.ClangPointers)

    Module ClangFrontend.ClangPointers

    module Map : sig ... end
    val pointer_decl_table : ATDGenerated.Clang_ast_t.decl IStdlib.IStd.Int.Table.t

    maps decl pointer to its decl record

    val pointer_stmt_table : ATDGenerated.Clang_ast_t.stmt IStdlib.IStd.Int.Table.t

    maps stmt pointer to its stmt record

    val pointer_type_table : + ATDGenerated.Clang_ast_t.c_type IStdlib.IStd.Int.Table.t

    map pointer to its type

    val populate_all_tables : ATDGenerated.Clang_ast_t.decl -> unit

    discover what pointers should point to in the tables above; should be run once for the current toplevel decl

    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangQuotes/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangQuotes/index.html index 6a068d5cc75..e182fdc33a4 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangQuotes/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangQuotes/index.html @@ -1,2 +1,2 @@ -ClangQuotes (infer.ClangFrontend.ClangQuotes)

    Module ClangFrontend.ClangQuotes

    module for escaping clang arguments on the command line and put them into files

    type style =
    1. | EscapedDoubleQuotes
      (*

      the arguments should be enclosed in "double quotes" and are already escaped

      *)
    2. | SingleQuotes
      (*

      the arguments should be enclosed in 'single quotes' and have to be escaped

      *)
    3. | EscapedNoQuotes
      (*

      the arguments should not be enclosed in quotes and are already escaped

      *)

    quoting style of the arguments

    val quote : style -> string -> string
    val mk_arg_file : string -> style -> string list -> string
    \ No newline at end of file +ClangQuotes (infer.ClangFrontend.ClangQuotes)

    Module ClangFrontend.ClangQuotes

    module for escaping clang arguments on the command line and put them into files

    type style =
    1. | EscapedDoubleQuotes
      (*

      the arguments should be enclosed in "double quotes" and are already escaped

      *)
    2. | SingleQuotes
      (*

      the arguments should be enclosed in 'single quotes' and have to be escaped

      *)
    3. | EscapedNoQuotes
      (*

      the arguments should not be enclosed in quotes and are already escaped

      *)

    quoting style of the arguments

    val quote : style -> string -> string
    val mk_arg_file : string -> style -> string list -> string
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ClangWrapper/index.html b/website/static/odoc/next/infer/ClangFrontend/ClangWrapper/index.html index b8060f597d1..79dba222d1b 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ClangWrapper/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ClangWrapper/index.html @@ -1,2 +1,2 @@ -ClangWrapper (infer.ClangFrontend.ClangWrapper)

    Module ClangFrontend.ClangWrapper

    val exe : prog:string -> args:string list -> unit

    Given a clang command, normalize it via clang -### if needed to get a clear view of what work is being done and which source files are being compiled, if any. Pass the resulting files to compile to Capture to be captured, i.e., parsed and translated into Infer's IR IR.Sil.

    \ No newline at end of file +ClangWrapper (infer.ClangFrontend.ClangWrapper)

    Module ClangFrontend.ClangWrapper

    val exe : prog:string -> args:string list -> unit

    Given a clang command, normalize it via clang -### if needed to get a clear view of what work is being done and which source files are being compiled, if any. Pass the resulting files to compile to Capture to be captured, i.e., parsed and translated into Infer's IR IR.Sil.

    diff --git a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerMap/index.html b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerMap/index.html index 8c57f982aa3..39a3be4ed5e 100644 --- a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerMap/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerMap/index.html @@ -1,6 +1,6 @@ -TypePointerMap (infer.ClangFrontend.Clang_ast_extend.TypePointerMap)

    Module Clang_ast_extend.TypePointerMap

    type key = TypePointerOrd.t
    type !'a t = 'a Stdlib__Map.Make(TypePointerOrd).t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +TypePointerMap (infer.ClangFrontend.Clang_ast_extend.TypePointerMap)

    Module Clang_ast_extend.TypePointerMap

    type key = TypePointerOrd.t
    type !'a t = 'a Stdlib__Map.Make(TypePointerOrd).t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    \ No newline at end of file + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerOrd/index.html b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerOrd/index.html index 169324dcc04..818d6c6afd1 100644 --- a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerOrd/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/TypePointerOrd/index.html @@ -1,8 +1,8 @@ -TypePointerOrd (infer.ClangFrontend.Clang_ast_extend.TypePointerOrd)

    Module Clang_ast_extend.TypePointerOrd

    val compare : +TypePointerOrd (infer.ClangFrontend.Clang_ast_extend.TypePointerOrd)

    Module Clang_ast_extend.TypePointerOrd

    \ No newline at end of file + Core__Int.t
    diff --git a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/index.html b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/index.html index 02ba9f8ac31..fe6e1f5a278 100644 --- a/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/Clang_ast_extend/index.html @@ -1,2 +1,2 @@ -Clang_ast_extend (infer.ClangFrontend.Clang_ast_extend)

    Module ClangFrontend.Clang_ast_extend

    module L = IBase.Logging
    val type_ptr_to_string : ATDGenerated.Clang_ast_types.TypePtr.t -> string
    module TypePointerOrd : sig ... end
    module TypePointerMap : sig ... end
    \ No newline at end of file +Clang_ast_extend (infer.ClangFrontend.Clang_ast_extend)

    Module ClangFrontend.Clang_ast_extend

    module L = IBase.Logging
    val type_ptr_to_string : ATDGenerated.Clang_ast_types.TypePtr.t -> string
    module TypePointerOrd : sig ... end
    module TypePointerMap : sig ... end
    diff --git a/website/static/odoc/next/infer/ClangFrontend/CppLambdaCalls/index.html b/website/static/odoc/next/infer/ClangFrontend/CppLambdaCalls/index.html index 303f2b06622..15b62fcf168 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CppLambdaCalls/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CppLambdaCalls/index.html @@ -1,2 +1,2 @@ -CppLambdaCalls (infer.ClangFrontend.CppLambdaCalls)

    Module ClangFrontend.CppLambdaCalls

    val process : IR.Cfg.t -> unit
    \ No newline at end of file +CppLambdaCalls (infer.ClangFrontend.CppLambdaCalls)

    Module ClangFrontend.CppLambdaCalls

    val process : IR.Cfg.t -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ObjcCategory_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/ObjcCategory_decl/index.html index 90af82b97a5..6f0ea5566cf 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ObjcCategory_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ObjcCategory_decl/index.html @@ -1,5 +1,5 @@ -ObjcCategory_decl (infer.ClangFrontend.ObjcCategory_decl)

    Module ClangFrontend.ObjcCategory_decl

    In this module an ObjC category declaration or implementation is processed. The category

    is saved in the tenv as a struct with the corresponding fields and methods , and the class it belongs to

    val category_decl : +ObjcCategory_decl (infer.ClangFrontend.ObjcCategory_decl)

    Module ClangFrontend.ObjcCategory_decl

    In this module an ObjC category declaration or implementation is processed. The category

    is saved in the tenv as a struct with the corresponding fields and methods , and the class it belongs to

    val get_base_class_name_from_category : ATDGenerated.Clang_ast_t.decl -> - IR.Typ.Name.t option
    \ No newline at end of file + IR.Typ.Name.t option
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ObjcInterface_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/ObjcInterface_decl/index.html index ad1dfed636c..066a69efd8a 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ObjcInterface_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ObjcInterface_decl/index.html @@ -1,5 +1,5 @@ -ObjcInterface_decl (infer.ClangFrontend.ObjcInterface_decl)

    Module ClangFrontend.ObjcInterface_decl

    In this module an ObjC interface declaration is processed. The class is saved in the tenv as a struct with the corresponding fields, potential superclass and list of defined methods

    val interface_declaration : +ObjcInterface_decl (infer.ClangFrontend.ObjcInterface_decl)

    Module ClangFrontend.ObjcInterface_decl

    In this module an ObjC interface declaration is processed. The class is saved in the tenv as a struct with the corresponding fields, potential superclass and list of defined methods

    \ No newline at end of file + IR.Typ.desc
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ObjcMethod_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/ObjcMethod_decl/index.html index e46041ac9d6..2fd6f1e3093 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ObjcMethod_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ObjcMethod_decl/index.html @@ -1,6 +1,6 @@ -ObjcMethod_decl (infer.ClangFrontend.ObjcMethod_decl)

    Module ClangFrontend.ObjcMethod_decl

    val get_methods : +ObjcMethod_decl (infer.ClangFrontend.ObjcMethod_decl)

    Module ClangFrontend.ObjcMethod_decl

    \ No newline at end of file + IR.Procname.t list
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ObjcProtocol_decl/index.html b/website/static/odoc/next/infer/ClangFrontend/ObjcProtocol_decl/index.html index 10e579217e0..e7e805358ee 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ObjcProtocol_decl/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ObjcProtocol_decl/index.html @@ -1,6 +1,6 @@ -ObjcProtocol_decl (infer.ClangFrontend.ObjcProtocol_decl)

    Module ClangFrontend.ObjcProtocol_decl

    In this module an ObjC protocol declaration or implementation is processed. The protocol is saved in the tenv as a struct with the corresponding methods

    val protocol_decl : +ObjcProtocol_decl (infer.ClangFrontend.ObjcProtocol_decl)

    Module ClangFrontend.ObjcProtocol_decl

    In this module an ObjC protocol declaration or implementation is processed. The protocol is saved in the tenv as a struct with the corresponding methods

    \ No newline at end of file + IR.Typ.desc
    diff --git a/website/static/odoc/next/infer/ClangFrontend/ProcessAST/index.html b/website/static/odoc/next/infer/ClangFrontend/ProcessAST/index.html index 942e3a2b870..f2de776fce9 100644 --- a/website/static/odoc/next/infer/ClangFrontend/ProcessAST/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/ProcessAST/index.html @@ -1,5 +1,5 @@ -ProcessAST (infer.ClangFrontend.ProcessAST)

    Module ClangFrontend.ProcessAST

    val process_ast : +ProcessAST (infer.ClangFrontend.ProcessAST)

    Module ClangFrontend.ProcessAST

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/SwitchCase/index.html b/website/static/odoc/next/infer/ClangFrontend/SwitchCase/index.html index 2335f3e81fa..47922d7aee0 100644 --- a/website/static/odoc/next/infer/ClangFrontend/SwitchCase/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/SwitchCase/index.html @@ -1,2 +1,2 @@ -SwitchCase (infer.ClangFrontend.SwitchCase)

    Module ClangFrontend.SwitchCase

    module F = Stdlib.Format
    type condition =
    1. | Case of ATDGenerated.Clang_ast_t.stmt
    2. | Default
    type t = {
    1. condition : condition;
    2. stmt_info : ATDGenerated.Clang_ast_t.stmt_info;
    3. root_nodes : IR.Procdesc.Node.t list;
    }
    val in_switch_body : f:('a -> 'b) -> 'a -> t list * 'b
    val add : t -> unit
    val pp_condition : F.formatter -> condition -> unit
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +SwitchCase (infer.ClangFrontend.SwitchCase)

    Module ClangFrontend.SwitchCase

    module F = Stdlib.Format
    type condition =
    1. | Case of ATDGenerated.Clang_ast_t.stmt
    2. | Default
    type t = {
    1. condition : condition;
    2. stmt_info : ATDGenerated.Clang_ast_t.stmt_info;
    3. root_nodes : IR.Procdesc.Node.t list;
    }
    val in_switch_body : f:('a -> 'b) -> 'a -> t list * 'b
    val add : t -> unit
    val pp_condition : F.formatter -> condition -> unit
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/ClangFrontend/index.html b/website/static/odoc/next/infer/ClangFrontend/index.html index 4477726d9cd..1a5d2842952 100644 --- a/website/static/odoc/next/infer/ClangFrontend/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/index.html @@ -1,2 +1,2 @@ -ClangFrontend (infer.ClangFrontend)

    Module ClangFrontend

    module AstToRangeMap : sig ... end
    module Ast_expressions : sig ... end

    This module creates extra ast constructs that are needed for the translation

    module CAddImplicitDeallocImpl : sig ... end
    module CAddImplicitGettersSetters : sig ... end
    module CArithmetic_trans : sig ... end

    Utility module for translating unary, binary, and atomic operations and compound assignments

    module CAst_utils : sig ... end

    Functions for transformations of ast nodes

    module CContext : sig ... end

    Contains current class and current method to be translated as well as local variables, and the cfg, and tenv corresponding to the current file.

    module CEnum_decl : sig ... end

    Translate an enumeration declaration by adding it to the tenv and

    module CField_decl : sig ... end

    Utility module to retrieve fields of structs of classes

    module CFrontend : sig ... end
    module CFrontend_config : sig ... end

    Module that contains constants and global state used in the frontend

    module CFrontend_decl : sig ... end

    Translate declarations *

    module CFrontend_errors : sig ... end
    module CGeneral_utils : sig ... end

    General utility functions such as functions on lists

    module CLocation : sig ... end

    Module for function to retrieve the location (file, line, etc) of instructions

    module CMethodProperties : sig ... end

    Functions for extracting properties of functions or method declarations

    module CMethodSignature : sig ... end

    Define the signature of a method consisting of its name, its arguments, return type, location and whether its an instance method.

    module CMethod_trans : sig ... end

    Methods for creating a procdesc from a method or function declaration and for resolving a method call and finding the right callee

    module CMockPointerSubst : sig ... end
    module CModule_type : sig ... end
    module CReplaceDynamicDispatch : sig ... end
    module CScope : sig ... end
    module CStructUtils : sig ... end
    module CTrans : sig ... end
    module CTrans_models : sig ... end
    module CTrans_utils : sig ... end
    module CType : sig ... end

    Utility module for retrieving types

    module CType_decl : sig ... end
    module CType_to_sil_type : sig ... end
    module CVar_decl : sig ... end

    Process variable declarations by saving them as local or global variables.

    module CViewControllerLifecycle : sig ... end
    module Capture : sig ... end
    module ClangCommand : sig ... end
    module ClangPointers : sig ... end
    module ClangQuotes : sig ... end

    module for escaping clang arguments on the command line and put them into files

    module ClangWrapper : sig ... end
    module Clang_ast_extend : sig ... end
    module CppLambdaCalls : sig ... end
    module ObjcCategory_decl : sig ... end

    In this module an ObjC category declaration or implementation is processed. The category

    module ObjcInterface_decl : sig ... end

    In this module an ObjC interface declaration is processed. The class is saved in the tenv as a struct with the corresponding fields, potential superclass and list of defined methods

    module ObjcMethod_decl : sig ... end
    module ObjcProtocol_decl : sig ... end

    In this module an ObjC protocol declaration or implementation is processed. The protocol is saved in the tenv as a struct with the corresponding methods

    module ProcessAST : sig ... end
    module SwitchCase : sig ... end
    \ No newline at end of file +ClangFrontend (infer.ClangFrontend)

    Module ClangFrontend

    module AstToRangeMap : sig ... end
    module Ast_expressions : sig ... end

    This module creates extra ast constructs that are needed for the translation

    module CAddImplicitDeallocImpl : sig ... end
    module CAddImplicitGettersSetters : sig ... end
    module CArithmetic_trans : sig ... end

    Utility module for translating unary, binary, and atomic operations and compound assignments

    module CAst_utils : sig ... end

    Functions for transformations of ast nodes

    module CContext : sig ... end

    Contains current class and current method to be translated as well as local variables, and the cfg, and tenv corresponding to the current file.

    module CEnum_decl : sig ... end

    Translate an enumeration declaration by adding it to the tenv and

    module CField_decl : sig ... end

    Utility module to retrieve fields of structs of classes

    module CFrontend : sig ... end
    module CFrontend_config : sig ... end

    Module that contains constants and global state used in the frontend

    module CFrontend_decl : sig ... end

    Translate declarations *

    module CFrontend_errors : sig ... end
    module CGeneral_utils : sig ... end

    General utility functions such as functions on lists

    module CLocation : sig ... end

    Module for function to retrieve the location (file, line, etc) of instructions

    module CMethodProperties : sig ... end

    Functions for extracting properties of functions or method declarations

    module CMethodSignature : sig ... end

    Define the signature of a method consisting of its name, its arguments, return type, location and whether its an instance method.

    module CMethod_trans : sig ... end

    Methods for creating a procdesc from a method or function declaration and for resolving a method call and finding the right callee

    module CMockPointerSubst : sig ... end
    module CModule_type : sig ... end
    module CReplaceDynamicDispatch : sig ... end
    module CScope : sig ... end
    module CStructUtils : sig ... end
    module CTrans : sig ... end
    module CTrans_models : sig ... end
    module CTrans_utils : sig ... end
    module CType : sig ... end

    Utility module for retrieving types

    module CType_decl : sig ... end
    module CType_to_sil_type : sig ... end
    module CVar_decl : sig ... end

    Process variable declarations by saving them as local or global variables.

    module CViewControllerLifecycle : sig ... end
    module Capture : sig ... end
    module ClangCommand : sig ... end
    module ClangPointers : sig ... end
    module ClangQuotes : sig ... end

    module for escaping clang arguments on the command line and put them into files

    module ClangWrapper : sig ... end
    module Clang_ast_extend : sig ... end
    module CppLambdaCalls : sig ... end
    module ObjcCategory_decl : sig ... end

    In this module an ObjC category declaration or implementation is processed. The category

    module ObjcInterface_decl : sig ... end

    In this module an ObjC interface declaration is processed. The class is saved in the tenv as a struct with the corresponding fields, potential superclass and list of defined methods

    module ObjcMethod_decl : sig ... end
    module ObjcProtocol_decl : sig ... end

    In this module an ObjC protocol declaration or implementation is processed. The protocol is saved in the tenv as a struct with the corresponding methods

    module ProcessAST : sig ... end
    module SwitchCase : sig ... end
    diff --git a/website/static/odoc/next/infer/ClangUnitTests/ClangTests/index.html b/website/static/odoc/next/infer/ClangUnitTests/ClangTests/index.html index 8bb89ed3d8b..bb943387468 100644 --- a/website/static/odoc/next/infer/ClangUnitTests/ClangTests/index.html +++ b/website/static/odoc/next/infer/ClangUnitTests/ClangTests/index.html @@ -1,2 +1,2 @@ -ClangTests (infer.ClangUnitTests.ClangTests)

    Module ClangUnitTests.ClangTests

    val tests : OUnit2.test list
    \ No newline at end of file +ClangTests (infer.ClangUnitTests.ClangTests)

    Module ClangUnitTests.ClangTests

    val tests : OUnit2.test list
    diff --git a/website/static/odoc/next/infer/ClangUnitTests/QualifiedCppNameTests/index.html b/website/static/odoc/next/infer/ClangUnitTests/QualifiedCppNameTests/index.html index 44a434810e8..71b874fb7ef 100644 --- a/website/static/odoc/next/infer/ClangUnitTests/QualifiedCppNameTests/index.html +++ b/website/static/odoc/next/infer/ClangUnitTests/QualifiedCppNameTests/index.html @@ -1,2 +1,2 @@ -QualifiedCppNameTests (infer.ClangUnitTests.QualifiedCppNameTests)

    Module ClangUnitTests.QualifiedCppNameTests

    val tests : OUnit2.test
    \ No newline at end of file +QualifiedCppNameTests (infer.ClangUnitTests.QualifiedCppNameTests)

    Module ClangUnitTests.QualifiedCppNameTests

    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/ClangUnitTests/index.html b/website/static/odoc/next/infer/ClangUnitTests/index.html index b7680d86057..4e09fb436f3 100644 --- a/website/static/odoc/next/infer/ClangUnitTests/index.html +++ b/website/static/odoc/next/infer/ClangUnitTests/index.html @@ -1,2 +1,2 @@ -ClangUnitTests (infer.ClangUnitTests)

    Module ClangUnitTests

    module ClangTests : sig ... end
    module QualifiedCppNameTests : sig ... end
    \ No newline at end of file +ClangUnitTests (infer.ClangUnitTests)

    Module ClangUnitTests

    module ClangTests : sig ... end
    module QualifiedCppNameTests : sig ... end
    diff --git a/website/static/odoc/next/infer/Concurrency/AbstractAddress/index.html b/website/static/odoc/next/infer/Concurrency/AbstractAddress/index.html index 62ee7256587..73fb398be69 100644 --- a/website/static/odoc/next/infer/Concurrency/AbstractAddress/index.html +++ b/website/static/odoc/next/infer/Concurrency/AbstractAddress/index.html @@ -1,2 +1,2 @@ -AbstractAddress (infer.Concurrency.AbstractAddress)

    Module Concurrency.AbstractAddress

    module F = Stdlib.Format

    Type meant to represent abstract addresses based on access paths. It currently distinguishes between paths

    • rooted at formal parameters (these are identified by the parameter index and the path without the root variable, though that variable is kept for pretty printing);
    • rooted at global variables;
    • non access-path expressions representing class objects (java only).

    Notably, there are no addresses rooted at locals (because proving aliasing between those is difficult).

    There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Parameter-rooted paths compare equal if their parameter indices, types and lists of accesses are equal.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but parameter-rooted paths need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads.
    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit

    human readable description

    val equal : t -> t -> bool
    val equal_across_threads : IR.Tenv.t -> t -> t -> bool
    val root_class : t -> IR.Typ.name option

    Class of the root variable of the expression representing the address

    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option
    val make : Absint.FormalMap.t -> Absint.HilExp.t -> t option

    convert an expression to a canonical form for an address

    val is_class_object : t -> bool

    is the address a Java class object such as in synchronized(MyClass.class){} or static synchronized void foo()

    type subst

    A substitution from formal position indices to address options. None is used to for actuals that cannot be resolved to an address (eg local-rooted paths or arithmetic expressions).

    val pp_subst : F.formatter -> subst -> unit
    val make_subst : Absint.FormalMap.t -> Absint.HilExp.t list -> subst
    val apply_subst : subst -> t -> t option
    \ No newline at end of file +AbstractAddress (infer.Concurrency.AbstractAddress)

    Module Concurrency.AbstractAddress

    module F = Stdlib.Format

    Type meant to represent abstract addresses based on access paths. It currently distinguishes between paths

    • rooted at formal parameters (these are identified by the parameter index and the path without the root variable, though that variable is kept for pretty printing);
    • rooted at global variables;
    • non access-path expressions representing class objects (java only).

    Notably, there are no addresses rooted at locals (because proving aliasing between those is difficult).

    There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Parameter-rooted paths compare equal if their parameter indices, types and lists of accesses are equal.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but parameter-rooted paths need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads.
    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit

    human readable description

    val equal : t -> t -> bool
    val equal_across_threads : IR.Tenv.t -> t -> t -> bool
    val root_class : t -> IR.Typ.name option

    Class of the root variable of the expression representing the address

    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option
    val make : Absint.FormalMap.t -> Absint.HilExp.t -> t option

    convert an expression to a canonical form for an address

    val is_class_object : t -> bool

    is the address a Java class object such as in synchronized(MyClass.class){} or static synchronized void foo()

    type subst

    A substitution from formal position indices to address options. None is used to for actuals that cannot be resolved to an address (eg local-rooted paths or arithmetic expressions).

    val pp_subst : F.formatter -> subst -> unit
    val make_subst : Absint.FormalMap.t -> Absint.HilExp.t list -> subst
    val apply_subst : subst -> t -> t option
    diff --git a/website/static/odoc/next/infer/Concurrency/ConcurrencyUtils/index.html b/website/static/odoc/next/infer/Concurrency/ConcurrencyUtils/index.html index 11fa49ab735..5e9fee7985f 100644 --- a/website/static/odoc/next/infer/Concurrency/ConcurrencyUtils/index.html +++ b/website/static/odoc/next/infer/Concurrency/ConcurrencyUtils/index.html @@ -1,6 +1,6 @@ -ConcurrencyUtils (infer.Concurrency.ConcurrencyUtils)

    Module Concurrency.ConcurrencyUtils

    val get_java_class_initializer_summary_of : +ConcurrencyUtils (infer.Concurrency.ConcurrencyUtils)

    Module Concurrency.ConcurrencyUtils

    val get_java_class_initializer_summary_of : 'payload Absint.InterproceduralAnalysis.t -> 'payload option
    val get_java_constructor_summaries_of : 'payload Absint.InterproceduralAnalysis.t -> - 'payload list
    \ No newline at end of file + 'payload list
    diff --git a/website/static/odoc/next/infer/Concurrency/IssueAuxData/index.html b/website/static/odoc/next/infer/Concurrency/IssueAuxData/index.html index 5d2bf0bc233..971c753acb4 100644 --- a/website/static/odoc/next/infer/Concurrency/IssueAuxData/index.html +++ b/website/static/odoc/next/infer/Concurrency/IssueAuxData/index.html @@ -1,2 +1,2 @@ -IssueAuxData (infer.Concurrency.IssueAuxData)

    Module Concurrency.IssueAuxData

    type t = IBase.Location.t list
    val encode : t -> string
    val decode : string -> t
    \ No newline at end of file +IssueAuxData (infer.Concurrency.IssueAuxData)

    Module Concurrency.IssueAuxData

    type t = IBase.Location.t list
    val encode : t -> string
    val decode : string -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/Access/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/Access/index.html index 2e815bb74bb..dab81ce1bab 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/Access/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/Access/index.html @@ -1,2 +1,2 @@ -Access (infer.Concurrency.RacerDDomain.Access)

    Module RacerDDomain.Access

    type t =
    1. | Read of {
      1. exp : AccessExpression.t;
      }
      (*

      Field or array read

      *)
    2. | Write of {
      1. exp : AccessExpression.t;
      }
      (*

      Field or array write

      *)
    3. | ContainerRead of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Read of container object

      *)
    4. | ContainerWrite of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Write to container object

      *)
    5. | InterfaceCall of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Call to method of interface not annotated with @ThreadSafe

      *)
    val pp : F.formatter -> t -> unit
    val get_access_exp : t -> AccessExpression.t
    \ No newline at end of file +Access (infer.Concurrency.RacerDDomain.Access)

    Module RacerDDomain.Access

    type t =
    1. | Read of {
      1. exp : AccessExpression.t;
      }
      (*

      Field or array read

      *)
    2. | Write of {
      1. exp : AccessExpression.t;
      }
      (*

      Field or array write

      *)
    3. | ContainerRead of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Read of container object

      *)
    4. | ContainerWrite of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Write to container object

      *)
    5. | InterfaceCall of {
      1. exp : AccessExpression.t;
      2. pname : IR.Procname.t;
      }
      (*

      Call to method of interface not annotated with @ThreadSafe

      *)
    val pp : F.formatter -> t -> unit
    val get_access_exp : t -> AccessExpression.t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessDomain/index.html index 095be6040f8..3d84d95b4d6 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessDomain/index.html @@ -1,2 +1,2 @@ -AccessDomain (infer.Concurrency.RacerDDomain.AccessDomain)

    Module RacerDDomain.AccessDomain

    include IStdlib.PrettyPrintable.PPSet with type elt = AccessSnapshot.t
    include IStdlib.IStd.Caml.Set.S with type elt = AccessSnapshot.t
    type elt = AccessSnapshot.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +AccessDomain (infer.Concurrency.RacerDDomain.AccessDomain)

    Module RacerDDomain.AccessDomain

    include IStdlib.PrettyPrintable.PPSet with type elt = AccessSnapshot.t
    include IStdlib.IStd.Caml.Set.S with type elt = AccessSnapshot.t
    type elt = AccessSnapshot.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/AccessSnapshotElem/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/AccessSnapshotElem/index.html index 6b356a2a9de..a8020c7ced3 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/AccessSnapshotElem/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/AccessSnapshotElem/index.html @@ -1,2 +1,2 @@ -AccessSnapshotElem (infer.Concurrency.RacerDDomain.AccessSnapshot.AccessSnapshotElem)

    Module AccessSnapshot.AccessSnapshotElem

    type t = {
    1. access : Access.t;
    2. thread : ThreadsDomain.t;
    3. lock : bool;
    4. ownership_precondition : OwnershipAbstractValue.t;
    }
    \ No newline at end of file +AccessSnapshotElem (infer.Concurrency.RacerDDomain.AccessSnapshot.AccessSnapshotElem)

    Module AccessSnapshot.AccessSnapshotElem

    type t = {
    1. access : Access.t;
    2. thread : ThreadsDomain.t;
    3. lock : bool;
    4. ownership_precondition : OwnershipAbstractValue.t;
    }
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/FiniteSet/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/FiniteSet/index.html index 640ddde5618..40269aa0e8e 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/FiniteSet/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/FiniteSet/index.html @@ -1,2 +1,2 @@ -FiniteSet (infer.Concurrency.RacerDDomain.AccessSnapshot.FiniteSet)

    Module AccessSnapshot.FiniteSet

    A powerset of traces.

    include Absint.AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> Absint.CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    \ No newline at end of file +FiniteSet (infer.Concurrency.RacerDDomain.AccessSnapshot.FiniteSet)

    Module AccessSnapshot.FiniteSet

    A powerset of traces.

    include Absint.AbstractDomain.FiniteSetS with type elt = t
    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val with_callsite : t -> Absint.CallSite.t -> t

    Push given callsite onto all traces in set. Cf TraceElem.with_callsite

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/index.html index c554b108e07..fde82cf3bbe 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AccessSnapshot/index.html @@ -1,2 +1,2 @@ -AccessSnapshot (infer.Concurrency.RacerDDomain.AccessSnapshot)

    Module RacerDDomain.AccessSnapshot

    snapshot of the relevant state at the time of a heap access: concurrent thread(s), lock(s) held, ownership precondition

    module AccessSnapshotElem : sig ... end
    include Absint.ExplicitTrace.TraceElem with type elem_t = AccessSnapshotElem.t
    type elem_t = AccessSnapshotElem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : Absint.CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Absint.ExplicitTrace.Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val make_loc_trace : ?nesting:int -> t -> Absint.Errlog.loc_trace
    val with_callsite : t -> Absint.CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    A powerset of traces.

    val is_write : t -> bool

    is it a write OR a container write

    val is_container_write : t -> bool
    val get_loc : t -> IBase.Location.t
    val is_unprotected : t -> bool

    return true if not protected by lock, thread, or ownership

    \ No newline at end of file +AccessSnapshot (infer.Concurrency.RacerDDomain.AccessSnapshot)

    Module RacerDDomain.AccessSnapshot

    snapshot of the relevant state at the time of a heap access: concurrent thread(s), lock(s) held, ownership precondition

    module AccessSnapshotElem : sig ... end
    include Absint.ExplicitTrace.TraceElem with type elem_t = AccessSnapshotElem.t
    type elem_t = AccessSnapshotElem.t
    type t = private {
    1. elem : elem_t;
    2. loc : IBase.Location.t;
    3. trace : Absint.CallSite.t list;
    }

    An elem which occured at loc, after the chain of steps (usually calls) in trace.

    Both pp and describe simply call the same function on the trace element.

    include Absint.ExplicitTrace.Element with type t := t
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : Stdlib.Format.formatter -> t -> unit

    Pretty printer used for trace construction; pp is used for debug output.

    val make : elem_t -> IBase.Location.t -> t
    val map : f:(elem_t -> elem_t) -> t -> t
    val make_loc_trace : ?nesting:int -> t -> Absint.Errlog.loc_trace
    val with_callsite : t -> Absint.CallSite.t -> t

    Push given callsite onto trace, extending the call chain by one.

    A powerset of traces.

    val is_write : t -> bool

    is it a write OR a container write

    val is_container_write : t -> bool
    val get_loc : t -> IBase.Location.t
    val is_unprotected : t -> bool

    return true if not protected by lock, thread, or ownership

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/Attribute/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/Attribute/index.html index 36f962913d0..7efcbd436e1 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/Attribute/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/Attribute/index.html @@ -1,2 +1,2 @@ -Attribute (infer.Concurrency.RacerDDomain.Attribute)

    Module RacerDDomain.Attribute

    type t =
    1. | Nothing
    2. | Functional
      (*

      holds a value returned from a callee marked @Functional

      *)
    3. | OnMainThread
      (*

      boolean is true if the current procedure is running on the main thread

      *)
    4. | LockHeld
      (*

      boolean is true if a lock is currently held

      *)
    5. | Synchronized
      (*

      the object is a synchronized data structure

      *)
    \ No newline at end of file +Attribute (infer.Concurrency.RacerDDomain.Attribute)

    Module RacerDDomain.Attribute

    type t =
    1. | Nothing
    2. | Functional
      (*

      holds a value returned from a callee marked @Functional

      *)
    3. | OnMainThread
      (*

      boolean is true if the current procedure is running on the main thread

      *)
    4. | LockHeld
      (*

      boolean is true if a lock is currently held

      *)
    5. | Synchronized
      (*

      the object is a synchronized data structure

      *)
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AttributeMapDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AttributeMapDomain/index.html index 33dd0fa60a1..cbe4ae6ae15 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/AttributeMapDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/AttributeMapDomain/index.html @@ -1,5 +1,5 @@ -AttributeMapDomain (infer.Concurrency.RacerDDomain.AttributeMapDomain)

    Module RacerDDomain.AttributeMapDomain

    include Absint.AbstractDomain.InvertedMapS +AttributeMapDomain (infer.Concurrency.RacerDDomain.AttributeMapDomain)

    Module RacerDDomain.AttributeMapDomain

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool

    find the Attribute.t associated with a given access expression or return Attribute.bottom

    val is_functional : t -> AccessExpression.t -> bool
    val propagate_assignment : AccessExpression.t -> Absint.HilExp.t -> t -> t

    propagate attributes from the leaves to the root of an RHS Hil expression

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool

    find the Attribute.t associated with a given access expression or return Attribute.bottom

    val is_functional : t -> AccessExpression.t -> bool
    val propagate_assignment : AccessExpression.t -> Absint.HilExp.t -> t -> t

    propagate attributes from the leaves to the root of an RHS Hil expression

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/LockDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/LockDomain/index.html index 83b962fe3fc..bccaf5f3d9e 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/LockDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/LockDomain/index.html @@ -1,2 +1,2 @@ -LockDomain (infer.Concurrency.RacerDDomain.LockDomain)

    Module RacerDDomain.LockDomain

    Overapproximation of number of times the lock has been acquired

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val acquire_lock : t -> t

    record acquisition of a lock

    val release_lock : t -> t

    record release of a lock

    \ No newline at end of file +LockDomain (infer.Concurrency.RacerDDomain.LockDomain)

    Module RacerDDomain.LockDomain

    Overapproximation of number of times the lock has been acquired

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val acquire_lock : t -> t

    record acquisition of a lock

    val release_lock : t -> t

    record release of a lock

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/NeverReturns/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/NeverReturns/index.html index e6e036d0df6..0ca9a277a0a 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/NeverReturns/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/NeverReturns/index.html @@ -1,2 +1,2 @@ -NeverReturns (infer.Concurrency.RacerDDomain.NeverReturns)

    Module RacerDDomain.NeverReturns

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +NeverReturns (infer.Concurrency.RacerDDomain.NeverReturns)

    Module RacerDDomain.NeverReturns

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipAbstractValue/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipAbstractValue/index.html index da023050e6a..461c7e1e6d4 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipAbstractValue/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipAbstractValue/index.html @@ -1,2 +1,2 @@ -OwnershipAbstractValue (infer.Concurrency.RacerDDomain.OwnershipAbstractValue)

    Module RacerDDomain.OwnershipAbstractValue

    type t = private
    1. | OwnedIf of IStdlib.IntSet.t
      (*

      Owned if the formals at the given indexes are owned in the caller; unconditionally owned if the set of formals is empty = bottom of the lattice

      *)
    2. | Unowned
      (*

      Unowned value; top of the lattice

      *)
    val owned : t
    val make_owned_if : int -> t
    \ No newline at end of file +OwnershipAbstractValue (infer.Concurrency.RacerDDomain.OwnershipAbstractValue)

    Module RacerDDomain.OwnershipAbstractValue

    type t = private
    1. | OwnedIf of IStdlib.IntSet.t
      (*

      Owned if the formals at the given indexes are owned in the caller; unconditionally owned if the set of formals is empty = bottom of the lattice

      *)
    2. | Unowned
      (*

      Unowned value; top of the lattice

      *)
    val owned : t
    val make_owned_if : int -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipDomain/index.html index 1cebe9a7fd0..4144c2c8fed 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/OwnershipDomain/index.html @@ -1,2 +1,2 @@ -OwnershipDomain (infer.Concurrency.RacerDDomain.OwnershipDomain)

    Module RacerDDomain.OwnershipDomain

    type t
    val empty : t
    val propagate_assignment : AccessExpression.t -> Absint.HilExp.t -> t -> t
    \ No newline at end of file +OwnershipDomain (infer.Concurrency.RacerDDomain.OwnershipDomain)

    Module RacerDDomain.OwnershipDomain

    type t
    val empty : t
    val propagate_assignment : AccessExpression.t -> Absint.HilExp.t -> t -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/ThreadsDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/ThreadsDomain/index.html index e39cb541ede..d0053546097 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/ThreadsDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/ThreadsDomain/index.html @@ -1,2 +1,2 @@ -ThreadsDomain (infer.Concurrency.RacerDDomain.ThreadsDomain)

    Module RacerDDomain.ThreadsDomain

    Abstraction of threads that may run in parallel with the current thread. NoThread < AnyThreadExceptSelf < AnyThread

    type t =
    1. | NoThread
      (*

      No threads can run in parallel with the current thread (concretization: empty set). We assume this by default unless we see evidence to the contrary (annotations, use of locks, etc.)

      *)
    2. | AnyThreadButSelf
      (*

      Current thread can run in parallel with other threads, but not with a copy of itself. (concretization : { t | t \in TIDs && t != t_cur })

      *)
    3. | AnyThread
      (*

      Current thread can run in parallel with any thread, including itself (concretization: set of all TIDs )

      *)
    val can_conflict : t -> t -> bool

    return true if two accesses with these thread values can run concurrently

    val is_any : t -> bool
    \ No newline at end of file +ThreadsDomain (infer.Concurrency.RacerDDomain.ThreadsDomain)

    Module RacerDDomain.ThreadsDomain

    Abstraction of threads that may run in parallel with the current thread. NoThread < AnyThreadExceptSelf < AnyThread

    type t =
    1. | NoThread
      (*

      No threads can run in parallel with the current thread (concretization: empty set). We assume this by default unless we see evidence to the contrary (annotations, use of locks, etc.)

      *)
    2. | AnyThreadButSelf
      (*

      Current thread can run in parallel with other threads, but not with a copy of itself. (concretization : { t | t \in TIDs && t != t_cur })

      *)
    3. | AnyThread
      (*

      Current thread can run in parallel with any thread, including itself (concretization: set of all TIDs )

      *)
    val can_conflict : t -> t -> bool

    return true if two accesses with these thread values can run concurrently

    val is_any : t -> bool
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDDomain/index.html b/website/static/odoc/next/infer/Concurrency/RacerDDomain/index.html index cabb88cff5f..8e98a4146d2 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDDomain/index.html @@ -1,10 +1,10 @@ -RacerDDomain (infer.Concurrency.RacerDDomain)

    Module Concurrency.RacerDDomain

    module AccessExpression = Absint.HilExp.AccessExpression
    module F = Stdlib.Format
    val apply_to_first_actual : +RacerDDomain (infer.Concurrency.RacerDDomain)

    Module Concurrency.RacerDDomain

    module AccessExpression = Absint.HilExp.AccessExpression
    module F = Stdlib.Format
    val apply_to_first_actual : Absint.HilExp.t list -> 'a -> - f:(Absint.HilExp.access_expression -> 'a) -> + f:(Absint.HilExp.access_expression -> 'a) -> 'a
    val pp_exp : F.formatter -> AccessExpression.t -> unit

    language sensitive pretty-printer

    module Access : sig ... end
    module LockDomain : sig ... end

    Overapproximation of number of times the lock has been acquired

    module ThreadsDomain : sig ... end

    Abstraction of threads that may run in parallel with the current thread. NoThread < AnyThreadExceptSelf < AnyThread

    module OwnershipAbstractValue : sig ... end
    module AccessSnapshot : sig ... end

    snapshot of the relevant state at the time of a heap access: concurrent thread(s), lock(s) held, ownership precondition

    module OwnershipDomain : sig ... end
    module Attribute : sig ... end
    module AttributeMapDomain : sig ... end
    type t = {
    1. threads : ThreadsDomain.t;
      (*

      current thread: main, background, or unknown

      *)
    2. locks : LockDomain.t;
      (*

      boolean that is true if a lock must currently be held

      *)
    3. never_returns : NeverReturns.t;
      (*

      boolean which is true if a noreturn call is always reached

      *)
    4. accesses : AccessDomain.t;
      (*

      read and writes accesses performed without ownership permissions

      *)
    5. ownership : OwnershipDomain.t;
      (*

      map of access paths to ownership predicates

      *)
    6. attribute_map : AttributeMapDomain.t;
      (*

      map of access paths to attributes such as owned, functional, ...

      *)
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t
    val add_unannotated_call_access : + Absint.AbstractDomain.FiniteSetS with type elt = AccessSnapshot.t
    module OwnershipDomain : sig ... end
    module Attribute : sig ... end
    module AttributeMapDomain : sig ... end
    type t = {
    1. threads : ThreadsDomain.t;
      (*

      current thread: main, background, or unknown

      *)
    2. locks : LockDomain.t;
      (*

      boolean that is true if a lock must currently be held

      *)
    3. never_returns : NeverReturns.t;
      (*

      boolean which is true if a noreturn call is always reached

      *)
    4. accesses : AccessDomain.t;
      (*

      read and writes accesses performed without ownership permissions

      *)
    5. ownership : OwnershipDomain.t;
      (*

      map of access paths to ownership predicates

      *)
    6. attribute_map : AttributeMapDomain.t;
      (*

      map of access paths to attributes such as owned, functional, ...

      *)
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t
    val add_unannotated_call_access : Absint.FormalMap.t -> IR.Procname.t -> Absint.HilExp.t list -> @@ -14,13 +14,13 @@ IR.Tenv.t -> Absint.FormalMap.t -> IBase.Location.t -> - is_write:bool -> + is_write:bool -> t -> Absint.HilExp.t -> t
    val add_container_access : IR.Tenv.t -> Absint.FormalMap.t -> - is_write:bool -> + is_write:bool -> Absint.AccessPath.base -> IR.Procname.t -> Absint.HilExp.t list -> @@ -34,11 +34,11 @@ t -> t
    val integrate_summary : Absint.FormalMap.t -> - callee_proc_attrs:IR.ProcAttributes.t -> + callee_proc_attrs:IR.ProcAttributes.t -> summary -> Absint.HilExp.access_expression -> IR.Procname.t -> Absint.HilExp.t list -> IBase.Location.t -> t -> - t
    val acquire_lock : t -> t
    val release_lock : t -> t
    val lock_if_true : Absint.HilExp.access_expression -> t -> t
    val branch_never_returns : unit -> t
    \ No newline at end of file + t
    val acquire_lock : t -> t
    val release_lock : t -> t
    val lock_if_true : Absint.HilExp.access_expression -> t -> t
    val branch_never_returns : unit -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDFileAnalysis/index.html b/website/static/odoc/next/infer/Concurrency/RacerDFileAnalysis/index.html index 53c7fdf7cac..bb0836addf5 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDFileAnalysis/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDFileAnalysis/index.html @@ -1,4 +1,4 @@ -RacerDFileAnalysis (infer.Concurrency.RacerDFileAnalysis)

    Module Concurrency.RacerDFileAnalysis

    val analyze : +RacerDFileAnalysis (infer.Concurrency.RacerDFileAnalysis)

    Module Concurrency.RacerDFileAnalysis

    \ No newline at end of file + Absint.IssueLog.t
    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDModels/index.html b/website/static/odoc/next/infer/Concurrency/RacerDModels/index.html index 97221b01887..9b92d7f1384 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDModels/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDModels/index.html @@ -1,5 +1,5 @@ -RacerDModels (infer.Concurrency.RacerDModels)

    Module Concurrency.RacerDModels

    val is_container_read : IR.Tenv.t -> IR.Procname.t -> bool
    val is_container_write : IR.Tenv.t -> IR.Procname.t -> bool

    return Some (access) if this procedure accesses the contents of a container (e.g., Map.get)

    val has_return_annot : (IR.Annot.Item.t -> bool) -> IR.Procname.t -> bool
    val is_functional : IR.Procname.t -> bool
    val acquires_ownership : IR.Procname.t -> IR.Tenv.t -> bool
    val is_box : IR.Procname.t -> bool

    return true if the given procname boxes a primitive type into a reference type

    val is_thread_confined_method : IR.Tenv.t -> IR.Procname.t -> bool

    Methods in @ThreadConfined classes and methods annotated with @ThreadConfined are assumed to all run on the same thread. For the moment we won't warn on accesses resulting from use of such methods at all. In future we should account for races between these methods and methods from completely different classes that don't necessarily run on the same thread as the confined object.

    val should_analyze_proc : IR.Tenv.t -> IR.Procname.t -> bool

    return true if we should compute a summary for the procedure. if this returns false, we won't analyze the procedure or report any warnings on it. note: in the future, we will want to analyze the procedures in all of these cases in order to find more bugs. this is just a temporary measure to avoid obvious false positives

    val get_current_class_and_threadsafe_superclasses : +RacerDModels (infer.Concurrency.RacerDModels)

    Module Concurrency.RacerDModels

    val is_container_read : IR.Tenv.t -> IR.Procname.t -> bool
    val is_container_write : IR.Tenv.t -> IR.Procname.t -> bool

    return Some (access) if this procedure accesses the contents of a container (e.g., Map.get)

    val has_return_annot : (IR.Annot.Item.t -> bool) -> IR.Procname.t -> bool
    val is_functional : IR.Procname.t -> bool
    val acquires_ownership : IR.Procname.t -> IR.Tenv.t -> bool
    val is_box : IR.Procname.t -> bool

    return true if the given procname boxes a primitive type into a reference type

    val is_thread_confined_method : IR.Tenv.t -> IR.Procname.t -> bool

    Methods in @ThreadConfined classes and methods annotated with @ThreadConfined are assumed to all run on the same thread. For the moment we won't warn on accesses resulting from use of such methods at all. In future we should account for races between these methods and methods from completely different classes that don't necessarily run on the same thread as the confined object.

    val should_analyze_proc : IR.Tenv.t -> IR.Procname.t -> bool

    return true if we should compute a summary for the procedure. if this returns false, we won't analyze the procedure or report any warnings on it. note: in the future, we will want to analyze the procedures in all of these cases in order to find more bugs. this is just a temporary measure to avoid obvious false positives

    val get_current_class_and_threadsafe_superclasses : IR.Tenv.t -> IR.Procname.t -> (IR.Typ.name * IR.Typ.name list) option
    val is_thread_safe_method : IR.Procname.t -> IR.Tenv.t -> bool

    returns true if method or overriden method in superclass is @ThreadSafe, @ThreadSafe(enableChecks = true), or is defined as an alias of @ThreadSafe in a .inferconfig file.

    val is_marked_thread_safe : IR.Procname.t -> IR.Tenv.t -> bool
    val is_safe_access : @@ -23,4 +23,4 @@ IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> - bool

    is the given procname a method that wraps a container into a thread-safe wrapper?

    val get_litho_explanation : IR.Tenv.t -> IR.Procname.t -> string option

    Get report explanation specific to Litho class methods, if applicable

    val class_is_ignored_by_racerd : IR.Typ.Name.t -> bool

    Is RacerD configured to ignore the given class?

    val proc_is_ignored_by_racerd : IR.Procname.t -> bool

    Is RacerD configured to ignore the callee's class?

    val is_kotlin_coroutine_generated : IR.Typ.Name.t -> bool

    Is a (Java) class generated by a Kotlin coroutine

    \ No newline at end of file + bool

    is the given procname a method that wraps a container into a thread-safe wrapper?

    val get_litho_explanation : IR.Tenv.t -> IR.Procname.t -> string option

    Get report explanation specific to Litho class methods, if applicable

    val class_is_ignored_by_racerd : IR.Typ.Name.t -> bool

    Is RacerD configured to ignore the given class?

    val proc_is_ignored_by_racerd : IR.Procname.t -> bool

    Is RacerD configured to ignore the callee's class?

    val is_kotlin_coroutine_generated : IR.Typ.Name.t -> bool

    Is a (Java) class generated by a Kotlin coroutine

    diff --git a/website/static/odoc/next/infer/Concurrency/RacerDProcAnalysis/index.html b/website/static/odoc/next/infer/Concurrency/RacerDProcAnalysis/index.html index 9d4c0e13c5d..5905c8fbb25 100644 --- a/website/static/odoc/next/infer/Concurrency/RacerDProcAnalysis/index.html +++ b/website/static/odoc/next/infer/Concurrency/RacerDProcAnalysis/index.html @@ -1,4 +1,4 @@ -RacerDProcAnalysis (infer.Concurrency.RacerDProcAnalysis)

    Module Concurrency.RacerDProcAnalysis

    val analyze : +RacerDProcAnalysis (infer.Concurrency.RacerDProcAnalysis)

    Module Concurrency.RacerDProcAnalysis

    \ No newline at end of file + RacerDDomain.summary option
    diff --git a/website/static/odoc/next/infer/Concurrency/Starvation/ReportMap/index.html b/website/static/odoc/next/infer/Concurrency/Starvation/ReportMap/index.html index 74f7783d431..9c0cd4096f0 100644 --- a/website/static/odoc/next/infer/Concurrency/Starvation/ReportMap/index.html +++ b/website/static/odoc/next/infer/Concurrency/Starvation/ReportMap/index.html @@ -1,2 +1,2 @@ -ReportMap (infer.Concurrency.Starvation.ReportMap)

    Module Starvation.ReportMap

    type t
    val empty : t
    val store_multi_file : t -> unit

    generate and store issue logs for all source files involved in this report map; for use in the whole-program mode only

    \ No newline at end of file +ReportMap (infer.Concurrency.Starvation.ReportMap)

    Module Starvation.ReportMap

    type t
    val empty : t
    val store_multi_file : t -> unit

    generate and store issue logs for all source files involved in this report map; for use in the whole-program mode only

    diff --git a/website/static/odoc/next/infer/Concurrency/Starvation/index.html b/website/static/odoc/next/infer/Concurrency/Starvation/index.html index bd38d7d0b87..6294e1602be 100644 --- a/website/static/odoc/next/infer/Concurrency/Starvation/index.html +++ b/website/static/odoc/next/infer/Concurrency/Starvation/index.html @@ -1,16 +1,16 @@ -Starvation (infer.Concurrency.Starvation)

    Module Concurrency.Starvation

    val analyze_procedure : +Starvation (infer.Concurrency.Starvation)

    Module Concurrency.Starvation

    module ReportMap : sig ... end
    val report_on_pair : - analyze_ondemand:(IR.Procname.t -> StarvationDomain.summary option) -> + analyze_ondemand:(IR.Procname.t -> StarvationDomain.summary option) -> IR.Tenv.t -> IR.ProcAttributes.t -> StarvationDomain.CriticalPair.t -> ReportMap.t -> ReportMap.t
    val report_on_parallel_composition : - should_report_starvation:bool -> + should_report_starvation:bool -> IR.Tenv.t -> IR.ProcAttributes.t -> StarvationDomain.CriticalPair.t -> @@ -18,4 +18,4 @@ IR.Procname.t -> StarvationDomain.CriticalPair.t -> ReportMap.t -> - ReportMap.t
    \ No newline at end of file + ReportMap.t
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/AccessExpressionOrConst/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AccessExpressionOrConst/index.html new file mode 100644 index 00000000000..2ef897a9ae9 --- /dev/null +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AccessExpressionOrConst/index.html @@ -0,0 +1,2 @@ + +AccessExpressionOrConst (infer.Concurrency.StarvationDomain.AccessExpressionOrConst)

    Module StarvationDomain.AccessExpressionOrConst

    type t =
    1. | AE of Absint.HilExp.AccessExpression.t
    2. | Const of IR.Const.t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisition/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisition/index.html index c97ec886f34..f38b9f3482b 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisition/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisition/index.html @@ -1,2 +1,2 @@ -Acquisition (infer.Concurrency.StarvationDomain.Acquisition)

    Module StarvationDomain.Acquisition

    a lock acquisition with location information

    type t = private {
    1. lock : Lock.t;
    2. loc : IBase.Location.t;
    3. procname : IR.Procname.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    \ No newline at end of file +Acquisition (infer.Concurrency.StarvationDomain.Acquisition)

    Module StarvationDomain.Acquisition

    type t = private {
    1. elem : AcquisitionElem.t;
    2. loc : IBase.Location.t;
    3. trace : Absint.CallSite.t list;
    }
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/AcquisitionElem/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AcquisitionElem/index.html new file mode 100644 index 00000000000..468356a74b4 --- /dev/null +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AcquisitionElem/index.html @@ -0,0 +1,2 @@ + +AcquisitionElem (infer.Concurrency.StarvationDomain.AcquisitionElem)

    Module StarvationDomain.AcquisitionElem

    a lock acquisition with location information

    type t = private {
    1. lock : Lock.t;
    2. loc : IBase.Location.t;
    3. procname : IR.Procname.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisitions/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisitions/index.html index 880dc600691..c79e623db2b 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisitions/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Acquisitions/index.html @@ -1,2 +1,2 @@ -Acquisitions (infer.Concurrency.StarvationDomain.Acquisitions)

    Module StarvationDomain.Acquisitions

    A set of lock acquisitions with source locations and procnames.

    include IStdlib.PrettyPrintable.PPSet with type elt = Acquisition.t
    include IStdlib.IStd.Caml.Set.S with type elt = Acquisition.t
    type elt = Acquisition.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val lock_is_held : Lock.t -> t -> bool

    is the given lock in the set

    val lock_is_held_in_other_thread : IR.Tenv.t -> Lock.t -> t -> bool

    is the given lock held, modulo memory abstraction across threads

    \ No newline at end of file +Acquisitions (infer.Concurrency.StarvationDomain.Acquisitions)

    Module StarvationDomain.Acquisitions

    A set of lock acquisitions with source locations and procnames.

    include IStdlib.PrettyPrintable.PPSet with type elt = Acquisition.t
    include IStdlib.IStd.Caml.Set.S with type elt = Acquisition.t
    type elt = Acquisition.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val lock_is_held : Lock.t -> t -> bool

    is the given lock in the set

    val lock_is_held_in_other_thread : IR.Tenv.t -> Lock.t -> t -> bool

    is the given lock held, modulo memory abstraction across threads

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Attribute/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Attribute/index.html index 110dc854231..e00f29c1d49 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Attribute/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Attribute/index.html @@ -1,2 +1,2 @@ -Attribute (infer.Concurrency.StarvationDomain.Attribute)

    Module StarvationDomain.Attribute

    Tracks expression attributes

    type t =
    1. | Nothing
    2. | ThreadGuard
      (*

      is boolean equivalent to whether on UI thread

      *)
    3. | FutureDoneGuard of Absint.HilExp.AccessExpression.t
      (*

      boolean equivalent to Future.isDone()

      *)
    4. | FutureDoneState of bool
      (*

      is a Future ready for non-blocking consumption

      *)
    5. | Runnable of IR.Procname.t
      (*

      is a Runnable/Callable with given "run" procname

      *)
    6. | WorkScheduler of StarvationModels.scheduler_thread_constraint
      (*

      exp is something that schedules work on the given thread

      *)
    7. | Looper of StarvationModels.scheduler_thread_constraint
      (*

      Android looper on given thread

      *)
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +Attribute (infer.Concurrency.StarvationDomain.Attribute)

    Module StarvationDomain.Attribute

    Tracks expression attributes

    type t =
    1. | Nothing
    2. | ThreadGuard
      (*

      is boolean equivalent to whether on UI thread

      *)
    3. | FutureDoneGuard of Absint.HilExp.AccessExpression.t
      (*

      boolean equivalent to Future.isDone()

      *)
    4. | FutureDoneState of bool
      (*

      is a Future ready for non-blocking consumption

      *)
    5. | Runnable of IR.Procname.t
      (*

      is a Runnable/Callable with given "run" procname

      *)
    6. | WorkScheduler of StarvationModels.scheduler_thread_constraint
      (*

      exp is something that schedules work on the given thread

      *)
    7. | Looper of StarvationModels.scheduler_thread_constraint
      (*

      Android looper on given thread

      *)
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/AttributeDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AttributeDomain/index.html index 99de9af7e1c..58e8fea8080 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/AttributeDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/AttributeDomain/index.html @@ -1,5 +1,5 @@ -AttributeDomain (infer.Concurrency.StarvationDomain.AttributeDomain)

    Module StarvationDomain.AttributeDomain

    Tracks all expressions assigned values of Attribute

    include Absint.AbstractDomain.InvertedMapS +AttributeDomain (infer.Concurrency.StarvationDomain.AttributeDomain)

    Module StarvationDomain.AttributeDomain

    Tracks all expressions assigned values of Attribute

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val is_thread_guard : Absint.HilExp.AccessExpression.t -> t -> bool
    val is_future_done_guard : Absint.HilExp.AccessExpression.t -> t -> bool

    does the given expr has attribute FutureDone x return Some x else None

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    val is_thread_guard : Absint.HilExp.AccessExpression.t -> t -> bool
    val is_future_done_guard : Absint.HilExp.AccessExpression.t -> t -> bool

    does the given expr has attribute FutureDone x return Some x else None

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPair/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPair/index.html index 7dc01faf88e..833b7bc86a6 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPair/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPair/index.html @@ -1,15 +1,15 @@ -CriticalPair (infer.Concurrency.StarvationDomain.CriticalPair)

    Module StarvationDomain.CriticalPair

    A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

    type t = private {
    1. elem : CriticalPairElement.t;
    2. loc : IBase.Location.t;
    3. trace : Absint.CallSite.t list;
    }
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val get_loc : t -> IBase.Location.t

    outermost callsite location

    val get_earliest_lock_or_call_loc : - procname:IR.Procname.t -> +CriticalPair (infer.Concurrency.StarvationDomain.CriticalPair)

    Module StarvationDomain.CriticalPair

    A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

    type t = private {
    1. elem : CriticalPairElement.t;
    2. loc : IBase.Location.t;
    3. trace : Absint.CallSite.t list;
    }
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val get_loc : t -> IBase.Location.t

    outermost callsite location

    val get_earliest_lock_or_call_loc : + procname:IR.Procname.t -> t -> IBase.Location.t

    outermost callsite location OR lock acquisition

    val may_deadlock : IR.Tenv.t -> - lhs:t -> - lhs_lock:Lock.t -> - rhs:t -> + lhs:t -> + lhs_lock:Lock.t -> + rhs:t -> Lock.t option

    if two pairs can run in parallel and satisfy the conditions for deadlock, when lhs_lock of lhs is involved return the lock involved from rhs, as LockAcquire may involve more than one

    val make_trace : - ?header:string -> - ?include_acquisitions:bool -> + ?header:string -> + ?include_acquisitions:bool -> IR.Procname.t -> t -> - Absint.Errlog.loc_trace
    val is_uithread : t -> bool

    is pair about an event on the UI thread

    val can_run_in_parallel : t -> t -> bool

    can two pairs describe events on two threads that can run in parallel

    val with_callsite : t -> Absint.CallSite.t -> t
    val apply_caller_thread : ThreadDomain.t -> t -> t option
    \ No newline at end of file + Absint.Errlog.loc_trace
    val is_uithread : t -> bool

    is pair about an event on the UI thread

    val can_run_in_parallel : t -> t -> bool

    can two pairs describe events on two threads that can run in parallel

    val with_callsite : t -> Absint.CallSite.t -> t
    val apply_caller_thread : ThreadDomain.t -> t -> t option
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairElement/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairElement/index.html index 799a28136e7..5aaa98a2ce8 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairElement/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairElement/index.html @@ -1,2 +1,2 @@ -CriticalPairElement (infer.Concurrency.StarvationDomain.CriticalPairElement)

    Module StarvationDomain.CriticalPairElement

    An event and the currently-held locks at the time it occurred.

    type t = private {
    1. acquisitions : Acquisitions.t;
    2. event : Event.t;
    }
    \ No newline at end of file +CriticalPairElement (infer.Concurrency.StarvationDomain.CriticalPairElement)

    Module StarvationDomain.CriticalPairElement

    An event and the currently-held locks at the time it occurred.

    type t = private {
    1. acquisitions : Acquisitions.t;
    2. event : Event.t;
    }
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairs/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairs/index.html index 07bd319d15a..bd1531baf56 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairs/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/CriticalPairs/index.html @@ -1,2 +1,2 @@ -CriticalPairs (infer.Concurrency.StarvationDomain.CriticalPairs)

    Module StarvationDomain.CriticalPairs

    include IStdlib.PrettyPrintable.PPSet with type elt = CriticalPair.t
    include IStdlib.IStd.Caml.Set.S with type elt = CriticalPair.t
    type elt = CriticalPair.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +CriticalPairs (infer.Concurrency.StarvationDomain.CriticalPairs)

    Module StarvationDomain.CriticalPairs

    include IStdlib.PrettyPrintable.PPSet with type elt = CriticalPair.t
    include IStdlib.IStd.Caml.Set.S with type elt = CriticalPair.t
    type elt = CriticalPair.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html index cf01e7280f6..ca7d5263070 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html @@ -1,2 +1,2 @@ -Event (infer.Concurrency.StarvationDomain.Event)

    Module StarvationDomain.Event

    type t =
    1. | Ipc of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    2. | LockAcquire of {
      1. locks : Lock.t list;
      2. thread : ThreadDomain.t;
      }
    3. | MayBlock of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    4. | MonitorWait of {
      1. lock : Lock.t;
      2. thread : ThreadDomain.t;
      }
    5. | MustNotOccurUnderLock of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    6. | RegexOp of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    7. | StrictModeCall of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val describe : F.formatter -> t -> unit
    val get_acquired_locks : t -> Lock.t list
    \ No newline at end of file +Event (infer.Concurrency.StarvationDomain.Event)

    Module StarvationDomain.Event

    type t =
    1. | Ipc of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    2. | LockAcquire of {
      1. locks : Lock.t list;
      2. thread : ThreadDomain.t;
      3. callsite : Absint.CallSite.t option;
      4. call_context : Absint.Errlog.loc_trace;
      }
    3. | MayBlock of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    4. | MonitorWait of {
      1. lock : Lock.t;
      2. thread : ThreadDomain.t;
      }
    5. | MustNotOccurUnderLock of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    6. | RegexOp of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    7. | StrictModeCall of {
      1. callee : IR.Procname.t;
      2. thread : ThreadDomain.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val describe : F.formatter -> t -> unit
    val get_acquired_locks : t -> Lock.t list
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/GuardToLockMap/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/GuardToLockMap/index.html index 5d7a329b82d..a03f26e212a 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/GuardToLockMap/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/GuardToLockMap/index.html @@ -1,2 +1,2 @@ -GuardToLockMap (infer.Concurrency.StarvationDomain.GuardToLockMap)

    Module StarvationDomain.GuardToLockMap

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +GuardToLockMap (infer.Concurrency.StarvationDomain.GuardToLockMap)

    Module StarvationDomain.GuardToLockMap

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/LazilyInitialized/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/LazilyInitialized/index.html index 762950543cf..88c04ebc80d 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/LazilyInitialized/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/LazilyInitialized/index.html @@ -1,4 +1,4 @@ -LazilyInitialized (infer.Concurrency.StarvationDomain.LazilyInitialized)

    Module StarvationDomain.LazilyInitialized

    include IStdlib.PrettyPrintable.PPSet +LazilyInitialized (infer.Concurrency.StarvationDomain.LazilyInitialized)

    Module StarvationDomain.LazilyInitialized

    include IStdlib.PrettyPrintable.PPSet with type elt = Absint.HilExp.AccessExpression.t
    include IStdlib.IStd.Caml.Set.S - with type elt = Absint.HilExp.AccessExpression.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + with type elt = Absint.HilExp.AccessExpression.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Lock/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Lock/index.html index b2ab28a1947..32652ff12af 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Lock/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Lock/index.html @@ -1,2 +1,2 @@ -Lock (infer.Concurrency.StarvationDomain.Lock)

    Module StarvationDomain.Lock

    Abstract address for a lock. There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Locks represented by access paths rooted at method parameters must have equal access paths to compare equal. Paths rooted at locals are ignored.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but locks represented by access paths rooted at parameters need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads. This relation is used in may_deadlock.
    include module type of AbstractAddress
    module F = Stdlib.Format

    Type meant to represent abstract addresses based on access paths. It currently distinguishes between paths

    • rooted at formal parameters (these are identified by the parameter index and the path without the root variable, though that variable is kept for pretty printing);
    • rooted at global variables;
    • non access-path expressions representing class objects (java only).

    Notably, there are no addresses rooted at locals (because proving aliasing between those is difficult).

    There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Parameter-rooted paths compare equal if their parameter indices, types and lists of accesses are equal.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but parameter-rooted paths need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads.
    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit

    human readable description

    val equal : t -> t -> bool
    val equal_across_threads : IR.Tenv.t -> t -> t -> bool
    val root_class : t -> IR.Typ.name option

    Class of the root variable of the expression representing the address

    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option
    val make : Absint.FormalMap.t -> Absint.HilExp.t -> t option

    convert an expression to a canonical form for an address

    val is_class_object : t -> bool

    is the address a Java class object such as in synchronized(MyClass.class){} or static synchronized void foo()

    type subst

    A substitution from formal position indices to address options. None is used to for actuals that cannot be resolved to an address (eg local-rooted paths or arithmetic expressions).

    val pp_subst : F.formatter -> subst -> unit
    val make_subst : Absint.FormalMap.t -> Absint.HilExp.t list -> subst
    val apply_subst : subst -> t -> t option
    val pp_locks : F.formatter -> t -> unit
    val make_java_synchronized : Absint.FormalMap.t -> IR.Procname.t -> t option

    create the monitor locked when entering a synchronized java method

    val compare_wrt_reporting : t -> t -> int

    a stable order for avoiding reporting deadlocks twice based on the root variable type

    \ No newline at end of file +Lock (infer.Concurrency.StarvationDomain.Lock)

    Module StarvationDomain.Lock

    Abstract address for a lock. There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Locks represented by access paths rooted at method parameters must have equal access paths to compare equal. Paths rooted at locals are ignored.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but locks represented by access paths rooted at parameters need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads. This relation is used in may_deadlock.
    include module type of AbstractAddress
    module F = Stdlib.Format

    Type meant to represent abstract addresses based on access paths. It currently distinguishes between paths

    • rooted at formal parameters (these are identified by the parameter index and the path without the root variable, though that variable is kept for pretty printing);
    • rooted at global variables;
    • non access-path expressions representing class objects (java only).

    Notably, there are no addresses rooted at locals (because proving aliasing between those is difficult).

    There are two notions of equality:

    • Equality for comparing two addresses within the same thread/process/trace. Under this, identical globals and identical class objects compare equal. Parameter-rooted paths compare equal if their parameter indices, types and lists of accesses are equal.
    • Equality for comparing two addresses in two distinct threads/traces. Globals and class objects are compared in the same way, but parameter-rooted paths need only have equal access lists (ie x.f.g == y.f.g). This allows demonically aliasing parameters in *distinct* threads.
    include IStdlib.PrettyPrintable.PrintableOrderedType
    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit

    human readable description

    val equal : t -> t -> bool
    val equal_across_threads : IR.Tenv.t -> t -> t -> bool
    val root_class : t -> IR.Typ.name option

    Class of the root variable of the expression representing the address

    val get_typ : IR.Tenv.t -> t -> IR.Typ.t option
    val make : Absint.FormalMap.t -> Absint.HilExp.t -> t option

    convert an expression to a canonical form for an address

    val is_class_object : t -> bool

    is the address a Java class object such as in synchronized(MyClass.class){} or static synchronized void foo()

    type subst

    A substitution from formal position indices to address options. None is used to for actuals that cannot be resolved to an address (eg local-rooted paths or arithmetic expressions).

    val pp_subst : F.formatter -> subst -> unit
    val make_subst : Absint.FormalMap.t -> Absint.HilExp.t list -> subst
    val apply_subst : subst -> t -> t option
    val pp_locks : F.formatter -> t -> unit
    val make_java_synchronized : Absint.FormalMap.t -> IR.Procname.t -> t option

    create the monitor locked when entering a synchronized java method

    val compare_wrt_reporting : t -> t -> int

    a stable order for avoiding reporting deadlocks twice based on the root variable type

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/LockState/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/LockState/index.html index d4f8a4ce22d..daa9d7fa770 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/LockState/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/LockState/index.html @@ -1,2 +1,2 @@ -LockState (infer.Concurrency.StarvationDomain.LockState)

    Module StarvationDomain.LockState

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file +LockState (infer.Concurrency.StarvationDomain.LockState)

    Module StarvationDomain.LockState

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocs/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocs/index.html index 20967b69a7e..8776eaf5827 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocs/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocs/index.html @@ -1,4 +1,4 @@ -NullLocs (infer.Concurrency.StarvationDomain.NullLocs)

    Module StarvationDomain.NullLocs

    include IStdlib.PrettyPrintable.PPSet +NullLocs (infer.Concurrency.StarvationDomain.NullLocs)

    Module StarvationDomain.NullLocs

    include IStdlib.PrettyPrintable.PPSet with type elt = Absint.HilExp.AccessExpression.t
    include IStdlib.IStd.Caml.Set.S - with type elt = Absint.HilExp.AccessExpression.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    \ No newline at end of file + with type elt = Absint.HilExp.AccessExpression.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithTop with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocsCriticalPairs/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocsCriticalPairs/index.html index 83d9acad4f2..5f06ea674cc 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocsCriticalPairs/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/NullLocsCriticalPairs/index.html @@ -1,2 +1,2 @@ -NullLocsCriticalPairs (infer.Concurrency.StarvationDomain.NullLocsCriticalPairs)

    Module StarvationDomain.NullLocsCriticalPairs

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +NullLocsCriticalPairs (infer.Concurrency.StarvationDomain.NullLocsCriticalPairs)

    Module StarvationDomain.NullLocsCriticalPairs

    include IStdlib.PrettyPrintable.PPSet
    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkDomain/index.html index 2b8694b13ec..4d138133e63 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkDomain/index.html @@ -1,2 +1,2 @@ -ScheduledWorkDomain (infer.Concurrency.StarvationDomain.ScheduledWorkDomain)

    Module StarvationDomain.ScheduledWorkDomain

    include IStdlib.PrettyPrintable.PPSet with type elt = ScheduledWorkItem.t
    include IStdlib.IStd.Caml.Set.S with type elt = ScheduledWorkItem.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +ScheduledWorkDomain (infer.Concurrency.StarvationDomain.ScheduledWorkDomain)

    Module StarvationDomain.ScheduledWorkDomain

    include IStdlib.PrettyPrintable.PPSet with type elt = ScheduledWorkItem.t
    include IStdlib.IStd.Caml.Set.S with type elt = ScheduledWorkItem.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkItem/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkItem/index.html index a745ec80850..b73b9052b2e 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkItem/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ScheduledWorkItem/index.html @@ -1,2 +1,2 @@ -ScheduledWorkItem (infer.Concurrency.StarvationDomain.ScheduledWorkItem)

    Module StarvationDomain.ScheduledWorkItem

    A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

    type t = {
    1. procname : IR.Procname.t;
    2. loc : IBase.Location.t;
    3. thread : ThreadDomain.t;
    }
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +ScheduledWorkItem (infer.Concurrency.StarvationDomain.ScheduledWorkItem)

    Module StarvationDomain.ScheduledWorkItem

    A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

    type t = {
    1. procname : IR.Procname.t;
    2. loc : IBase.Location.t;
    3. thread : ThreadDomain.t;
    }
    include IStdlib.PrettyPrintable.PrintableOrderedType with type t := t
    include IStdlib.IStd.Caml.Set.OrderedType with type t := t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ThreadDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ThreadDomain/index.html index 6ec88b5c2c9..f462233ce0a 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/ThreadDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/ThreadDomain/index.html @@ -1,2 +1,2 @@ -ThreadDomain (infer.Concurrency.StarvationDomain.ThreadDomain)

    Module StarvationDomain.ThreadDomain

    Domain for thread-type. The main goals are

    • Track code paths that are explicitly on UI/BG thread (via annotations, or assertions).
    • Maintain UI/BG-thread-ness through the call stack (if a caller is of unknown status and callee is on UI/BG thread then caller must be on the UI/BG thread too).
    • Traces with "UI-thread" status cannot interleave but all other combinations can.
    • Top is AnyThread, which means that there are executions on both UI and BG threads on this method.
    • Bottom is UnknownThread, and used as initial state.
    type t =
    1. | UnknownThread
    2. | UIThread
    3. | BGThread
    4. | AnyThread
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +ThreadDomain (infer.Concurrency.StarvationDomain.ThreadDomain)

    Module StarvationDomain.ThreadDomain

    Domain for thread-type. The main goals are

    • Track code paths that are explicitly on UI/BG thread (via annotations, or assertions).
    • Maintain UI/BG-thread-ness through the call stack (if a caller is of unknown status and callee is on UI/BG thread then caller must be on the UI/BG thread too).
    • Traces with "UI-thread" status cannot interleave but all other combinations can.
    • Top is AnyThread, which means that there are executions on both UI and BG threads on this method.
    • Bottom is UnknownThread, and used as initial state.
    type t =
    1. | UnknownThread
    2. | UIThread
    3. | BGThread
    4. | AnyThread
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/VarDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/VarDomain/index.html index cb47a949746..ef0c8bd43fe 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/VarDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/VarDomain/index.html @@ -1,2 +1,2 @@ -VarDomain (infer.Concurrency.StarvationDomain.VarDomain)

    Module StarvationDomain.VarDomain

    include Absint.AbstractDomain.WithTop
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    type key = IR.Var.t
    val get : key -> t -> Absint.HilExp.AccessExpression.t option
    \ No newline at end of file +VarDomain (infer.Concurrency.StarvationDomain.VarDomain)

    Module StarvationDomain.VarDomain

    include Absint.AbstractDomain.WithTop
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val top : t
    val is_top : t -> bool
    type key = IR.Var.t
    val get : key -> t -> AccessExpressionOrConst.t option
    val set : key -> AccessExpressionOrConst.t -> t -> t
    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html index dfda5c828de..fc9b88aac95 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html @@ -1,41 +1,41 @@ -StarvationDomain (infer.Concurrency.StarvationDomain)

    Module Concurrency.StarvationDomain

    module F = Stdlib.Format
    module ThreadDomain : sig ... end

    Domain for thread-type. The main goals are

    module Lock : sig ... end

    Abstract address for a lock. There are two notions of equality:

    module VarDomain : sig ... end
    module Event : sig ... end
    module Acquisition : sig ... end

    a lock acquisition with location information

    module Acquisitions : sig ... end

    A set of lock acquisitions with source locations and procnames.

    module CriticalPairElement : sig ... end

    An event and the currently-held locks at the time it occurred.

    module CriticalPair : sig ... end

    A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

    module CriticalPairs : +StarvationDomain (infer.Concurrency.StarvationDomain)

    Module Concurrency.StarvationDomain

    module F = Stdlib.Format
    module ThreadDomain : sig ... end

    Domain for thread-type. The main goals are

    module Lock : sig ... end

    Abstract address for a lock. There are two notions of equality:

    module AccessExpressionOrConst : sig ... end
    module VarDomain : sig ... end
    module Event : sig ... end
    module AcquisitionElem : sig ... end

    a lock acquisition with location information

    module Acquisition : sig ... end
    module Acquisitions : sig ... end

    A set of lock acquisitions with source locations and procnames.

    module CriticalPairElement : sig ... end

    An event and the currently-held locks at the time it occurred.

    module CriticalPair : sig ... end

    A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

    module Attribute : sig ... end

    Tracks expression attributes

    module AttributeDomain : sig ... end

    Tracks all expressions assigned values of Attribute

    module ScheduledWorkItem : sig ... end

    A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

    type t = {
    1. ignore_blocking_calls : bool;
    2. guard_map : GuardToLockMap.t;
    3. lock_state : LockState.t;
    4. critical_pairs : NullLocsCriticalPairs.t;
    5. attributes : AttributeDomain.t;
    6. thread : ThreadDomain.t;
    7. scheduled_work : ScheduledWorkDomain.t;
    8. var_state : VarDomain.t;
    9. null_locs : NullLocs.t;
    10. lazily_initalized : LazilyInitialized.t;
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t

    initial domain state

    val acquire : - tenv:IR.Tenv.t -> + with type elt = Absint.HilExp.AccessExpression.t
    type t = {
    1. ignore_blocking_calls : bool;
    2. guard_map : GuardToLockMap.t;
    3. lock_state : LockState.t;
    4. critical_pairs : NullLocsCriticalPairs.t;
    5. attributes : AttributeDomain.t;
    6. thread : ThreadDomain.t;
    7. scheduled_work : ScheduledWorkDomain.t;
    8. var_state : VarDomain.t;
    9. null_locs : NullLocs.t;
    10. lazily_initalized : LazilyInitialized.t;
    }
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t

    initial domain state

    val acquire : + tenv:IR.Tenv.t -> t -> - procname:IR.Procname.t -> - loc:IBase.Location.t -> + procname:IR.Procname.t -> + loc:IBase.Location.t -> Lock.t list -> - t

    simultaneously acquire a number of locks, no-op if list is empty

    val release : t -> Lock.t list -> t

    simultaneously release a number of locks, no-op if list is empty

    val blocking_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val ipc : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val wait_on_monitor : - loc:IBase.Location.t -> + t

    simultaneously acquire a number of locks, no-op if list is empty

    val release : t -> Lock.t list -> t

    simultaneously release a number of locks, no-op if list is empty

    val blocking_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val ipc : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val wait_on_monitor : + loc:IBase.Location.t -> Absint.FormalMap.t -> Absint.HilExp.t list -> t -> t
    val future_get : - callee:IR.Procname.t -> - loc:IBase.Location.t -> + callee:IR.Procname.t -> + loc:IBase.Location.t -> Absint.HilExp.t list -> t -> - t
    val regex_op : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val arbitrary_code_execution : - callee:IR.Procname.t -> - loc:IBase.Location.t -> + t
    val regex_op : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
    val arbitrary_code_execution : + callee:IR.Procname.t -> + loc:IBase.Location.t -> t -> t
    val add_guard : - acquire_now:bool -> - procname:IR.Procname.t -> - loc:IBase.Location.t -> + acquire_now:bool -> + procname:IR.Procname.t -> + loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> Lock.t -> t

    Install a mapping from the guard expression to the lock provided, and optionally lock it.

    val lock_guard : - procname:IR.Procname.t -> - loc:IBase.Location.t -> + procname:IR.Procname.t -> + loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> @@ -44,10 +44,11 @@ StarvationModels.scheduler_thread_constraint -> t -> IR.Procname.t -> - t

    record the fact that a method is scheduled to run on a certain thread/executor

    type summary = {
    1. critical_pairs : CriticalPairs.t;
    2. thread : ThreadDomain.t;
    3. scheduled_work : ScheduledWorkDomain.t;
    4. attributes : AttributeDomain.t;
      (*

      final-state attributes that affect instance variables only

      *)
    5. return_attribute : Attribute.t;
    }
    val empty_summary : summary
    val pp_summary : F.formatter -> summary -> unit
    val integrate_summary : - tenv:IR.Tenv.t -> - lhs:Absint.HilExp.AccessExpression.t -> - subst:Lock.subst -> + t

    record the fact that a method is scheduled to run on a certain thread/executor

    type summary = {
    1. critical_pairs : CriticalPairs.t;
    2. thread : ThreadDomain.t;
    3. scheduled_work : ScheduledWorkDomain.t;
    4. lock_state : LockState.t;
    5. attributes : AttributeDomain.t;
      (*

      final-state attributes that affect instance variables only

      *)
    6. return_attribute : Attribute.t;
    }
    val empty_summary : summary
    val pp_summary : F.formatter -> summary -> unit
    val integrate_summary : + tenv:IR.Tenv.t -> + procname:IR.Procname.t -> + lhs:Absint.HilExp.AccessExpression.t -> + subst:Lock.subst -> Absint.FormalMap.t -> Absint.CallSite.t -> t -> @@ -60,4 +61,4 @@ Absint.FormalMap.t -> Absint.HilExp.AccessExpression.t -> t -> - t

    if expression is a heap location, mark it as set to non-null in this branch

    \ No newline at end of file + t

    if expression is a heap location, mark it as set to non-null in this branch

    diff --git a/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html b/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html index 8cb36d52852..880519ce072 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html @@ -1,5 +1,5 @@ -StarvationModels (infer.Concurrency.StarvationModels)

    Module Concurrency.StarvationModels

    val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

    is the method call potentially blocking, given the actuals passed?

    val may_do_ipc : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
    val is_regex_op : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
    val is_strict_mode_violation : +StarvationModels (infer.Concurrency.StarvationModels)

    Module Concurrency.StarvationModels

    val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

    is the method call potentially blocking, given the actuals passed?

    val may_do_ipc : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
    val is_regex_op : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
    val is_strict_mode_violation : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> @@ -44,4 +44,4 @@ IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> - bool

    for example com.google.common.util.concurrent.SettableFuture.set

    \ No newline at end of file + bool

    for example com.google.common.util.concurrent.SettableFuture.set

    diff --git a/website/static/odoc/next/infer/Concurrency/index.html b/website/static/odoc/next/infer/Concurrency/index.html index 7e8202e7c0c..1ef48557f09 100644 --- a/website/static/odoc/next/infer/Concurrency/index.html +++ b/website/static/odoc/next/infer/Concurrency/index.html @@ -1,2 +1,2 @@ -Concurrency (infer.Concurrency)

    Module Concurrency

    module AbstractAddress : sig ... end
    module ConcurrencyUtils : sig ... end
    module IssueAuxData : sig ... end
    module RacerDDomain : sig ... end
    module RacerDFileAnalysis : sig ... end
    module RacerDModels : sig ... end
    module RacerDProcAnalysis : sig ... end
    module Starvation : sig ... end
    module StarvationDomain : sig ... end
    module StarvationModels : sig ... end
    \ No newline at end of file +Concurrency (infer.Concurrency)

    Module Concurrency

    module AbstractAddress : sig ... end
    module ConcurrencyUtils : sig ... end
    module IssueAuxData : sig ... end
    module RacerDDomain : sig ... end
    module RacerDFileAnalysis : sig ... end
    module RacerDModels : sig ... end
    module RacerDProcAnalysis : sig ... end
    module Starvation : sig ... end
    module StarvationDomain : sig ... end
    module StarvationModels : sig ... end
    diff --git a/website/static/odoc/next/infer/Costlib/BoundMap/index.html b/website/static/odoc/next/infer/Costlib/BoundMap/index.html index c7f05b5eece..a7bdaca22ce 100644 --- a/website/static/odoc/next/infer/Costlib/BoundMap/index.html +++ b/website/static/odoc/next/infer/Costlib/BoundMap/index.html @@ -1,7 +1,7 @@ -BoundMap (infer.Costlib.BoundMap)

    Module Costlib.BoundMap

    module BasicCost = CostDomain.BasicCost
    val lookup_upperbound : BasicCost.t Node.IdMap.t -> Node.id -> BasicCost.t

    given a bound map and a node, lookup the number of times it can be executed

    val compute_upperbound_map : +BoundMap (infer.Costlib.BoundMap)

    Module Costlib.BoundMap

    module BasicCost = CostDomain.BasicCost
    val lookup_upperbound : BasicCost.t Node.IdMap.t -> Node.id -> BasicCost.t

    given a bound map and a node, lookup the number of times it can be executed

    compute a map from each node to an upper bound on the number of times it can be executed.

    \ No newline at end of file + BasicCost.t Node.IdMap.t

    compute a map from each node to an upper bound on the number of times it can be executed.

    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/ClassGateConditions/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/ClassGateConditions/index.html index 18df62a53ce..ca7dde3bdaa 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/ClassGateConditions/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/ClassGateConditions/index.html @@ -1,2 +1,2 @@ -ClassGateConditions (infer.Costlib.ConfigImpactAnalysis.ClassGateConditions)

    Module ConfigImpactAnalysis.ClassGateConditions

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val is_gated : LatentConfigs.t -> t -> bool
    \ No newline at end of file +ClassGateConditions (infer.Costlib.ConfigImpactAnalysis.ClassGateConditions)

    Module ConfigImpactAnalysis.ClassGateConditions

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val is_gated : LatentConfigs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/GatedClasses/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/GatedClasses/index.html index 4b3526ae323..cab875b8c22 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/GatedClasses/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/GatedClasses/index.html @@ -1,5 +1,5 @@ -GatedClasses (infer.Costlib.ConfigImpactAnalysis.GatedClasses)

    Module ConfigImpactAnalysis.GatedClasses

    include IStdlib.PrettyPrintable.PPMonoMap +GatedClasses (infer.Costlib.ConfigImpactAnalysis.GatedClasses)

    Module ConfigImpactAnalysis.GatedClasses

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfig/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfig/index.html index 716aca98488..e0c33a38107 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfig/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfig/index.html @@ -1,2 +1,2 @@ -LatentConfig (infer.Costlib.ConfigImpactAnalysis.LatentConfig)

    Module ConfigImpactAnalysis.LatentConfig

    type t
    \ No newline at end of file +LatentConfig (infer.Costlib.ConfigImpactAnalysis.LatentConfig)

    Module ConfigImpactAnalysis.LatentConfig

    type t
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigAlias/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigAlias/index.html index 3cb81e81f01..188ad32eeba 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigAlias/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigAlias/index.html @@ -1,2 +1,2 @@ -LatentConfigAlias (infer.Costlib.ConfigImpactAnalysis.LatentConfigAlias)

    Module ConfigImpactAnalysis.LatentConfigAlias

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty : t
    val union : t -> t -> t
    val get_all : LatentConfig.t -> t -> LatentConfig.t list
    \ No newline at end of file +LatentConfigAlias (infer.Costlib.ConfigImpactAnalysis.LatentConfigAlias)

    Module ConfigImpactAnalysis.LatentConfigAlias

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val empty : t
    val union : t -> t -> t
    val get_all : LatentConfig.t -> t -> LatentConfig.t list
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigs/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigs/index.html index 6d59dc061d3..205b6ede5ea 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigs/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/LatentConfigs/index.html @@ -1,2 +1,2 @@ -LatentConfigs (infer.Costlib.ConfigImpactAnalysis.LatentConfigs)

    Module ConfigImpactAnalysis.LatentConfigs

    include IStdlib.PrettyPrintable.PPSet with type elt = LatentConfig.t
    include IStdlib.IStd.Caml.Set.S with type elt = LatentConfig.t
    type elt = LatentConfig.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    \ No newline at end of file +LatentConfigs (infer.Costlib.ConfigImpactAnalysis.LatentConfigs)

    Module ConfigImpactAnalysis.LatentConfigs

    include IStdlib.PrettyPrintable.PPSet with type elt = LatentConfig.t
    include IStdlib.IStd.Caml.Set.S with type elt = LatentConfig.t
    type elt = LatentConfig.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/Summary/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/Summary/index.html index b0d7350656d..72b3fabbb58 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/Summary/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/Summary/index.html @@ -1,2 +1,2 @@ -Summary (infer.Costlib.ConfigImpactAnalysis.Summary)

    Module ConfigImpactAnalysis.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val get_configs : t -> LatentConfigs.t
    val get_gated_classes : t -> GatedClasses.t
    val get_unchecked_callees : t -> UncheckedCallees.t
    val get_latent_config_alias : t -> LatentConfigAlias.t
    val instantiate_unchecked_callees_cond : all_configs:LatentConfigs.t -> t -> t
    \ No newline at end of file +Summary (infer.Costlib.ConfigImpactAnalysis.Summary)

    Module ConfigImpactAnalysis.Summary

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val get_configs : t -> LatentConfigs.t
    val get_gated_classes : t -> GatedClasses.t
    val get_unchecked_callees : t -> UncheckedCallees.t
    val get_latent_config_alias : t -> LatentConfigAlias.t
    val instantiate_unchecked_callees_cond : all_configs:LatentConfigs.t -> t -> t
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallee/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallee/index.html index 11fb162880c..afbbf1170ff 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallee/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallee/index.html @@ -1,2 +1,2 @@ -UncheckedCallee (infer.Costlib.ConfigImpactAnalysis.UncheckedCallee)

    Module ConfigImpactAnalysis.UncheckedCallee

    type t
    val is_known_expensive : t -> bool
    val make_err_trace : t -> Absint.Errlog.loc_trace
    val pp_without_location_list : Stdlib.Format.formatter -> t list -> unit
    \ No newline at end of file +UncheckedCallee (infer.Costlib.ConfigImpactAnalysis.UncheckedCallee)

    Module ConfigImpactAnalysis.UncheckedCallee

    type t
    val is_known_expensive : t -> bool
    val make_err_trace : t -> Absint.Errlog.loc_trace
    val pp_without_location_list : Stdlib.Format.formatter -> t list -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallees/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallees/index.html index e06b5813d03..d4be26211e2 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallees/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/UncheckedCallees/index.html @@ -1,2 +1,2 @@ -UncheckedCallees (infer.Costlib.ConfigImpactAnalysis.UncheckedCallees)

    Module ConfigImpactAnalysis.UncheckedCallees

    include Absint.AbstractDomain.FiniteSetS with type elt = UncheckedCallee.t
    include IStdlib.PrettyPrintable.PPSet with type elt = UncheckedCallee.t
    include IStdlib.IStd.Caml.Set.S with type elt = UncheckedCallee.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val encode : t -> string
    val decode : string -> t
    val pp_without_location : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +UncheckedCallees (infer.Costlib.ConfigImpactAnalysis.UncheckedCallees)

    Module ConfigImpactAnalysis.UncheckedCallees

    include Absint.AbstractDomain.FiniteSetS with type elt = UncheckedCallee.t
    include IStdlib.PrettyPrintable.PPSet with type elt = UncheckedCallee.t
    include IStdlib.IStd.Caml.Set.S with type elt = UncheckedCallee.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val encode : t -> string
    val decode : string -> t
    val pp_without_location : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/index.html b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/index.html index 94c50fc259a..1e11d50b758 100644 --- a/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/index.html +++ b/website/static/odoc/next/infer/Costlib/ConfigImpactAnalysis/index.html @@ -1,6 +1,6 @@ -ConfigImpactAnalysis (infer.Costlib.ConfigImpactAnalysis)

    Module Costlib.ConfigImpactAnalysis

    val equal_mode : mode -> mode -> bool
    val pp_mode : Stdlib.Format.formatter -> mode -> unit
    val is_in_strict_mode_paths : IBase.SourceFile.t -> bool
    val mode : mode
    module LatentConfig : sig ... end
    module LatentConfigs : +ConfigImpactAnalysis (infer.Costlib.ConfigImpactAnalysis)

    Module Costlib.ConfigImpactAnalysis

    val equal_mode : mode -> mode -> bool
    val pp_mode : Stdlib.Format.formatter -> mode -> unit
    val is_in_strict_mode_paths : IBase.SourceFile.t -> bool
    val mode : mode
    module LatentConfig : sig ... end
    module UncheckedCallee : sig ... end
    module UncheckedCallees : sig ... end
    module ClassGateConditions : sig ... end
    module LatentConfigAlias : sig ... end
    module Summary : sig ... end
    \ No newline at end of file + and type value = ClassGateConditions.t
    module LatentConfigAlias : sig ... end
    module Summary : sig ... end
    diff --git a/website/static/odoc/next/infer/Costlib/ConstraintSolver/Equalities/index.html b/website/static/odoc/next/infer/Costlib/ConstraintSolver/Equalities/index.html index ab6a924fa6c..3e6cf52df3e 100644 --- a/website/static/odoc/next/infer/Costlib/ConstraintSolver/Equalities/index.html +++ b/website/static/odoc/next/infer/Costlib/ConstraintSolver/Equalities/index.html @@ -1,2 +1,2 @@ -Equalities (infer.Costlib.ConstraintSolver.Equalities)

    Module ConstraintSolver.Equalities

    type t
    \ No newline at end of file +Equalities (infer.Costlib.ConstraintSolver.Equalities)

    Module ConstraintSolver.Equalities

    type t
    diff --git a/website/static/odoc/next/infer/Costlib/ConstraintSolver/index.html b/website/static/odoc/next/infer/Costlib/ConstraintSolver/index.html index 670f37844c1..27dddc6d6e1 100644 --- a/website/static/odoc/next/infer/Costlib/ConstraintSolver/index.html +++ b/website/static/odoc/next/infer/Costlib/ConstraintSolver/index.html @@ -1,6 +1,6 @@ -ConstraintSolver (infer.Costlib.ConstraintSolver)

    Module Costlib.ConstraintSolver

    module F = Stdlib.Format
    module BasicCost = CostDomain.BasicCost
    type debug = {
    1. f : 'a. ('a, F.formatter, unit, unit) IStdlib.IStd.format4 -> 'a;
    }
    module Equalities : sig ... end
    val compute_costs : - debug:debug -> +ConstraintSolver (infer.Costlib.ConstraintSolver)

    Module Costlib.ConstraintSolver

    module F = Stdlib.Format
    module BasicCost = CostDomain.BasicCost
    type debug = {
    1. f : 'a. ('a, F.formatter, unit, unit) IStdlib.IStd.format4 -> 'a;
    }
    module Equalities : sig ... end
    val compute_costs : + debug:debug -> BasicCost.t Node.IdMap.t -> Equalities.t -> - unit

    repeatedly improve the costs given the constraints

    val get_node_nb_exec : Equalities.t -> Node.t -> BasicCost.t

    compute the number of times a node is executed by taking into account the program structural (e.g. control-flow) constraints

    val collect_constraints : debug:debug -> IR.Procdesc.t -> Equalities.t

    collect initial constraints for a CFG

    \ No newline at end of file + unit

    repeatedly improve the costs given the constraints

    val get_node_nb_exec : Equalities.t -> Node.t -> BasicCost.t

    compute the number of times a node is executed by taking into account the program structural (e.g. control-flow) constraints

    val collect_constraints : debug:debug -> IR.Procdesc.t -> Equalities.t

    collect initial constraints for a CFG

    diff --git a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Item/index.html b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Item/index.html index 520f5bc9f90..0dd24100b52 100644 --- a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Item/index.html +++ b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Item/index.html @@ -1,2 +1,2 @@ -Item (infer.Costlib.ControlFlowCost.Item)

    Module ControlFlowCost.Item

    type t = [
    1. | `Edge of Node.id * Node.id
    2. | `Node of Node.id
    ]
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Item (infer.Costlib.ControlFlowCost.Item)

    Module ControlFlowCost.Item

    type t = [
    1. | `Edge of Node.id * Node.id
    2. | `Node of Node.id
    ]
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Set/index.html b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Set/index.html index 7509422346d..be203706b12 100644 --- a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Set/index.html +++ b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Set/index.html @@ -1,10 +1,10 @@ -Set (infer.Costlib.ControlFlowCost.Set)

    Module ControlFlowCost.Set

    type elt = t
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val cost : t -> BasicCost.t
    val merge : from:t -> to_:t -> unit
    val pp_equalities : F.formatter -> t -> unit
    val normalize_sums : normalizer:(elt -> elt) -> t -> unit
    val sum_items : t -> Item.t list
    val infer_equalities_from_sums : - on_infer:(elt -> elt -> unit) -> - normalizer:(elt -> elt) -> +Set (infer.Costlib.ControlFlowCost.Set)

    Module ControlFlowCost.Set

    type elt = t
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val cost : t -> BasicCost.t
    val merge : from:t -> to_:t -> unit
    val pp_equalities : F.formatter -> t -> unit
    val normalize_sums : normalizer:(elt -> elt) -> t -> unit
    val sum_items : t -> Item.t list
    val infer_equalities_from_sums : + on_infer:(elt -> elt -> unit) -> + normalizer:(elt -> elt) -> t -> - unit
    val init_cost : of_node:(Node.id -> BasicCost.t) -> t -> unit
    val improve_cost_from_sums : - on_improve:(Sum.t -> BasicCost.t -> BasicCost.t -> unit) -> - of_item:(Item.t -> BasicCost.t) -> + unit
    val init_cost : of_node:(Node.id -> BasicCost.t) -> t -> unit
    val improve_cost_from_sums : + on_improve:(Sum.t -> BasicCost.t -> BasicCost.t -> unit) -> + of_item:(Item.t -> BasicCost.t) -> t -> - unit
    val improve_cost_with : t -> BasicCost.t -> BasicCost.t option
    \ No newline at end of file + unit
    val improve_cost_with : t -> BasicCost.t -> BasicCost.t option
    diff --git a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Sum/index.html b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Sum/index.html index 5d12292e8dc..3461b0b67ab 100644 --- a/website/static/odoc/next/infer/Costlib/ControlFlowCost/Sum/index.html +++ b/website/static/odoc/next/infer/Costlib/ControlFlowCost/Sum/index.html @@ -1,2 +1,2 @@ -Sum (infer.Costlib.ControlFlowCost.Sum)

    Module ControlFlowCost.Sum

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Sum (infer.Costlib.ControlFlowCost.Sum)

    Module ControlFlowCost.Sum

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/ControlFlowCost/index.html b/website/static/odoc/next/infer/Costlib/ControlFlowCost/index.html index 8faee2bc4eb..07be6d277d0 100644 --- a/website/static/odoc/next/infer/Costlib/ControlFlowCost/index.html +++ b/website/static/odoc/next/infer/Costlib/ControlFlowCost/index.html @@ -1,2 +1,2 @@ -ControlFlowCost (infer.Costlib.ControlFlowCost)

    Module Costlib.ControlFlowCost

    module F = Stdlib.Format
    module BasicCost = CostDomain.BasicCost
    module Item : sig ... end
    module Sum : sig ... end
    type t = [
    1. | `Edge of Node.id * Node.id
    2. | `Node of Node.id
    3. | `Sum of int * Item.t list
    ]

    A Control-flow cost represents the number of times the flow of control can go through a certain CFG item (a node or an edge), or a sum of such things

    val make_node : Node.id -> t
    val make_pred_edge : 'a -> 'b -> [> `Edge of 'b * 'a ]
    val make_succ_edge : 'a -> 'b -> [> `Edge of 'a * 'b ]
    val pp : F.formatter -> t -> unit
    val sum : Item.t list -> t
    module Set : sig ... end
    \ No newline at end of file +ControlFlowCost (infer.Costlib.ControlFlowCost)

    Module Costlib.ControlFlowCost

    module F = Stdlib.Format
    module BasicCost = CostDomain.BasicCost
    module Item : sig ... end
    module Sum : sig ... end
    type t = [
    1. | `Edge of Node.id * Node.id
    2. | `Node of Node.id
    3. | `Sum of int * Item.t list
    ]

    A Control-flow cost represents the number of times the flow of control can go through a certain CFG item (a node or an edge), or a sum of such things

    val make_node : Node.id -> t
    val make_pred_edge : 'a -> 'b -> [> `Edge of 'b * 'a ]
    val make_succ_edge : 'a -> 'b -> [> `Edge of 'a * 'b ]
    val pp : F.formatter -> t -> unit
    val sum : Item.t list -> t
    module Set : sig ... end
    diff --git a/website/static/odoc/next/infer/Costlib/Cost/index.html b/website/static/odoc/next/infer/Costlib/Cost/index.html index 57b4b5827ef..b6cde4c5e59 100644 --- a/website/static/odoc/next/infer/Costlib/Cost/index.html +++ b/website/static/odoc/next/infer/Costlib/Cost/index.html @@ -1,20 +1,20 @@ -Cost (infer.Costlib.Cost)

    Module Costlib.Cost

    val checker : +Cost (infer.Costlib.Cost)

    Module Costlib.Cost

    val instantiate_cost : - ?get_closure_callee_cost: + ?get_closure_callee_cost: (IR.Procname.t -> CostDomain.BasicCostWithReason.t option) -> - default_closure_cost:BO.Ints.NonNegativeInt.t -> + default_closure_cost:BO.Ints.NonNegativeInt.t -> IR.IntegerWidths.t -> - inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> - callee_pname:IR.Procname.t -> - callee_formals:(IR.Pvar.t * IR.Typ.t) list -> - args:(IR.Exp.t * IR.Typ.t) list -> - captured_vars: + inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> + callee_pname:IR.Procname.t -> + callee_formals:(IR.Pvar.t * IR.Typ.t) list -> + args:(IR.Exp.t * IR.Typ.t) list -> + captured_vars: (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list -> - callee_cost:CostDomain.BasicCostWithReason.t -> - loc:IBase.Location.t -> - CostDomain.BasicCostWithReason.t
    val is_report_suppressed : IR.Procname.t -> bool
    \ No newline at end of file + callee_cost:CostDomain.BasicCostWithReason.t -> + loc:IBase.Location.t -> + CostDomain.BasicCostWithReason.t
    val is_report_suppressed : IR.Procname.t -> bool
    diff --git a/website/static/odoc/next/infer/Costlib/CostAllocationModels/ProcName/index.html b/website/static/odoc/next/infer/Costlib/CostAllocationModels/ProcName/index.html index d1044216d5c..d1c12b16544 100644 --- a/website/static/odoc/next/infer/Costlib/CostAllocationModels/ProcName/index.html +++ b/website/static/odoc/next/infer/Costlib/CostAllocationModels/ProcName/index.html @@ -1,4 +1,4 @@ -ProcName (infer.Costlib.CostAllocationModels.ProcName)

    Module CostAllocationModels.ProcName

    val dispatch : +ProcName (infer.Costlib.CostAllocationModels.ProcName)

    Module CostAllocationModels.ProcName

    \ No newline at end of file + Absint.ProcnameDispatcher.ProcName.dispatcher
    diff --git a/website/static/odoc/next/infer/Costlib/CostAllocationModels/index.html b/website/static/odoc/next/infer/Costlib/CostAllocationModels/index.html index 5540efcc6fc..54b46634c8f 100644 --- a/website/static/odoc/next/infer/Costlib/CostAllocationModels/index.html +++ b/website/static/odoc/next/infer/Costlib/CostAllocationModels/index.html @@ -1,2 +1,2 @@ -CostAllocationModels (infer.Costlib.CostAllocationModels)

    Module Costlib.CostAllocationModels

    module ProcName : sig ... end
    \ No newline at end of file +CostAllocationModels (infer.Costlib.CostAllocationModels)

    Module Costlib.CostAllocationModels

    module ProcName : sig ... end
    diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/BasicCost/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCost/index.html index da257380764..746aa6329d6 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/BasicCost/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCost/index.html @@ -1,23 +1,23 @@ -BasicCost (infer.Costlib.CostDomain.BasicCost)

    Module CostDomain.BasicCost

    include module type of BO.Polynomials.NonNegativePolynomial +BasicCost (infer.Costlib.CostDomain.BasicCost)

    Module CostDomain.BasicCost

    include module type of BO.Polynomials.NonNegativePolynomial with type t = BO.Polynomials.NonNegativePolynomial.t
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val top : t
    val of_unreachable : IBase.Location.t -> t
    val zero : t
    val one : t
    val of_int_exn : int -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_unreachable : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val of_non_negative_bound : - ?degree_kind:BO.Polynomials.DegreeKind.t -> + Absint.AbstractDomain.Types.below_above
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val top : t
    val of_unreachable : IBase.Location.t -> t
    val zero : t
    val one : t
    val of_int_exn : int -> t
    val is_symbolic : t -> bool
    val is_top : t -> bool
    val is_unreachable : t -> bool
    val is_zero : t -> bool
    val is_one : t -> bool
    val of_non_negative_bound : + ?degree_kind:BO.Polynomials.DegreeKind.t -> BO.Bounds.NonNegativeBound.t -> - t
    val of_func_ptr : BO.Symb.SymbolPath.partial -> t
    val plus : t -> t -> t
    val mult_unreachable : t -> t -> t

    if one of the operands is unreachable, the result is unreachable

    val mult : t -> t -> t
    val mult_loop : iter:t -> body:t -> t
    val min_default_left : t -> t -> t
    val subst : + t
    val of_func_ptr : BO.Symb.SymbolPath.partial -> t
    val plus : t -> t -> t
    val mult_unreachable : t -> t -> t

    if one of the operands is unreachable, the result is unreachable

    val mult : t -> t -> t
    val mult_loop : iter:t -> body:t -> t
    val min_default_left : t -> t -> t
    val subst : IR.Procname.t -> IBase.Location.t -> t -> BO.Bounds.Bound.eval_sym -> BO.FuncPtr.Set.eval_func_ptrs -> (IR.Procname.t -> t option) -> - default_closure_cost:BO.Ints.NonNegativeInt.t -> + default_closure_cost:BO.Ints.NonNegativeInt.t -> t
    val degree : t -> BO.Polynomials.Degree.t option
    val degree_str : t -> string
    val compare_by_degree : t -> t -> int
    val pp_degree : - only_bigO:bool -> + only_bigO:bool -> Stdlib.Format.formatter -> degree_with_term -> - unit
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val encode : t -> string
    val decode : string -> t
    val get_degree_with_term : t -> degree_with_term
    val version : int

    version used to consistently compare at infer-reportdiff phase

    \ No newline at end of file + unit
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val encode : t -> string
    val decode : string -> t
    val get_degree_with_term : t -> degree_with_term
    val version : int

    version used to consistently compare at infer-reportdiff phase

    diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html index 928f86d9cec..06affd00389 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html @@ -1,10 +1,10 @@ -BasicCostWithReason (infer.Costlib.CostDomain.BasicCostWithReason)

    Module CostDomain.BasicCostWithReason

    This is for Call instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.

    If the callee top cost and thus the caller has top cost, then

    1. if for callee, top_pname_opt is None, then callee is itself top cost, so for the caller, we record top_pname_opt = callee ;

    2. if for callee, top_pname_opt is f, then we know that callee calls f, which is top cost, so for the caller, we record top_pname_opt = f

    type t = {
    1. cost : BasicCost.t;
    2. top_pname_opt : IR.Procname.t option;
    }
    val one : t
    val zero : t
    val is_top : t -> bool
    val of_basic_cost : BasicCost.t -> t
    val is_unreachable : t -> bool
    val subst : +BasicCostWithReason (infer.Costlib.CostDomain.BasicCostWithReason)

    Module CostDomain.BasicCostWithReason

    This is for Call instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.

    If the callee top cost and thus the caller has top cost, then

    1. if for callee, top_pname_opt is None, then callee is itself top cost, so for the caller, we record top_pname_opt = callee ;

    2. if for callee, top_pname_opt is f, then we know that callee calls f, which is top cost, so for the caller, we record top_pname_opt = f

    type t = {
    1. cost : BasicCost.t;
    2. top_pname_opt : IR.Procname.t option;
    }
    val one : t
    val zero : t
    val is_top : t -> bool
    val of_basic_cost : BasicCost.t -> t
    val is_unreachable : t -> bool
    val degree : t -> BO.Polynomials.Degree.t option
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file + default_closure_cost:BO.Ints.NonNegativeInt.t -> + t
    val degree : t -> BO.Polynomials.Degree.t option
    val polynomial_traces : t -> Absint.Errlog.loc_trace
    val pp_hum : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html index 2cb41e0a4d1..e19d1b09d85 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html @@ -1,2 +1,2 @@ -VariantCostMap (infer.Costlib.CostDomain.VariantCostMap)

    Module CostDomain.VariantCostMap

    val pp : F.formatter -> t -> unit
    \ No newline at end of file +VariantCostMap (infer.Costlib.CostDomain.VariantCostMap)

    Module CostDomain.VariantCostMap

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/index.html index e076f081eb4..b7d56a86a05 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/index.html @@ -1,2 +1,2 @@ -CostDomain (infer.Costlib.CostDomain)

    Module Costlib.CostDomain

    module F = Stdlib.Format
    module BasicCost : sig ... end
    module BasicCostWithReason : sig ... end

    This is for Call instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.

    module VariantCostMap : sig ... end
    type summary = {
    1. post : t;
    2. is_on_ui_thread : bool;
    }
    val pp_summary : F.formatter -> summary -> unit
    val get_cost_kind : IBase.CostKind.t -> t -> BasicCostWithReason.t
    val get_operation_cost : t -> BasicCostWithReason.t
    val set_operation_cost_zero : t -> t
    val find_opt : IBase.CostKind.t -> t -> BasicCostWithReason.t option
    val construct : f:(IBase.CostKind.t -> BasicCostWithReason.t) -> t
    val zero_record : t

    Map representing cost record {OperationCost:0; AllocationCost:0}

    val mult_by : t -> nb_exec:BasicCost.t -> t

    Special map where each element is multipli by the number of executions

    val plus : t -> t -> t

    Union of two maps where common costs are added together

    val unit_cost_atomic_operation : t

    Map representing cost record {OperationCost:1; AllocationCost:0}

    \ No newline at end of file +CostDomain (infer.Costlib.CostDomain)

    Module Costlib.CostDomain

    module F = Stdlib.Format
    module BasicCost : sig ... end
    module BasicCostWithReason : sig ... end

    This is for Call instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.

    module VariantCostMap : sig ... end
    type summary = {
    1. post : t;
    2. is_on_ui_thread : bool;
    }
    val pp_summary : F.formatter -> summary -> unit
    val get_cost_kind : IBase.CostKind.t -> t -> BasicCostWithReason.t
    val get_operation_cost : t -> BasicCostWithReason.t
    val set_operation_cost_zero : t -> t
    val find_opt : IBase.CostKind.t -> t -> BasicCostWithReason.t option
    val construct : f:(IBase.CostKind.t -> BasicCostWithReason.t) -> t
    val zero_record : t

    Map representing cost record {OperationCost:0; AllocationCost:0}

    val mult_by : t -> nb_exec:BasicCost.t -> t

    Special map where each element is multipli by the number of executions

    val plus : t -> t -> t

    Union of two maps where common costs are added together

    val unit_cost_atomic_operation : t

    Map representing cost record {OperationCost:1; AllocationCost:0}

    diff --git a/website/static/odoc/next/infer/Costlib/CostInstantiate/Call/index.html b/website/static/odoc/next/infer/Costlib/CostInstantiate/Call/index.html index b7ad1fb2c8a..5bed08c1117 100644 --- a/website/static/odoc/next/infer/Costlib/CostInstantiate/Call/index.html +++ b/website/static/odoc/next/infer/Costlib/CostInstantiate/Call/index.html @@ -1,3 +1,3 @@ -Call (infer.Costlib.CostInstantiate.Call)

    Module CostInstantiate.Call

    type t = {
    1. loc : IBase.Location.t;
    2. pname : IR.Procname.t;
    3. node : Absint.ProcCfg.InstrNode.t;
    4. args : (IR.Exp.t * IR.Typ.t) list;
    5. captured_vars : (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) - list;
    6. ret : IR.Ident.t * IR.Typ.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Call (infer.Costlib.CostInstantiate.Call)

    Module CostInstantiate.Call

    type t = {
    1. loc : IBase.Location.t;
    2. pname : IR.Procname.t;
    3. node : Absint.ProcCfg.InstrNode.t;
    4. args : (IR.Exp.t * IR.Typ.t) list;
    5. captured_vars : (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) + list;
    6. ret : IR.Ident.t * IR.Typ.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Costlib/CostInstantiate/index.html b/website/static/odoc/next/infer/Costlib/CostInstantiate/index.html index 66a00931bc9..c71c2ba7e93 100644 --- a/website/static/odoc/next/infer/Costlib/CostInstantiate/index.html +++ b/website/static/odoc/next/infer/Costlib/CostInstantiate/index.html @@ -1,7 +1,7 @@ -CostInstantiate (infer.Costlib.CostInstantiate)

    Module Costlib.CostInstantiate

    module Call : sig ... end
    type 'a interproc_analysis = +CostInstantiate (infer.Costlib.CostInstantiate)

    Module Costlib.CostInstantiate

    module Call : sig ... end
    val get_cost_if_expensive : 'a interproc_analysis -> Call.t -> - CostDomain.BasicCost.t option
    \ No newline at end of file + CostDomain.BasicCost.t option
    diff --git a/website/static/odoc/next/infer/Costlib/CostModels/Call/index.html b/website/static/odoc/next/infer/Costlib/CostModels/Call/index.html index 024e7a40196..495e0175958 100644 --- a/website/static/odoc/next/infer/Costlib/CostModels/Call/index.html +++ b/website/static/odoc/next/infer/Costlib/CostModels/Call/index.html @@ -1,3 +1,3 @@ -Call (infer.Costlib.CostModels.Call)

    Module CostModels.Call

    \ No newline at end of file +Call (infer.Costlib.CostModels.Call)

    Module CostModels.Call

    diff --git a/website/static/odoc/next/infer/Costlib/CostModels/index.html b/website/static/odoc/next/infer/Costlib/CostModels/index.html index e925f88f368..516b3b47888 100644 --- a/website/static/odoc/next/infer/Costlib/CostModels/index.html +++ b/website/static/odoc/next/infer/Costlib/CostModels/index.html @@ -1,2 +1,2 @@ -CostModels (infer.Costlib.CostModels)

    Module Costlib.CostModels

    module Call : sig ... end
    \ No newline at end of file +CostModels (infer.Costlib.CostModels)

    Module Costlib.CostModels

    module Call : sig ... end
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/Array/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/Array/index.html index c283eae4dd4..c64ea7277ad 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/Array/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/Array/index.html @@ -1,5 +1,5 @@ -Array (infer.Costlib.CostUtils.Array)

    Module CostUtils.Array

    val length : +Array (infer.Costlib.CostUtils.Array)

    Module CostUtils.Array

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/CString/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/CString/index.html index 0091173b92a..ab6584fb691 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/CString/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/CString/index.html @@ -1,5 +1,5 @@ -CString (infer.Costlib.CostUtils.CString)

    Module CostUtils.CString

    val length : +CString (infer.Costlib.CostUtils.CString)

    Module CostUtils.CString

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/Collection/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/Collection/index.html index 454769b71e8..1f76d628f7d 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/Collection/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/Collection/index.html @@ -1,5 +1,5 @@ -Collection (infer.Costlib.CostUtils.Collection)

    Module CostUtils.Collection

    val length : +Collection (infer.Costlib.CostUtils.Collection)

    Module CostUtils.Collection

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/Container/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/Container/index.html index 81a9a2f0c5d..5613c310666 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/Container/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/Container/index.html @@ -1,5 +1,5 @@ -Container (infer.Costlib.CostUtils.Container)

    Module CostUtils.Container

    val length : +Container (infer.Costlib.CostUtils.Container)

    Module CostUtils.Container

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/CostModelEnv/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/CostModelEnv/index.html index a01fdd32801..beb896c054a 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/CostModelEnv/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/CostModelEnv/index.html @@ -1,2 +1,2 @@ -CostModelEnv (infer.Costlib.CostUtils.CostModelEnv)

    Module CostUtils.CostModelEnv

    type cost_model_env = {
    1. model_env : BO.BufferOverrunUtils.ModelEnv.model_env;
    2. get_summary : IR.Procname.t -> CostDomain.summary option;
    }
    \ No newline at end of file +CostModelEnv (infer.Costlib.CostUtils.CostModelEnv)

    Module CostUtils.CostModelEnv

    type cost_model_env = {
    1. model_env : BO.BufferOverrunUtils.ModelEnv.model_env;
    2. get_summary : IR.Procname.t -> CostDomain.summary option;
    }
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/NSCollection/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/NSCollection/index.html index d032fd92546..24ed6faaf6b 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/NSCollection/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/NSCollection/index.html @@ -1,5 +1,5 @@ -NSCollection (infer.Costlib.CostUtils.NSCollection)

    Module CostUtils.NSCollection

    val length : +NSCollection (infer.Costlib.CostUtils.NSCollection)

    Module CostUtils.NSCollection

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/index.html index f7bc142d770..e06102073fe 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/index.html @@ -1,19 +1,19 @@ -CostUtils (infer.Costlib.CostUtils)

    Module Costlib.CostUtils

    module CostModelEnv : sig ... end
    type model = +CostUtils (infer.Costlib.CostUtils)

    Module Costlib.CostUtils

    module CostModelEnv : sig ... end
    val unit_cost_of : - of_function:string -> + of_function:string -> IBase.Location.t -> CostDomain.BasicCost.t

    Unit cost value

    val cost_of_itv : - itv:BO.Itv.t -> - degree_kind:BO.Polynomials.DegreeKind.t -> - of_function:string -> + itv:BO.Itv.t -> + degree_kind:BO.Polynomials.DegreeKind.t -> + of_function:string -> IBase.Location.t -> CostDomain.BasicCost.t

    Translate interval to cost value

    Given a string of length n and an optional starting index i (0 by default), return itv 0, n_u-i_l

    module type S = sig ... end

    Module type for getting length of various data types

    module Array : S
    module Collection : S
    module Container : S
    module CString : S
    module NSCollection : S
    \ No newline at end of file + BO.Itv.t

    Given a string of length n and an optional starting index i (0 by default), return itv 0, n_u-i_l

    module type S = sig ... end

    Module type for getting length of various data types

    module Array : S
    module Collection : S
    module Container : S
    module CString : S
    module NSCollection : S
    diff --git a/website/static/odoc/next/infer/Costlib/CostUtils/module-type-S/index.html b/website/static/odoc/next/infer/Costlib/CostUtils/module-type-S/index.html index c87295b36d2..37b5c436471 100644 --- a/website/static/odoc/next/infer/Costlib/CostUtils/module-type-S/index.html +++ b/website/static/odoc/next/infer/Costlib/CostUtils/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Costlib.CostUtils.S)

    Module type CostUtils.S

    Module type for getting length of various data types

    val length : +S (infer.Costlib.CostUtils.S)

    Module type CostUtils.S

    Module type for getting length of various data types

    \ No newline at end of file + BO.BufferOverrunDomain.Val.t
    diff --git a/website/static/odoc/next/infer/Costlib/Hoisting/index.html b/website/static/odoc/next/infer/Costlib/Hoisting/index.html index 02490b534ba..c31aa523b61 100644 --- a/website/static/odoc/next/infer/Costlib/Hoisting/index.html +++ b/website/static/odoc/next/infer/Costlib/Hoisting/index.html @@ -1,9 +1,9 @@ -Hoisting (infer.Costlib.Hoisting)

    Module Costlib.Hoisting

    val checker : +Hoisting (infer.Costlib.Hoisting)

    Module Costlib.Hoisting

    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Costlib/index.html b/website/static/odoc/next/infer/Costlib/index.html index 85add672b12..e4b07f5b7c6 100644 --- a/website/static/odoc/next/infer/Costlib/index.html +++ b/website/static/odoc/next/infer/Costlib/index.html @@ -1,2 +1,2 @@ -Costlib (infer.Costlib)

    Module Costlib

    module BoundMap : sig ... end
    module ConfigImpactAnalysis : sig ... end
    module ConstraintSolver : sig ... end
    module ControlFlowCost : sig ... end
    module Cost : sig ... end
    module CostAllocationModels : sig ... end
    module CostDomain : sig ... end
    module CostInstantiate : sig ... end
    module CostModels : sig ... end
    module CostUtils : sig ... end
    module Hoisting : sig ... end
    \ No newline at end of file +Costlib (infer.Costlib)

    Module Costlib

    module BoundMap : sig ... end
    module ConfigImpactAnalysis : sig ... end
    module ConstraintSolver : sig ... end
    module ControlFlowCost : sig ... end
    module Cost : sig ... end
    module CostAllocationModels : sig ... end
    module CostDomain : sig ... end
    module CostInstantiate : sig ... end
    module CostModels : sig ... end
    module CostUtils : sig ... end
    module Hoisting : sig ... end
    diff --git a/website/static/odoc/next/infer/Datalog/DatalogAnalysis/index.html b/website/static/odoc/next/infer/Datalog/DatalogAnalysis/index.html index cf05ea19abb..4db21c7a66a 100644 --- a/website/static/odoc/next/infer/Datalog/DatalogAnalysis/index.html +++ b/website/static/odoc/next/infer/Datalog/DatalogAnalysis/index.html @@ -1,2 +1,2 @@ -DatalogAnalysis (infer.Datalog.DatalogAnalysis)

    Module Datalog.DatalogAnalysis

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    \ No newline at end of file +DatalogAnalysis (infer.Datalog.DatalogAnalysis)

    Module Datalog.DatalogAnalysis

    val checker : Absint.IntraproceduralAnalysis.t -> unit
    diff --git a/website/static/odoc/next/infer/Datalog/Fact/index.html b/website/static/odoc/next/infer/Datalog/Fact/index.html index cfb237f8711..844dba3980d 100644 --- a/website/static/odoc/next/infer/Datalog/Fact/index.html +++ b/website/static/odoc/next/infer/Datalog/Fact/index.html @@ -1,5 +1,5 @@ -Fact (infer.Datalog.Fact)

    Module Datalog.Fact

    type t
    val to_string : t -> string
    val iter_fact_types : (string -> unit) -> unit
    val is_generated_per_class : t -> IR.Typ.Name.t option

    If the fact is generated once for each class, return the corresponding class.

    val entrypoint : IR.Procname.t -> t
    val extends : IR.Typ.Name.t -> IR.Typ.Name.t -> t
    val virtual_call : +Fact (infer.Datalog.Fact)

    Module Datalog.Fact

    type t
    val to_string : t -> string
    val iter_fact_types : (string -> unit) -> unit
    val is_generated_per_class : t -> IR.Typ.Name.t option

    If the fact is generated once for each class, return the corresponding class.

    val entrypoint : IR.Procname.t -> t
    val extends : IR.Typ.Name.t -> IR.Typ.Name.t -> t
    val virtual_call : IR.Procname.t -> IBase.Location.t -> IR.Ident.t -> @@ -26,4 +26,4 @@ IR.Ident.t -> IR.Fieldname.t -> IR.Ident.t -> - t
    val move_load : IR.Procname.t -> IR.Ident.t -> IR.Pvar.t -> t
    val move_store : IR.Procname.t -> IR.Pvar.t -> IR.Ident.t -> t
    \ No newline at end of file + t
    val move_load : IR.Procname.t -> IR.Ident.t -> IR.Pvar.t -> t
    val move_store : IR.Procname.t -> IR.Pvar.t -> IR.Ident.t -> t
    diff --git a/website/static/odoc/next/infer/Datalog/Factgen/index.html b/website/static/odoc/next/infer/Datalog/Factgen/index.html index 1b756a4f8aa..29aa5a6bf39 100644 --- a/website/static/odoc/next/infer/Datalog/Factgen/index.html +++ b/website/static/odoc/next/infer/Datalog/Factgen/index.html @@ -1,2 +1,2 @@ -Factgen (infer.Datalog.Factgen)

    Module Datalog.Factgen

    val emit_facts : Absint.IntraproceduralAnalysis.t -> unit

    Generates datalog facts for a given procedure description.

    \ No newline at end of file +Factgen (infer.Datalog.Factgen)

    Module Datalog.Factgen

    val emit_facts : Absint.IntraproceduralAnalysis.t -> unit

    Generates datalog facts for a given procedure description.

    diff --git a/website/static/odoc/next/infer/Datalog/Reflect/index.html b/website/static/odoc/next/infer/Datalog/Reflect/index.html index b713f7dd500..e2404caaa41 100644 --- a/website/static/odoc/next/infer/Datalog/Reflect/index.html +++ b/website/static/odoc/next/infer/Datalog/Reflect/index.html @@ -1,4 +1,4 @@ -Reflect (infer.Datalog.Reflect)

    Module Datalog.Reflect

    type refl_call = {
    1. refl_ms : string;
    2. caller_cl : string;
    3. caller_ms : string;
    }
    val get_method_refl_calls : +Reflect (infer.Datalog.Reflect)

    Module Datalog.Reflect

    type refl_call = {
    1. refl_ms : string;
    2. caller_cl : string;
    3. caller_ms : string;
    }
    val get_method_refl_calls : Javalib_pack.JCode.jcode Javalib_pack.Javalib.concrete_method -> - refl_call list

    Returns the list of reflexive calls inside a concrete method. A call is represented by (reflective_method_signature, caller_class, caller_method_signature)

    \ No newline at end of file + refl_call list

    Returns the list of reflexive calls inside a concrete method. A call is represented by (reflective_method_signature, caller_class, caller_method_signature)

    diff --git a/website/static/odoc/next/infer/Datalog/index.html b/website/static/odoc/next/infer/Datalog/index.html index 52e80e06b32..b5de8231e86 100644 --- a/website/static/odoc/next/infer/Datalog/index.html +++ b/website/static/odoc/next/infer/Datalog/index.html @@ -1,2 +1,2 @@ -Datalog (infer.Datalog)

    Module Datalog

    module DatalogAnalysis : sig ... end
    module Fact : sig ... end
    module Factgen : sig ... end
    module Reflect : sig ... end
    \ No newline at end of file +Datalog (infer.Datalog)

    Module Datalog

    module DatalogAnalysis : sig ... end
    module Fact : sig ... end
    module Factgen : sig ... end
    module Reflect : sig ... end
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangAst/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangAst/index.html index 1af1f2dd19d..b70517935b1 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangAst/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangAst/index.html @@ -1,5 +1,5 @@ -ErlangAst (infer.ErlangFrontend.ErlangAst)

    Module ErlangFrontend.ErlangAst

    Erlang abstract forms, following https://erlang.org/doc/apps/erts/absform.html

    Basics

    type module_reference =
    1. | ModuleName of string
    2. | ModuleMissing
    3. | ModuleVariable of string
    val sexp_of_module_reference : module_reference -> Sexplib0.Sexp.t
    type function_reference =
    1. | FunctionName of string
    2. | FunctionVariable of string
    val sexp_of_function_reference : function_reference -> Sexplib0.Sexp.t
    type function_ = {
    1. module_ : module_reference;
    2. function_ : function_reference;
    3. arity : int;
    }
    val sexp_of_function_ : function_ -> Sexplib0.Sexp.t
    type location = {
    1. line : int;
    2. col : int;
    }
    val sexp_of_location : location -> Sexplib0.Sexp.t
    type record_name = string
    val sexp_of_record_name : record_name -> Sexplib0.Sexp.t
    type binary_operator =
    1. | Add
    2. | And
    3. | AndAlso
    4. | AtLeast
    5. | AtMost
    6. | BAnd
    7. | BOr
    8. | Bsl
    9. | Bsr
    10. | BXor
    11. | Equal
    12. | ExactlyEqual
    13. | ExactlyNotEqual
    14. | FDiv
    15. | Greater
    16. | IDiv
    17. | Less
    18. | ListAdd
    19. | ListSub
    20. | Mul
    21. | NotEqual
    22. | Or
    23. | OrElse
    24. | Rem
    25. | Send
    26. | Sub
    27. | Xor
    val sexp_of_binary_operator : binary_operator -> Sexplib0.Sexp.t
    type unary_operator =
    1. | UBNot
    2. | UMinus
    3. | UNot
    val sexp_of_unary_operator : unary_operator -> Sexplib0.Sexp.t
    type association_kind =
    1. | Arrow
    2. | Exact
    val sexp_of_association_kind : association_kind -> Sexplib0.Sexp.t
    type exception_ =
    1. | Atom of string
    2. | Pattern of string
    val sexp_of_exception_ : exception_ -> Sexplib0.Sexp.t
    type type_specifier = unit
    val sexp_of_type_specifier : type_specifier -> Sexplib0.Sexp.t

    S8.2: Atomic literals

    type literal =
    1. | Atom of string
    2. | Char of string
    3. | Float of float
    4. | Int of string
    5. | String of string
    val sexp_of_literal : literal -> Sexplib0.Sexp.t

    S8.4: Expressions

    type body = expression list
    and simple_expression =
    1. | BinaryOperator of expression * binary_operator * expression
    2. | BitstringComprehension of {
      1. expression : expression;
      2. qualifiers : qualifier list;
      }
    3. | BitstringConstructor of bin_element list
    4. | Block of body
    5. | Call of {
      1. module_ : expression option;
      2. function_ : expression;
      3. args : expression list;
      }
    6. | Case of {
      1. expression : expression;
      2. cases : case_clause list;
      }
    7. | Catch of expression
    8. | Cons of {
      1. head : expression;
      2. tail : expression;
      }
    9. | Fun of function_
    10. | If of case_clause list
    11. | Lambda of {
      1. name : string option;
      2. cases : case_clause list;
      3. mutable procname : IR.Procname.t option;
      4. mutable captured : IR.Pvar.Set.t option;
      }
    12. | ListComprehension of {
      1. expression : expression;
      2. qualifiers : qualifier list;
      }
    13. | Literal of literal
    14. | Map of {
      1. map : expression option;
      2. updates : association list;
      }
    15. | MapComprehension of {
      1. expression : association;
      2. qualifiers : qualifier list;
      }
    16. | Match of {
      1. pattern : expression;
      2. body : expression;
      }
    17. | Nil
    18. | Receive of {
      1. cases : case_clause list;
      2. timeout : timeout option;
      }
    19. | RecordAccess of {
      1. record : expression;
      2. name : record_name;
      3. field : string;
      }
    20. | RecordIndex of {
      1. name : record_name;
      2. field : string;
      }
    21. | RecordUpdate of {
      1. record : expression option;
      2. name : record_name;
      3. updates : record_update list;
      }
    22. | TryCatch of {
      1. body : body;
      2. ok_cases : case_clause list;
      3. catch_cases : catch_clause list;
      4. after : body;
      }
    23. | Tuple of expression list
    24. | UnaryOperator of unary_operator * expression
    25. | Variable of {
      1. vname : string;
      2. mutable scope : IR.Procname.t option;
      }
    and expression = {
    1. location : location;
    2. simple_expression : simple_expression;
    }
    and qualifier =
    1. | BitsGenerator of {
      1. pattern : expression;
      2. expression : expression;
      }
    2. | Filter of expression
    3. | Generator of {
      1. pattern : expression;
      2. expression : expression;
      }
    4. | MapGenerator of {
      1. pattern : association;
      2. expression : expression;
      }
    and timeout = {
    1. time : expression;
    2. handler : body;
    }
    and bin_element = {
    1. expression : expression;
    2. size : expression option;
    3. types : type_specifier list option;
    }
    and record_update = {
    1. field : string option;
    2. expression : expression;
    }
    and association = {
    1. kind : association_kind;
    2. key : expression;
    3. value : expression;
    }

    S8.5 Clauses

    and 'pat clause = {
    1. location : location;
    2. patterns : 'pat list;
    3. guards : expression list list;
    4. body : body;
    }
    and case_clause = expression clause
    and catch_clause = catch_pattern clause
    and catch_pattern = {
    1. exception_ : exception_;
    2. pattern : expression;
    3. variable : string;
    }
    val sexp_of_body : body -> Sexplib0.Sexp.t
    val sexp_of_simple_expression : simple_expression -> Sexplib0.Sexp.t
    val sexp_of_expression : expression -> Sexplib0.Sexp.t
    val sexp_of_qualifier : qualifier -> Sexplib0.Sexp.t
    val sexp_of_timeout : timeout -> Sexplib0.Sexp.t
    val sexp_of_bin_element : bin_element -> Sexplib0.Sexp.t
    val sexp_of_record_update : record_update -> Sexplib0.Sexp.t
    val sexp_of_association : association -> Sexplib0.Sexp.t
    val sexp_of_clause : +ErlangAst (infer.ErlangFrontend.ErlangAst)

    Module ErlangFrontend.ErlangAst

    Erlang abstract forms, following https://erlang.org/doc/apps/erts/absform.html

    Basics

    type module_reference =
    1. | ModuleName of string
    2. | ModuleMissing
    3. | ModuleVariable of string
    val sexp_of_module_reference : module_reference -> Sexplib0.Sexp.t
    type function_reference =
    1. | FunctionName of string
    2. | FunctionVariable of string
    val sexp_of_function_reference : function_reference -> Sexplib0.Sexp.t
    type function_ = {
    1. module_ : module_reference;
    2. function_ : function_reference;
    3. arity : int;
    }
    val sexp_of_function_ : function_ -> Sexplib0.Sexp.t
    type location = {
    1. line : int;
    2. col : int;
    }
    val sexp_of_location : location -> Sexplib0.Sexp.t
    type record_name = string
    val sexp_of_record_name : record_name -> Sexplib0.Sexp.t
    type binary_operator =
    1. | Add
    2. | And
    3. | AndAlso
    4. | AtLeast
    5. | AtMost
    6. | BAnd
    7. | BOr
    8. | Bsl
    9. | Bsr
    10. | BXor
    11. | Equal
    12. | ExactlyEqual
    13. | ExactlyNotEqual
    14. | FDiv
    15. | Greater
    16. | IDiv
    17. | Less
    18. | ListAdd
    19. | ListSub
    20. | Mul
    21. | NotEqual
    22. | Or
    23. | OrElse
    24. | Rem
    25. | Send
    26. | Sub
    27. | Xor
    val sexp_of_binary_operator : binary_operator -> Sexplib0.Sexp.t
    type unary_operator =
    1. | UBNot
    2. | UMinus
    3. | UNot
    val sexp_of_unary_operator : unary_operator -> Sexplib0.Sexp.t
    type association_kind =
    1. | Arrow
    2. | Exact
    val sexp_of_association_kind : association_kind -> Sexplib0.Sexp.t
    type exception_ =
    1. | Atom of string
    2. | Pattern of string
    val sexp_of_exception_ : exception_ -> Sexplib0.Sexp.t
    type type_specifier = unit
    val sexp_of_type_specifier : type_specifier -> Sexplib0.Sexp.t

    S8.2: Atomic literals

    type literal =
    1. | Atom of string
    2. | Char of string
    3. | Float of float
    4. | Int of string
    5. | String of string
    val sexp_of_literal : literal -> Sexplib0.Sexp.t

    S8.4: Expressions

    type body = expression list
    and simple_expression =
    1. | BinaryOperator of expression * binary_operator * expression
    2. | BitstringComprehension of {
      1. expression : expression;
      2. qualifiers : qualifier list;
      }
    3. | BitstringConstructor of bin_element list
    4. | Block of body
    5. | Call of {
      1. module_ : expression option;
      2. function_ : expression;
      3. args : expression list;
      }
    6. | Case of {
      1. expression : expression;
      2. cases : case_clause list;
      }
    7. | Catch of expression
    8. | Cons of {
      1. head : expression;
      2. tail : expression;
      }
    9. | Fun of function_
    10. | If of case_clause list
    11. | Lambda of {
      1. name : string option;
      2. cases : case_clause list;
      3. mutable procname : IR.Procname.t option;
      4. mutable captured : IR.Pvar.Set.t option;
      }
    12. | ListComprehension of {
      1. expression : expression;
      2. qualifiers : qualifier list;
      }
    13. | Literal of literal
    14. | Map of {
      1. map : expression option;
      2. updates : association list;
      }
    15. | MapComprehension of {
      1. expression : association;
      2. qualifiers : qualifier list;
      }
    16. | Match of {
      1. pattern : expression;
      2. body : expression;
      }
    17. | Nil
    18. | Receive of {
      1. cases : case_clause list;
      2. timeout : timeout option;
      }
    19. | RecordAccess of {
      1. record : expression;
      2. name : record_name;
      3. field : string;
      }
    20. | RecordIndex of {
      1. name : record_name;
      2. field : string;
      }
    21. | RecordUpdate of {
      1. record : expression option;
      2. name : record_name;
      3. updates : record_update list;
      }
    22. | TryCatch of {
      1. body : body;
      2. ok_cases : case_clause list;
      3. catch_cases : catch_clause list;
      4. after : body;
      }
    23. | Tuple of expression list
    24. | UnaryOperator of unary_operator * expression
    25. | Variable of {
      1. vname : string;
      2. mutable scope : IR.Procname.t option;
      }
    and expression = {
    1. location : location;
    2. simple_expression : simple_expression;
    }
    and qualifier =
    1. | BitsGenerator of {
      1. pattern : expression;
      2. expression : expression;
      }
    2. | Filter of expression
    3. | Generator of {
      1. pattern : expression;
      2. expression : expression;
      }
    4. | MapGenerator of {
      1. pattern : association;
      2. expression : expression;
      }
    and timeout = {
    1. time : expression;
    2. handler : body;
    }
    and bin_element = {
    1. expression : expression;
    2. size : expression option;
    3. types : type_specifier list option;
    }
    and record_update = {
    1. field : string option;
    2. expression : expression;
    }
    and association = {
    1. kind : association_kind;
    2. key : expression;
    3. value : expression;
    }

    S8.5 Clauses

    and 'pat clause = {
    1. location : location;
    2. patterns : 'pat list;
    3. guards : expression list list;
    4. body : body;
    }
    and case_clause = expression clause
    and catch_clause = catch_pattern clause
    and catch_pattern = {
    1. exception_ : exception_;
    2. pattern : expression;
    3. variable : string;
    }
    val sexp_of_body : body -> Sexplib0.Sexp.t
    val sexp_of_simple_expression : simple_expression -> Sexplib0.Sexp.t
    val sexp_of_expression : expression -> Sexplib0.Sexp.t
    val sexp_of_qualifier : qualifier -> Sexplib0.Sexp.t
    val sexp_of_timeout : timeout -> Sexplib0.Sexp.t
    val sexp_of_bin_element : bin_element -> Sexplib0.Sexp.t
    val sexp_of_record_update : record_update -> Sexplib0.Sexp.t
    val sexp_of_association : association -> Sexplib0.Sexp.t
    val sexp_of_clause : 'pat. ('pat -> Sexplib0.Sexp.t) -> 'pat clause -> - Sexplib0.Sexp.t
    val sexp_of_case_clause : case_clause -> Sexplib0.Sexp.t
    val sexp_of_catch_clause : catch_clause -> Sexplib0.Sexp.t
    val sexp_of_catch_pattern : catch_pattern -> Sexplib0.Sexp.t

    S8.7 Types

    See also https://www.erlang.org/doc/reference_manual/typespec.html

    type atom_type =
    1. | Any
    2. | Literal of string
    val sexp_of_atom_type : atom_type -> Sexplib0.Sexp.t
    type integer_type =
    1. | Any
    2. | Literal of int
    3. | Range of {
      1. low : int;
      2. high : int;
      }
    4. | Neg
    5. | NonNeg
    6. | Pos
    val sexp_of_integer_type : integer_type -> Sexplib0.Sexp.t
    type type_ =
    1. | Any
    2. | Atom of atom_type
    3. | BitString of {
      1. start_size : int;
      2. segment_size : int;
      }
    4. | Integer of integer_type
    5. | List of list_type
    6. | Map
    7. | Nil
    8. | None
    9. | Pid
    10. | Port
    11. | Record of string
    12. | Reference
    13. | Remote of {
      1. module_ : string;
      2. type_ : string;
      }
    14. | Tuple of tuple_type
    15. | Union of type_ list
    16. | UserDefined of string
    17. | Var of string
    18. | Unsupported
    and list_type =
    1. | Proper of type_
    and tuple_type =
    1. | AnySize
    2. | FixedSize of type_ list
    val sexp_of_type_ : type_ -> Sexplib0.Sexp.t
    val sexp_of_list_type : list_type -> Sexplib0.Sexp.t
    val sexp_of_tuple_type : tuple_type -> Sexplib0.Sexp.t
    type spec_disjunct = {
    1. arguments : type_ list;
    2. return : type_;
    3. constraints : type_ IStdlib.IStd.String.Map.t;
    }
    val sexp_of_spec_disjunct : spec_disjunct -> Sexplib0.Sexp.t
    type spec = spec_disjunct list
    val sexp_of_spec : spec -> Sexplib0.Sexp.t

    S8.1: Module declarations and forms

    type record_field = {
    1. field_name : string;
    2. initializer_ : expression option;
    }
    val sexp_of_record_field : record_field -> Sexplib0.Sexp.t
    type attribute_record = {
    1. tag : string;
    2. value : string;
    }
    val sexp_of_attribute_record : attribute_record -> Sexplib0.Sexp.t
    type attribute =
    1. | StringAttribute of attribute_record
    val sexp_of_attribute : attribute -> Sexplib0.Sexp.t
    type simple_form =
    1. | Export of function_ list
    2. | Import of {
      1. module_name : string;
      2. functions : function_ list;
      }
    3. | Module of string
    4. | Attribute of attribute
    5. | File of {
      1. path : string;
      }
    6. | Function of {
      1. function_ : function_;
      2. clauses : case_clause list;
      }
    7. | Record of {
      1. name : string;
      2. fields : record_field list;
      }
    8. | Spec of {
      1. function_ : function_;
      2. spec : spec;
      }
    9. | Type of {
      1. name : string;
      2. type_ : type_;
      }
    val sexp_of_simple_form : simple_form -> Sexplib0.Sexp.t
    type form = {
    1. location : location;
    2. simple_form : simple_form;
    }
    val sexp_of_form : form -> Sexplib0.Sexp.t
    type module_ = form list
    val sexp_of_module_ : module_ -> Sexplib0.Sexp.t
    \ No newline at end of file + Sexplib0.Sexp.t
    val sexp_of_case_clause : case_clause -> Sexplib0.Sexp.t
    val sexp_of_catch_clause : catch_clause -> Sexplib0.Sexp.t
    val sexp_of_catch_pattern : catch_pattern -> Sexplib0.Sexp.t

    S8.7 Types

    See also https://www.erlang.org/doc/reference_manual/typespec.html

    type atom_type =
    1. | Any
    2. | Literal of string
    val sexp_of_atom_type : atom_type -> Sexplib0.Sexp.t
    type integer_type =
    1. | Any
    2. | Literal of int
    3. | Range of {
      1. low : int;
      2. high : int;
      }
    4. | Neg
    5. | NonNeg
    6. | Pos
    val sexp_of_integer_type : integer_type -> Sexplib0.Sexp.t
    type type_ =
    1. | Any
    2. | Atom of atom_type
    3. | BitString of {
      1. start_size : int;
      2. segment_size : int;
      }
    4. | Integer of integer_type
    5. | List of list_type
    6. | Map
    7. | Nil
    8. | None
    9. | Pid
    10. | Port
    11. | Record of string
    12. | Reference
    13. | Remote of {
      1. module_ : string;
      2. type_ : string;
      }
    14. | Tuple of tuple_type
    15. | Union of type_ list
    16. | UserDefined of string
    17. | Var of string
    18. | Unsupported
    and list_type =
    1. | Proper of type_
    and tuple_type =
    1. | AnySize
    2. | FixedSize of type_ list
    val sexp_of_type_ : type_ -> Sexplib0.Sexp.t
    val sexp_of_list_type : list_type -> Sexplib0.Sexp.t
    val sexp_of_tuple_type : tuple_type -> Sexplib0.Sexp.t
    type spec_disjunct = {
    1. arguments : type_ list;
    2. return : type_;
    3. constraints : type_ IStdlib.IStd.String.Map.t;
    }
    val sexp_of_spec_disjunct : spec_disjunct -> Sexplib0.Sexp.t
    type spec = spec_disjunct list
    val sexp_of_spec : spec -> Sexplib0.Sexp.t

    S8.1: Module declarations and forms

    type record_field = {
    1. field_name : string;
    2. initializer_ : expression option;
    }
    val sexp_of_record_field : record_field -> Sexplib0.Sexp.t
    type attribute_record = {
    1. tag : string;
    2. value : string;
    }
    val sexp_of_attribute_record : attribute_record -> Sexplib0.Sexp.t
    type attribute =
    1. | StringAttribute of attribute_record
    val sexp_of_attribute : attribute -> Sexplib0.Sexp.t
    type simple_form =
    1. | Export of function_ list
    2. | Import of {
      1. module_name : string;
      2. functions : function_ list;
      }
    3. | Module of string
    4. | Attribute of attribute
    5. | File of {
      1. path : string;
      }
    6. | Function of {
      1. function_ : function_;
      2. clauses : case_clause list;
      }
    7. | Record of {
      1. name : string;
      2. fields : record_field list;
      }
    8. | Spec of {
      1. function_ : function_;
      2. spec : spec;
      }
    9. | Type of {
      1. name : string;
      2. type_ : type_;
      }
    val sexp_of_simple_form : simple_form -> Sexplib0.Sexp.t
    type form = {
    1. location : location;
    2. simple_form : simple_form;
    }
    val sexp_of_form : form -> Sexplib0.Sexp.t
    type module_ = form list
    val sexp_of_module_ : module_ -> Sexplib0.Sexp.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangAstValidator/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangAstValidator/index.html index e35801d1573..e96a6807b94 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangAstValidator/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangAstValidator/index.html @@ -1,2 +1,2 @@ -ErlangAstValidator (infer.ErlangFrontend.ErlangAstValidator)

    Module ErlangFrontend.ErlangAstValidator

    Enforce additional invariants and constraints on the AST based on https://erlang.org/doc/apps/erts/absform.html

    val validate : (_, _) ErlangEnvironment.t -> ErlangAst.module_ -> bool

    Validate a module.

    \ No newline at end of file +ErlangAstValidator (infer.ErlangFrontend.ErlangAstValidator)

    Module ErlangFrontend.ErlangAstValidator

    Enforce additional invariants and constraints on the AST based on https://erlang.org/doc/apps/erts/absform.html

    val validate : (_, _) ErlangEnvironment.t -> ErlangAst.module_ -> bool

    Validate a module.

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangBlock/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangBlock/index.html index b555dbfe203..c1a0af09a9d 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangBlock/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangBlock/index.html @@ -1,11 +1,11 @@ -ErlangBlock (infer.ErlangFrontend.ErlangBlock)

    Module ErlangFrontend.ErlangBlock

    module Env = ErlangEnvironment
    type t = {
    1. start : IR.Procdesc.Node.t;
    2. exit_success : IR.Procdesc.Node.t;
    3. exit_failure : IR.Procdesc.Node.t;
    }
    val (|~~>) : IR.Procdesc.Node.t -> IR.Procdesc.Node.t list -> unit
    val make_success : (IR.Procdesc.t Env.present, _) Env.t -> t

    Two nodes: start=exit_success, and exit_failure is distinct.

    val make_stuck : (IR.Procdesc.t Env.present, _) Env.t -> t

    Like make_success, but start/exit_success contains "prune false".

    val make_fail : (IR.Procdesc.t Env.present, _) Env.t -> IR.Procname.t -> t

    Like make_success, but start/exit_success calls the given function. The name is "fail" because the given function is supposed to be later (e.g., in Pulse) modeled by a crash.

    val all : (IR.Procdesc.t Env.present, _) Env.t -> t list -> t

    Chain a list of blocks together in a conjunctive style: a failure in any block leads to a global failure, and successes lead to the next block.

    val any : (IR.Procdesc.t Env.present, _) Env.t -> t list -> t

    Chain a list of blocks together in a disjunctive style: a success in any block leads to a global success, and failures lead to the next block.

    val make_instruction : +ErlangBlock (infer.ErlangFrontend.ErlangBlock)

    Module ErlangFrontend.ErlangBlock

    module Env = ErlangEnvironment
    type t = {
    1. start : IR.Procdesc.Node.t;
    2. exit_success : IR.Procdesc.Node.t;
    3. exit_failure : IR.Procdesc.Node.t;
    }
    val (|~~>) : IR.Procdesc.Node.t -> IR.Procdesc.Node.t list -> unit
    val make_success : (IR.Procdesc.t Env.present, _) Env.t -> t

    Two nodes: start=exit_success, and exit_failure is distinct.

    val make_stuck : (IR.Procdesc.t Env.present, _) Env.t -> t

    Like make_success, but start/exit_success contains "prune false".

    val make_fail : (IR.Procdesc.t Env.present, _) Env.t -> IR.Procname.t -> t

    Like make_success, but start/exit_success calls the given function. The name is "fail" because the given function is supposed to be later (e.g., in Pulse) modeled by a crash.

    val all : (IR.Procdesc.t Env.present, _) Env.t -> t list -> t

    Chain a list of blocks together in a conjunctive style: a failure in any block leads to a global failure, and successes lead to the next block.

    val any : (IR.Procdesc.t Env.present, _) Env.t -> t list -> t

    Chain a list of blocks together in a disjunctive style: a success in any block leads to a global success, and failures lead to the next block.

    val make_load : (IR.Procdesc.t Env.present, _) Env.t -> IR.Ident.t -> IR.Exp.t -> IR.Typ.t -> - t
    val make_branch : (IR.Procdesc.t Env.present, _) Env.t -> IR.Exp.t -> t

    Make a branch based on the condition: go to success if true, go to failure if false

    \ No newline at end of file + t
    val make_branch : (IR.Procdesc.t Env.present, _) Env.t -> IR.Exp.t -> t

    Make a branch based on the condition: go to success if true, go to failure if false

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Key/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Key/index.html index e003db4cdd2..82d0ae19da7 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Key/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Key)

    Module Map.Key

    type t = T.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    \ No newline at end of file +Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Key)

    Module Map.Key

    type t = T.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/argument-1-Key/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/argument-1-Key/index.html index ea78f9baac5..1fbb2ab34f7 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    \ No newline at end of file +Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_bin_io.Key)

    Parameter Provide_bin_io.Key

    val bin_size_t : Key.t Bin_prot.Size.sizer
    val bin_write_t : Key.t Bin_prot.Write.writer
    val bin_read_t : Key.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Key.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Key.t Bin_prot.Type_class.writer
    val bin_reader_t : Key.t Bin_prot.Type_class.reader
    val bin_t : Key.t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/index.html index 251a41f8449..45c99d82c63 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_bin_io/index.html @@ -1,2 +1,2 @@ -Provide_bin_io (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    \ No newline at end of file +Provide_bin_io (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_bin_io)

    Module Map.Provide_bin_io

    Parameters

    module Key : sig ... end

    Signature

    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/argument-1-Key/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/argument-1-Key/index.html index d1be9167007..ce3fcf37973 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    \ No newline at end of file +Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_hash.Key)

    Parameter Provide_hash.Key

    val hash_fold_t : Base__.Hash.state -> Key.t -> Base__.Hash.state
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/index.html index ef12bc935fb..962d6a2d26a 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_hash/index.html @@ -1,4 +1,4 @@ -Provide_hash (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : +Provide_hash (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_hash)

    Module Map.Provide_hash

    Parameters

    module Key : sig ... end

    Signature

    val hash_fold_t : 'a Base__Ppx_hash_lib.hash_fold -> - 'a t Base__Ppx_hash_lib.hash_fold
    \ No newline at end of file + 'a t Base__Ppx_hash_lib.hash_fold
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/argument-1-Key/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/argument-1-Key/index.html index b37ec0aa2b4..7d3518cdced 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    \ No newline at end of file +Key (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_of_sexp.Key)

    Parameter Provide_of_sexp.Key

    val t_of_sexp : Sexplib0.Sexp.t -> Key.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/index.html index 1a7991deb51..29ea4dc0195 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/Provide_of_sexp/index.html @@ -1,2 +1,2 @@ -Provide_of_sexp (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    \ No newline at end of file +Provide_of_sexp (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map.Provide_of_sexp)

    Module Map.Provide_of_sexp

    Parameters

    module Key : sig ... end

    Signature

    val t_of_sexp : (Sexplib0.Sexp.t -> 'a__002_) -> Sexplib0.Sexp.t -> 'a__002_ t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/index.html index c81869b3c63..678f6a2df22 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Map/index.html @@ -1,10 +1,10 @@ -Map (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map)

    Module UnqualifiedFunction.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : +Map (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Map)

    Module UnqualifiedFunction.Map

    module Key : sig ... end
    type 'a t = (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Map.t
    val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
    val empty : 'a t
    val singleton : Key.t -> 'a -> 'a t
    val map_keys : 'v t -> - f:(Key.t -> Key.t) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : + f:(Key.t -> Key.t) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val map_keys_exn : 'v t -> f:(Key.t -> Key.t) -> 'v t
    val of_alist : (Key.t * 'a) list -> [ `Duplicate_key of Key.t | `Ok of 'a t ]
    val of_alist_or_error : (Key.t * 'a) list -> 'a t Base__.Or_error.t
    val of_alist_exn : (Key.t * 'a) list -> 'a t
    val of_alist_multi : (Key.t * 'a) list -> 'a list t
    val of_alist_fold : (Key.t * 'a) list -> init:'b -> f:('b -> 'a -> 'b) -> 'b t
    val of_alist_reduce : (Key.t * 'a) list -> f:('a -> 'a -> 'a) -> 'a t
    val of_sorted_array : (Key.t * 'a) array -> 'a t Base__.Or_error.t
    val of_sorted_array_unchecked : (Key.t * 'a) array -> 'a t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Key.t * 'a) -> 'a t
    val of_increasing_sequence : (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence : (Key.t * 'a) Base__.Sequence.t -> @@ -12,105 +12,105 @@ (Key.t * 'a) Base__.Sequence.t -> 'a t Base__.Or_error.t
    val of_sequence_exn : (Key.t * 'a) Base__.Sequence.t -> 'a t
    val of_sequence_multi : (Key.t * 'a) Base__.Sequence.t -> 'a list t
    val of_sequence_fold : (Key.t * 'a) Base__.Sequence.t -> - init:'b -> - f:('b -> 'a -> 'b) -> + init:'b -> + f:('b -> 'a -> 'b) -> 'b t
    val of_sequence_reduce : (Key.t * 'a) Base__.Sequence.t -> - f:('a -> 'a -> 'a) -> + f:('a -> 'a -> 'a) -> 'a t
    val of_iteri : - iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> - [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : + iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> + [ `Duplicate_key of Key.t | `Ok of 'v t ]
    val of_iteri_exn : iteri:(f:(key:Key.t -> data:'v -> unit) -> unit) -> 'v t
    val of_tree : (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t -> 'a t
    val of_hashtbl_exn : (Key.t, 'a) Core__.Hashtbl.t -> 'a t
    val of_key_set : (Key.t, Key.comparator_witness) Base.Set.t -> - f:(Key.t -> 'v) -> + f:(Key.t -> 'v) -> 'v t
    val quickcheck_generator : Key.t Core__.Quickcheck.Generator.t -> 'a Core__.Quickcheck.Generator.t -> - 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : + 'a t Core__.Quickcheck.Generator.t
    val invariants : 'a t -> bool
    val is_empty : 'a t -> bool
    val length : 'a t -> int
    val add : 'a t -> key:Key.t -> data:'a -> 'a t Base__Map_intf.Or_duplicate.t
    val add_exn : 'a t -> key:Key.t -> data:'a -> 'a t
    val set : 'a t -> key:Key.t -> data:'a -> 'a t
    val add_multi : 'a list t -> key:Key.t -> data:'a -> 'a list t
    val remove_multi : 'a list t -> Key.t -> 'a list t
    val find_multi : 'a list t -> Key.t -> 'a list
    val change : 'a t -> Key.t -> f:('a option -> 'a option) -> 'a t
    val update : 'a t -> Key.t -> f:('a option -> 'a) -> 'a t
    val find : 'a t -> Key.t -> 'a option
    val find_exn : 'a t -> Key.t -> 'a
    val remove : 'a t -> Key.t -> 'a t
    val mem : 'a t -> Key.t -> bool
    val iter_keys : 'a t -> f:(Key.t -> unit) -> unit
    val iter : 'a t -> f:('a -> unit) -> unit
    val iteri : 'a t -> f:(key:Key.t -> data:'a -> unit) -> unit
    val iteri_until : 'a t -> - f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> + f:(key:Key.t -> data:'a -> Base__Map_intf.Continue_or_stop.t) -> Base__Map_intf.Finished_or_unfinished.t
    val iter2 : 'a t -> 'b t -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> - unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> unit) -> + unit
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b) -> 'b t
    val fold : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold_until : 'a t -> - init:'acc -> - f: - (key:Key.t -> - data:'a -> + init:'acc -> + f: + (key:Key.t -> + data:'a -> 'acc -> ('acc, 'final) Base__.Container.Continue_or_stop.t) -> - finish:('acc -> 'final) -> - 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : + finish:('acc -> 'final) -> + 'final
    val fold_right : 'a t -> init:'b -> f:(key:Key.t -> data:'a -> 'b -> 'b) -> 'b
    val fold2 : 'a t -> 'b t -> - init:'c -> - f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> - 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : + init:'c -> + f:(key:Key.t -> data:('a, 'b) Base__Map_intf.Merge_element.t -> 'c -> 'c) -> + 'c
    val filter_keys : 'a t -> f:(Key.t -> bool) -> 'a t
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(key:Key.t -> data:'a -> 'b option) -> 'b t
    val partition_mapi : 'a t -> - f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> - 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : - ?key_order:[ `Decreasing | `Increasing ] -> + f:(key:Key.t -> data:'a -> ('b, 'c) Base__.Either.t) -> + 'b t * 'c t
    val partition_map : 'a t -> f:('a -> ('b, 'c) Base__.Either.t) -> 'b t * 'c t
    val partitioni_tf : 'a t -> f:(key:Key.t -> data:'a -> bool) -> 'a t * 'a t
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val combine_errors : 'a Base__.Or_error.t t -> 'a t Base__.Or_error.t
    val compare_direct : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val keys : 'a t -> Key.t list
    val data : 'a t -> 'a list
    val to_alist : + ?key_order:[ `Decreasing | `Increasing ] -> 'a t -> (Key.t * 'a) list
    val merge : 'a t -> 'b t -> - f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> + f:(key:Key.t -> ('a, 'b) Base__Map_intf.Merge_element.t -> 'c option) -> 'c t
    val merge_skewed : 'v t -> 'v t -> - combine:(key:Key.t -> 'v -> 'v -> 'v) -> + combine:(key:Key.t -> 'v -> 'v -> 'v) -> 'v t
    val symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> + data_equal:('a -> 'a -> bool) -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t Base__.Sequence.t
    val fold_symmetric_diff : 'a t -> 'a t -> - data_equal:('a -> 'a -> bool) -> - init:'c -> - f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> - 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : - lower_part:'a t -> - upper_part:'a t -> + data_equal:('a -> 'a -> bool) -> + init:'c -> + f:('c -> (Key.t, 'a) Base__Map_intf.Symmetric_diff_element.t -> 'c) -> + 'c
    val min_elt : 'a t -> (Key.t * 'a) option
    val min_elt_exn : 'a t -> Key.t * 'a
    val max_elt : 'a t -> (Key.t * 'a) option
    val max_elt_exn : 'a t -> Key.t * 'a
    val for_all : 'a t -> f:('a -> bool) -> bool
    val for_alli : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val exists : 'a t -> f:('a -> bool) -> bool
    val existsi : 'a t -> f:(key:Key.t -> data:'a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val counti : 'a t -> f:(key:Key.t -> data:'a -> bool) -> int
    val split : 'a t -> Key.t -> 'a t * (Key.t * 'a) option * 'a t
    val append : + lower_part:'a t -> + upper_part:'a t -> [ `Ok of 'a t | `Overlapping_key_ranges ]
    val subrange : 'a t -> - lower_bound:Key.t Base__.Maybe_bound.t -> - upper_bound:Key.t Base__.Maybe_bound.t -> + lower_bound:Key.t Base__.Maybe_bound.t -> + upper_bound:Key.t Base__.Maybe_bound.t -> 'a t
    val fold_range_inclusive : 'a t -> - min:Key.t -> - max:Key.t -> - init:'b -> - f:(key:Key.t -> data:'a -> 'b -> 'b) -> - 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : + min:Key.t -> + max:Key.t -> + init:'b -> + f:(key:Key.t -> data:'a -> 'b -> 'b) -> + 'b
    val range_to_alist : 'a t -> min:Key.t -> max:Key.t -> (Key.t * 'a) list
    val closest_key : 'a t -> [ `Greater_or_equal_to | `Greater_than | `Less_or_equal_to | `Less_than ] -> Key.t -> (Key.t * 'a) option
    val nth : 'a t -> int -> (Key.t * 'a) option
    val nth_exn : 'a t -> int -> Key.t * 'a
    val rank : 'a t -> Key.t -> int option
    val to_tree : 'a t -> (Key.t, 'a, Key.comparator_witness) Core__Map_intf.Tree.t
    val to_sequence : - ?order:[ `Decreasing_key | `Increasing_key ] -> - ?keys_greater_or_equal_to:Key.t -> - ?keys_less_or_equal_to:Key.t -> + ?order:[ `Decreasing_key | `Increasing_key ] -> + ?keys_greater_or_equal_to:Key.t -> + ?keys_less_or_equal_to:Key.t -> 'a t -> (Key.t * 'a) Base__.Sequence.t
    val binary_search_segmented : 'a t -> - segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> + segment_of:(key:Key.t -> data:'a -> [ `Left | `Right ]) -> Base__.Binary_searchable.Which_target_by_segment.t -> (Key.t * 'a) option
    val binary_search_subrange : 'a t -> - compare:(key:Key.t -> data:'a -> 'bound -> int) -> - lower_bound:'bound Base__.Maybe_bound.t -> - upper_bound:'bound Base__.Maybe_bound.t -> + compare:(key:Key.t -> data:'a -> 'bound -> int) -> + lower_bound:'bound Base__.Maybe_bound.t -> + upper_bound:'bound Base__.Maybe_bound.t -> 'a t
    val key_set : 'a t -> (Key.t, Key.comparator_witness) Base.Set.t
    val validate : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> 'a Validate.check -> 'a t Validate.check
    val validatei : - name:(Key.t -> Core__.Import.string) -> + name:(Key.t -> Core__.Import.string) -> (Key.t * 'a) Validate.check -> 'a t Validate.check
    val quickcheck_observer : Key.t Core__.Quickcheck.Observer.t -> @@ -118,4 +118,4 @@ 'v t Core__.Quickcheck.Observer.t
    val quickcheck_shrinker : Key.t Core__.Quickcheck.Shrinker.t -> 'v Core__.Quickcheck.Shrinker.t -> - 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    \ No newline at end of file + 'v t Core__.Quickcheck.Shrinker.t
    module Provide_of_sexp (Key : sig ... end) : sig ... end
    module Provide_bin_io (Key : sig ... end) : sig ... end
    module Provide_hash (Key : sig ... end) : sig ... end
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Replace_polymorphic_compare/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Replace_polymorphic_compare/index.html index 29e856fd55d..f02e70be6b6 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Replace_polymorphic_compare/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Replace_polymorphic_compare/index.html @@ -1,2 +1,2 @@ -Replace_polymorphic_compare (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Replace_polymorphic_compare)

    Module UnqualifiedFunction.Replace_polymorphic_compare

    val (>=) : T.t -> T.t -> bool
    val (<=) : T.t -> T.t -> bool
    val (=) : T.t -> T.t -> bool
    val (>) : T.t -> T.t -> bool
    val (<) : T.t -> T.t -> bool
    val (<>) : T.t -> T.t -> bool
    val equal : T.t -> T.t -> bool
    val compare : T.t -> T.t -> int
    val min : T.t -> T.t -> T.t
    val max : T.t -> T.t -> T.t
    \ No newline at end of file +Replace_polymorphic_compare (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Replace_polymorphic_compare)

    Module UnqualifiedFunction.Replace_polymorphic_compare

    val (>=) : T.t -> T.t -> bool
    val (<=) : T.t -> T.t -> bool
    val (=) : T.t -> T.t -> bool
    val (>) : T.t -> T.t -> bool
    val (<) : T.t -> T.t -> bool
    val (<>) : T.t -> T.t -> bool
    val equal : T.t -> T.t -> bool
    val compare : T.t -> T.t -> int
    val min : T.t -> T.t -> T.t
    val max : T.t -> T.t -> T.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Elt/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Elt/index.html index 16e8d364c08..52deeca9d4e 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Elt/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Elt)

    Module Set.Elt

    type t = T.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    \ No newline at end of file +Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Elt)

    Module Set.Elt

    type t = T.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    type comparator_witness = comparator_witness
    val comparator : (t, comparator_witness) Core__Comparator.comparator
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Named/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Named/index.html index 8c41a1e2f01..e7e0aa1d194 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Named/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Named/index.html @@ -1,2 +1,2 @@ -Named (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Named)

    Module Set.Named

    val is_subset : named -> of_:named -> unit Base__.Or_error.t
    val equal : named -> named -> unit Base__.Or_error.t
    \ No newline at end of file +Named (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Named)

    Module Set.Named

    val is_subset : named -> of_:named -> unit Base__.Or_error.t
    val equal : named -> named -> unit Base__.Or_error.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/argument-1-Elt/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/argument-1-Elt/index.html index 4ac687a788b..32a10d48593 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_bin_io.Elt)

    Parameter Provide_bin_io.Elt

    val bin_size_t : Elt.t Bin_prot.Size.sizer
    val bin_write_t : Elt.t Bin_prot.Write.writer
    val bin_read_t : Elt.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Elt.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Elt.t Bin_prot.Type_class.writer
    val bin_reader_t : Elt.t Bin_prot.Type_class.reader
    val bin_t : Elt.t Bin_prot.Type_class.t
    \ No newline at end of file +Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_bin_io.Elt)

    Parameter Provide_bin_io.Elt

    val bin_size_t : Elt.t Bin_prot.Size.sizer
    val bin_write_t : Elt.t Bin_prot.Write.writer
    val bin_read_t : Elt.t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> Elt.t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : Elt.t Bin_prot.Type_class.writer
    val bin_reader_t : Elt.t Bin_prot.Type_class.reader
    val bin_t : Elt.t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/index.html index a1d708f806f..8e05cb406de 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_bin_io/index.html @@ -1,2 +1,2 @@ -Provide_bin_io (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_bin_io)

    Module Set.Provide_bin_io

    Parameters

    module Elt : sig ... end

    Signature

    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    \ No newline at end of file +Provide_bin_io (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_bin_io)

    Module Set.Provide_bin_io

    Parameters

    module Elt : sig ... end

    Signature

    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/argument-1-Elt/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/argument-1-Elt/index.html index 821d58497df..9227215d2d0 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_hash.Elt)

    Parameter Provide_hash.Elt

    val hash_fold_t : Base__.Hash.state -> Elt.t -> Base__.Hash.state
    \ No newline at end of file +Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_hash.Elt)

    Parameter Provide_hash.Elt

    val hash_fold_t : Base__.Hash.state -> Elt.t -> Base__.Hash.state
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/index.html index 779209a165c..cd0cc29e97a 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_hash/index.html @@ -1,2 +1,2 @@ -Provide_hash (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_hash)

    Module Set.Provide_hash

    Parameters

    module Elt : sig ... end

    Signature

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    \ No newline at end of file +Provide_hash (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_hash)

    Module Set.Provide_hash

    Parameters

    module Elt : sig ... end

    Signature

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/argument-1-Elt/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/argument-1-Elt/index.html index 608070bbc28..ef9b77e1845 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/argument-1-Elt/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/argument-1-Elt/index.html @@ -1,2 +1,2 @@ -Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_of_sexp.Elt)

    Parameter Provide_of_sexp.Elt

    val t_of_sexp : Sexplib0.Sexp.t -> Elt.t
    \ No newline at end of file +Elt (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_of_sexp.Elt)

    Parameter Provide_of_sexp.Elt

    val t_of_sexp : Sexplib0.Sexp.t -> Elt.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/index.html index d7df3003f1b..b32fb05a62c 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/Provide_of_sexp/index.html @@ -1,2 +1,2 @@ -Provide_of_sexp (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_of_sexp)

    Module Set.Provide_of_sexp

    Parameters

    module Elt : sig ... end

    Signature

    val t_of_sexp : Sexplib0.Sexp.t -> t
    \ No newline at end of file +Provide_of_sexp (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set.Provide_of_sexp)

    Module Set.Provide_of_sexp

    Parameters

    module Elt : sig ... end

    Signature

    val t_of_sexp : Sexplib0.Sexp.t -> t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/index.html index 804d01eca0c..5fc5ce4b55c 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/Set/index.html @@ -1,48 +1,48 @@ -Set (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set)

    Module UnqualifiedFunction.Set

    module Elt : sig ... end
    type t = (Elt.t, Elt.comparator_witness) Base.Set.t
    val compare : t Base__Ppx_compare_lib.compare
    type named = (Elt.t, Elt.comparator_witness) Core__Set_intf.Named.t
    val length : t -> int
    val is_empty : t -> bool
    val iter : t -> f:(Elt.t -> unit) -> unit
    val fold : t -> init:'accum -> f:('accum -> Elt.t -> 'accum) -> 'accum
    val fold_result : +Set (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.Set)

    Module UnqualifiedFunction.Set

    module Elt : sig ... end
    type t = (Elt.t, Elt.comparator_witness) Base.Set.t
    val compare : t Base__Ppx_compare_lib.compare
    type named = (Elt.t, Elt.comparator_witness) Core__Set_intf.Named.t
    val length : t -> int
    val is_empty : t -> bool
    val iter : t -> f:(Elt.t -> unit) -> unit
    val fold : t -> init:'accum -> f:('accum -> Elt.t -> 'accum) -> 'accum
    val fold_result : t -> - init:'accum -> - f:('accum -> Elt.t -> ('accum, 'e) Base__.Result.t) -> - ('accum, 'e) Base__.Result.t
    val exists : t -> f:(Elt.t -> bool) -> bool
    val for_all : t -> f:(Elt.t -> bool) -> bool
    val count : t -> f:(Elt.t -> bool) -> int
    val sum : + init:'accum -> + f:('accum -> Elt.t -> ('accum, 'e) Base__.Result.t) -> + ('accum, 'e) Base__.Result.t
    val exists : t -> f:(Elt.t -> bool) -> bool
    val for_all : t -> f:(Elt.t -> bool) -> bool
    val count : t -> f:(Elt.t -> bool) -> int
    val sum : (module Base__Container_intf.Summable with type t = 'sum) -> t -> - f:(Elt.t -> 'sum) -> - 'sum
    val find : t -> f:(Elt.t -> bool) -> Elt.t option
    val find_map : t -> f:(Elt.t -> 'a option) -> 'a option
    val to_list : t -> Elt.t list
    val to_array : t -> Elt.t array
    val invariants : t -> bool
    val mem : t -> Elt.t -> bool
    val add : t -> Elt.t -> t
    val remove : t -> Elt.t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val diff : t -> t -> t
    val symmetric_diff : t -> t -> (Elt.t, Elt.t) Base__.Either.t Base__.Sequence.t
    val compare_direct : t -> t -> int
    val equal : t -> t -> bool
    val is_subset : t -> of_:t -> bool
    val are_disjoint : t -> t -> bool
    module Named : sig ... end
    val fold_until : + f:(Elt.t -> 'sum) -> + 'sum
    val find : t -> f:(Elt.t -> bool) -> Elt.t option
    val find_map : t -> f:(Elt.t -> 'a option) -> 'a option
    val to_list : t -> Elt.t list
    val to_array : t -> Elt.t array
    val invariants : t -> bool
    val mem : t -> Elt.t -> bool
    val add : t -> Elt.t -> t
    val remove : t -> Elt.t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val diff : t -> t -> t
    val symmetric_diff : t -> t -> (Elt.t, Elt.t) Base__.Either.t Base__.Sequence.t
    val compare_direct : t -> t -> int
    val equal : t -> t -> bool
    val is_subset : t -> of_:t -> bool
    val are_disjoint : t -> t -> bool
    module Named : sig ... end
    val fold_until : t -> - init:'b -> - f:('b -> Elt.t -> ('b, 'final) Base__.Container.Continue_or_stop.t) -> - finish:('b -> 'final) -> - 'final
    val fold_right : t -> init:'b -> f:(Elt.t -> 'b -> 'b) -> 'b
    val iter2 : + init:'b -> + f:('b -> Elt.t -> ('b, 'final) Base__.Container.Continue_or_stop.t) -> + finish:('b -> 'final) -> + 'final
    val fold_right : t -> init:'b -> f:(Elt.t -> 'b -> 'b) -> 'b
    val iter2 : t -> t -> - f:([ `Both of Elt.t * Elt.t | `Left of Elt.t | `Right of Elt.t ] -> unit) -> - unit
    val filter : t -> f:(Elt.t -> bool) -> t
    val partition_tf : t -> f:(Elt.t -> bool) -> t * t
    val elements : t -> Elt.t list
    val min_elt : t -> Elt.t option
    val min_elt_exn : t -> Elt.t
    val max_elt : t -> Elt.t option
    val max_elt_exn : t -> Elt.t
    val choose : t -> Elt.t option
    val choose_exn : t -> Elt.t
    val split : t -> Elt.t -> t * Elt.t option * t
    val group_by : t -> equiv:(Elt.t -> Elt.t -> bool) -> t list
    val find_exn : t -> f:(Elt.t -> bool) -> Elt.t
    val nth : t -> int -> Elt.t option
    val remove_index : t -> int -> t
    val to_tree : t -> (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t
    val to_sequence : - ?order:[ `Decreasing | `Increasing ] -> - ?greater_or_equal_to:Elt.t -> - ?less_or_equal_to:Elt.t -> + f:([ `Both of Elt.t * Elt.t | `Left of Elt.t | `Right of Elt.t ] -> unit) -> + unit
    val filter : t -> f:(Elt.t -> bool) -> t
    val partition_tf : t -> f:(Elt.t -> bool) -> t * t
    val elements : t -> Elt.t list
    val min_elt : t -> Elt.t option
    val min_elt_exn : t -> Elt.t
    val max_elt : t -> Elt.t option
    val max_elt_exn : t -> Elt.t
    val choose : t -> Elt.t option
    val choose_exn : t -> Elt.t
    val split : t -> Elt.t -> t * Elt.t option * t
    val group_by : t -> equiv:(Elt.t -> Elt.t -> bool) -> t list
    val find_exn : t -> f:(Elt.t -> bool) -> Elt.t
    val nth : t -> int -> Elt.t option
    val remove_index : t -> int -> t
    val to_tree : t -> (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t
    val to_sequence : + ?order:[ `Decreasing | `Increasing ] -> + ?greater_or_equal_to:Elt.t -> + ?less_or_equal_to:Elt.t -> t -> Elt.t Base__.Sequence.t
    val binary_search_segmented : t -> - segment_of:(Elt.t -> [ `Left | `Right ]) -> + segment_of:(Elt.t -> [ `Left | `Right ]) -> Base__.Binary_searchable.Which_target_by_segment.t -> Elt.t option
    val merge_to_sequence : - ?order:[ `Decreasing | `Increasing ] -> - ?greater_or_equal_to:Elt.t -> - ?less_or_equal_to:Elt.t -> + ?order:[ `Decreasing | `Increasing ] -> + ?greater_or_equal_to:Elt.t -> + ?less_or_equal_to:Elt.t -> t -> t -> (Elt.t, Elt.t) Base__Set_intf.Merge_to_sequence_element.t Base__.Sequence.t
    val to_map : t -> - f:(Elt.t -> 'data) -> + f:(Elt.t -> 'data) -> (Elt.t, 'data, Elt.comparator_witness) Base.Map.t
    val quickcheck_observer : Elt.t Core__.Quickcheck.Observer.t -> t Core__.Quickcheck.Observer.t
    val quickcheck_shrinker : Elt.t Core__.Quickcheck.Shrinker.t -> - t Core__.Quickcheck.Shrinker.t
    val empty : t
    val singleton : Elt.t -> t
    val union_list : t list -> t
    val of_list : Elt.t list -> t
    val of_sequence : Elt.t Base__.Sequence.t -> t
    val of_array : Elt.t array -> t
    val of_sorted_array : Elt.t array -> t Base__.Or_error.t
    val of_sorted_array_unchecked : Elt.t array -> t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Elt.t) -> t
    val stable_dedup_list : Elt.t list -> Elt.t list
    val map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t) -> t
    val filter_map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t option) -> t
    val of_tree : (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t -> t
    val of_hash_set : Elt.t Core__.Hash_set.t -> t
    val of_hashtbl_keys : (Elt.t, 'a) Core__.Hashtbl.t -> t
    val of_map_keys : (Elt.t, 'a, Elt.comparator_witness) Base.Map.t -> t
    val quickcheck_generator : + t Core__.Quickcheck.Shrinker.t
    val empty : t
    val singleton : Elt.t -> t
    val union_list : t list -> t
    val of_list : Elt.t list -> t
    val of_sequence : Elt.t Base__.Sequence.t -> t
    val of_array : Elt.t array -> t
    val of_sorted_array : Elt.t array -> t Base__.Or_error.t
    val of_sorted_array_unchecked : Elt.t array -> t
    val of_increasing_iterator_unchecked : len:int -> f:(int -> Elt.t) -> t
    val stable_dedup_list : Elt.t list -> Elt.t list
    val map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t) -> t
    val filter_map : ('a, 'b) Base.Set.t -> f:('a -> Elt.t option) -> t
    val of_tree : (Elt.t, Elt.comparator_witness) Core__Set_intf.Tree.t -> t
    val of_hash_set : Elt.t Core__.Hash_set.t -> t
    val of_hashtbl_keys : (Elt.t, 'a) Core__.Hashtbl.t -> t
    val of_map_keys : (Elt.t, 'a, Elt.comparator_witness) Base.Map.t -> t
    val quickcheck_generator : Elt.t Core__.Quickcheck.Generator.t -> - t Core__.Quickcheck.Generator.t
    module Provide_of_sexp (Elt : sig ... end) : sig ... end
    module Provide_bin_io (Elt : sig ... end) : sig ... end
    module Provide_hash (Elt : sig ... end) : sig ... end
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    \ No newline at end of file + t Core__.Quickcheck.Generator.t
    module Provide_of_sexp (Elt : sig ... end) : sig ... end
    module Provide_bin_io (Elt : sig ... end) : sig ... end
    module Provide_hash (Elt : sig ... end) : sig ... end
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/T/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/T/index.html index 06fa4f9b0b8..60fa8017915 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/T/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/T/index.html @@ -1,2 +1,2 @@ -T (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.T)

    Module UnqualifiedFunction.T

    type t = {
    1. name : string;
    2. arity : int;
    }
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    \ No newline at end of file +T (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction.T)

    Module UnqualifiedFunction.T

    type t = {
    1. name : string;
    2. arity : int;
    }
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/index.html index dab5e8ea06d..4c7c9315ed0 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/UnqualifiedFunction/index.html @@ -1,5 +1,5 @@ -UnqualifiedFunction (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction)

    Module ErlangEnvironment.UnqualifiedFunction

    module T : sig ... end
    include module type of struct include T end
    type t = T.t = {
    1. name : string;
    2. arity : int;
    }
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_compare_lib.Comparable.S with type t := t
    include sig ... end
    val (>=) : T.t -> T.t -> bool
    val (<=) : T.t -> T.t -> bool
    val (=) : T.t -> T.t -> bool
    val (>) : T.t -> T.t -> bool
    val (<) : T.t -> T.t -> bool
    val (<>) : T.t -> T.t -> bool
    val equal : T.t -> T.t -> bool
    val compare : T.t -> T.t -> int
    val min : T.t -> T.t -> T.t
    val max : T.t -> T.t -> T.t
    val ascending : T.t -> T.t -> int
    val descending : T.t -> T.t -> int
    val between : T.t -> low:T.t -> high:T.t -> bool
    val clamp_exn : T.t -> min:T.t -> max:T.t -> T.t
    val clamp : T.t -> min:T.t -> max:T.t -> T.t Base__.Or_error.t
    type comparator_witness = Core__Comparable.Make(T).comparator_witness
    val comparator : (T.t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:T.t Core__.Maybe_bound.t -> T.t Validate.check
    val validate_ubound : max:T.t Core__.Maybe_bound.t -> T.t Validate.check
    val validate_bound : - min:T.t Core__.Maybe_bound.t -> - max:T.t Core__.Maybe_bound.t -> - T.t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Map : sig ... end
    module Set : sig ... end
    \ No newline at end of file +UnqualifiedFunction (infer.ErlangFrontend.ErlangEnvironment.UnqualifiedFunction)

    Module ErlangEnvironment.UnqualifiedFunction

    module T : sig ... end
    include module type of struct include T end
    type t = T.t = {
    1. name : string;
    2. arity : int;
    }
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_compare_lib.Comparable.S with type t := t
    include sig ... end
    val (>=) : T.t -> T.t -> bool
    val (<=) : T.t -> T.t -> bool
    val (=) : T.t -> T.t -> bool
    val (>) : T.t -> T.t -> bool
    val (<) : T.t -> T.t -> bool
    val (<>) : T.t -> T.t -> bool
    val equal : T.t -> T.t -> bool
    val compare : T.t -> T.t -> int
    val min : T.t -> T.t -> T.t
    val max : T.t -> T.t -> T.t
    val ascending : T.t -> T.t -> int
    val descending : T.t -> T.t -> int
    val between : T.t -> low:T.t -> high:T.t -> bool
    val clamp_exn : T.t -> min:T.t -> max:T.t -> T.t
    val clamp : T.t -> min:T.t -> max:T.t -> T.t Base__.Or_error.t
    type comparator_witness = Core__Comparable.Make(T).comparator_witness
    val comparator : (T.t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:T.t Core__.Maybe_bound.t -> T.t Validate.check
    val validate_ubound : max:T.t Core__.Maybe_bound.t -> T.t Validate.check
    val validate_bound : + min:T.t Core__.Maybe_bound.t -> + max:T.t Core__.Maybe_bound.t -> + T.t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Map : sig ... end
    module Set : sig ... end
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/index.html index 6a54dc1fb71..d80a474a857 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangEnvironment/index.html @@ -1,5 +1,5 @@ -ErlangEnvironment (infer.ErlangFrontend.ErlangEnvironment)

    Module ErlangFrontend.ErlangEnvironment

    module Ast = ErlangAst
    type module_name = string
    val sexp_of_module_name : module_name -> Sexplib0.Sexp.t
    type absent =
    1. | Absent
    type 'a present =
    1. | Present of 'a
    module UnqualifiedFunction : sig ... end
    type record_field_info = {
    1. index : int;
    2. initializer_ : Ast.expression option;
    }
    val sexp_of_record_field_info : record_field_info -> Sexplib0.Sexp.t
    type record_info = {
    1. field_names : string list;
    2. field_info : record_field_info IStdlib.IStd.String.Map.t;
    }
    val sexp_of_record_info : record_info -> Sexplib0.Sexp.t
    type ('procdesc, 'result) t = {
    1. cfg : IR.Cfg.t;
    2. module_info : IR.Annot.t IStdlib.IStd.String.Map.t;
      (*

      used to store data for Module:module_info

      *)
    3. current_module : module_name;
      (*

      used to qualify function names

      *)
    4. is_otp : bool;
      (*

      does this module come from the OTP library

      *)
    5. functions : UnqualifiedFunction.Set.t;
      (*

      used to resolve function names

      *)
    6. specs : Ast.spec UnqualifiedFunction.Map.t;
      (*

      map functions to their specs

      *)
    7. types : Ast.type_ IStdlib.IStd.String.Map.t;
      (*

      user defined types

      *)
    8. exports : UnqualifiedFunction.Set.t;
      (*

      used to determine public/private access

      *)
    9. imports : module_name UnqualifiedFunction.Map.t;
      (*

      used to resolve function names

      *)
    10. records : record_info IStdlib.IStd.String.Map.t;
      (*

      used to get fields, indexes and initializers

      *)
    11. location : IBase.Location.t;
      (*

      used to tag nodes and instructions being created

      *)
    12. procdesc : 'procdesc;
    13. result : 'result;
    }

    This data structure holds module-level information and other global data that we pass around when translating individual functions of the module.

    val sexp_of_t : +ErlangEnvironment (infer.ErlangFrontend.ErlangEnvironment)

    Module ErlangFrontend.ErlangEnvironment

    module Ast = ErlangAst
    type module_name = string
    val sexp_of_module_name : module_name -> Sexplib0.Sexp.t
    type absent =
    1. | Absent
    type 'a present =
    1. | Present of 'a
    module UnqualifiedFunction : sig ... end
    type record_field_info = {
    1. index : int;
    2. initializer_ : Ast.expression option;
    }
    val sexp_of_record_field_info : record_field_info -> Sexplib0.Sexp.t
    type record_info = {
    1. field_names : string list;
    2. field_info : record_field_info IStdlib.IStd.String.Map.t;
    }
    val sexp_of_record_info : record_info -> Sexplib0.Sexp.t
    type ('procdesc, 'result) t = {
    1. cfg : IR.Cfg.t;
    2. module_info : IR.Annot.t IStdlib.IStd.String.Map.t;
      (*

      used to store data for Module:module_info

      *)
    3. current_module : module_name;
      (*

      used to qualify function names

      *)
    4. is_otp : bool;
      (*

      does this module come from the OTP library

      *)
    5. functions : UnqualifiedFunction.Set.t;
      (*

      used to resolve function names

      *)
    6. specs : Ast.spec UnqualifiedFunction.Map.t;
      (*

      map functions to their specs

      *)
    7. types : Ast.type_ IStdlib.IStd.String.Map.t;
      (*

      user defined types

      *)
    8. exports : UnqualifiedFunction.Set.t;
      (*

      used to determine public/private access

      *)
    9. imports : module_name UnqualifiedFunction.Map.t;
      (*

      used to resolve function names

      *)
    10. records : record_info IStdlib.IStd.String.Map.t;
      (*

      used to get fields, indexes and initializers

      *)
    11. location : IBase.Location.t;
      (*

      used to tag nodes and instructions being created

      *)
    12. procdesc : 'procdesc;
    13. result : 'result;
    }

    This data structure holds module-level information and other global data that we pass around when translating individual functions of the module.

    val sexp_of_t : ('procdesc -> Sexplib0.Sexp.t) -> ('result -> Sexplib0.Sexp.t) -> ('procdesc, 'result) t -> @@ -11,8 +11,8 @@ Ast.function_ -> UnqualifiedFunction.t * IR.Procname.t
    val has_type_instr : ('a, 'b) t -> - result:IR.Ident.t -> - value:IR.Exp.t -> + result:IR.Ident.t -> + value:IR.Exp.t -> IR.ErlangTypeName.t -> IR.Sil.instr

    Create an instruction that stores in a result if a given value has a given type.

    val procname_for_user_type : module_name -> module_name -> IR.Procname.t
    val load_field_from_expr : ('a, 'b) t -> @@ -20,4 +20,4 @@ IR.Exp.t -> module_name -> IR.ErlangTypeName.t -> - IR.Sil.instr

    Create an instruction into_id=expr.field_name

    \ No newline at end of file + IR.Sil.instr

    Create an instruction into_id=expr.field_name

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangJsonParser/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangJsonParser/index.html index 56c0ff5a73c..51ac648a426 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangJsonParser/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangJsonParser/index.html @@ -1,2 +1,2 @@ -ErlangJsonParser (infer.ErlangFrontend.ErlangJsonParser)

    Module ErlangFrontend.ErlangJsonParser

    val to_module : Yojson.Safe.t -> ErlangAst.module_ option
    \ No newline at end of file +ErlangJsonParser (infer.ErlangFrontend.ErlangJsonParser)

    Module ErlangFrontend.ErlangJsonParser

    val to_module : Yojson.Safe.t -> ErlangAst.module_ option
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangNode/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangNode/index.html index 279af0213bf..91d314b2b85 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangNode/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangNode/index.html @@ -1,7 +1,7 @@ -ErlangNode (infer.ErlangFrontend.ErlangNode)

    Module ErlangFrontend.ErlangNode

    module Env = ErlangEnvironment
    val make_stmt : +ErlangNode (infer.ErlangFrontend.ErlangNode)

    Module ErlangFrontend.ErlangNode

    \ No newline at end of file + IR.Procdesc.Node.t
    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangScopes/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangScopes/index.html index 205eab1350f..0afb488d310 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangScopes/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangScopes/index.html @@ -1,2 +1,2 @@ -ErlangScopes (infer.ErlangFrontend.ErlangScopes)

    Module ErlangFrontend.ErlangScopes

    val annotate_scopes : (_, _) ErlangEnvironment.t -> ErlangAst.module_ -> unit

    This is a preprocessing pass for the translation. Annotates the AST with scoping information: (1) Scope (procname) for each variable (2) Set of captured variables for each lambda. (3) Fresh procnames for lambdas, which are used to identify them. (This is required by point 1.)

    \ No newline at end of file +ErlangScopes (infer.ErlangFrontend.ErlangScopes)

    Module ErlangFrontend.ErlangScopes

    val annotate_scopes : (_, _) ErlangEnvironment.t -> ErlangAst.module_ -> unit

    This is a preprocessing pass for the translation. Annotates the AST with scoping information: (1) Scope (procname) for each variable (2) Set of captured variables for each lambda. (3) Fresh procnames for lambdas, which are used to identify them. (This is required by point 1.)

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangTranslator/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangTranslator/index.html index 0aff8f42194..bcfe3e26698 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangTranslator/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangTranslator/index.html @@ -1,6 +1,6 @@ -ErlangTranslator (infer.ErlangFrontend.ErlangTranslator)

    Module ErlangFrontend.ErlangTranslator

    val translate_module : +ErlangTranslator (infer.ErlangFrontend.ErlangTranslator)

    Module ErlangFrontend.ErlangTranslator

    val translate_module : (_, _) ErlangEnvironment.t -> ErlangAst.module_ -> string option -> - unit

    Translate a module. Assumes an initialized environment and an AST annotated with scope information (see ErlangScopes.annotate_scopes).

    \ No newline at end of file + unit

    Translate a module. Assumes an initialized environment and an AST annotated with scope information (see ErlangScopes.annotate_scopes).

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/ErlangTypes/index.html b/website/static/odoc/next/infer/ErlangFrontend/ErlangTypes/index.html index d04ea023ad0..be8a1aeca67 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/ErlangTypes/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/ErlangTypes/index.html @@ -1,5 +1,5 @@ -ErlangTypes (infer.ErlangFrontend.ErlangTypes)

    Module ErlangFrontend.ErlangTypes

    val type_condition : +ErlangTypes (infer.ErlangFrontend.ErlangTypes)

    Module ErlangFrontend.ErlangTypes

    Similar to prune_spec_args, except that instead of a list of identifiers for arguments we get one identifier for the return.

    \ No newline at end of file + ErlangBlock.t

    Similar to prune_spec_args, except that instead of a list of identifiers for arguments we get one identifier for the return.

    diff --git a/website/static/odoc/next/infer/ErlangFrontend/index.html b/website/static/odoc/next/infer/ErlangFrontend/index.html index 16035eec745..b6babd59824 100644 --- a/website/static/odoc/next/infer/ErlangFrontend/index.html +++ b/website/static/odoc/next/infer/ErlangFrontend/index.html @@ -1,2 +1,2 @@ -ErlangFrontend (infer.ErlangFrontend)

    Module ErlangFrontend

    module ErlangAst : sig ... end

    Erlang abstract forms, following https://erlang.org/doc/apps/erts/absform.html

    module ErlangAstValidator : sig ... end

    Enforce additional invariants and constraints on the AST based on https://erlang.org/doc/apps/erts/absform.html

    module ErlangBlock : sig ... end
    module ErlangEnvironment : sig ... end
    module ErlangJsonParser : sig ... end
    module ErlangNode : sig ... end
    module ErlangScopes : sig ... end
    module ErlangTranslator : sig ... end
    module ErlangTypes : sig ... end
    \ No newline at end of file +ErlangFrontend (infer.ErlangFrontend)

    Module ErlangFrontend

    module ErlangAst : sig ... end

    Erlang abstract forms, following https://erlang.org/doc/apps/erts/absform.html

    module ErlangAstValidator : sig ... end

    Enforce additional invariants and constraints on the AST based on https://erlang.org/doc/apps/erts/absform.html

    module ErlangBlock : sig ... end
    module ErlangEnvironment : sig ... end
    module ErlangJsonParser : sig ... end
    module ErlangNode : sig ... end
    module ErlangScopes : sig ... end
    module ErlangTranslator : sig ... end
    module ErlangTypes : sig ... end
    diff --git a/website/static/odoc/next/infer/IBase.html b/website/static/odoc/next/infer/IBase.html index 4d2df4a9e10..3782df64a8e 100644 --- a/website/static/odoc/next/infer/IBase.html +++ b/website/static/odoc/next/infer/IBase.html @@ -1,2 +1,2 @@ -IBase (infer.IBase)

    Library IBase

    Utility modules that are somewhat specific to infer, usually because they depend on IBase.Config.

    The entry point of this library is the module IBase.

    \ No newline at end of file +IBase (infer.IBase)

    Library IBase

    Utility modules that are somewhat specific to infer, usually because they depend on IBase.Config.

    The entry point of this library is the module IBase.

    diff --git a/website/static/odoc/next/infer/IBase/BuckMode/index.html b/website/static/odoc/next/infer/IBase/BuckMode/index.html index 15e634bffc8..ae54645b60d 100644 --- a/website/static/odoc/next/infer/IBase/BuckMode/index.html +++ b/website/static/odoc/next/infer/IBase/BuckMode/index.html @@ -1,5 +1,5 @@ -BuckMode (infer.IBase.BuckMode)

    Module IBase.BuckMode

    module F = Stdlib.Format
    type clang_compilation_db_deps =
    1. | NoDependencies
    2. | DepsUpToDepth of int
    3. | DepsAllDepths

    dependencies to include in the compilation database

    val pp_clang_compilation_db_deps : +BuckMode (infer.IBase.BuckMode)

    Module IBase.BuckMode

    module F = Stdlib.Format
    type clang_compilation_db_deps =
    1. | NoDependencies
    2. | DepsUpToDepth of int
    3. | DepsAllDepths

    dependencies to include in the compilation database

    val pp_clang_compilation_db_deps : F.formatter -> clang_compilation_db_deps -> - unit
    type t =
    1. | ClangCompilationDB of clang_compilation_db_deps
    2. | Clang
    3. | Erlang
    4. | Java
    val pp : F.formatter -> t -> unit
    val is_clang_compilation_db : t -> bool
    val is_clang : t -> bool
    \ No newline at end of file + unit
    type t =
    1. | ClangCompilationDB of clang_compilation_db_deps
    2. | Clang
    3. | Erlang
    4. | Java
    val pp : F.formatter -> t -> unit
    val is_clang_compilation_db : t -> bool
    val is_clang : t -> bool
    diff --git a/website/static/odoc/next/infer/IBase/Checker/index.html b/website/static/odoc/next/infer/IBase/Checker/index.html index 74b5114773b..908c0255ec7 100644 --- a/website/static/odoc/next/infer/IBase/Checker/index.html +++ b/website/static/odoc/next/infer/IBase/Checker/index.html @@ -1,2 +1,2 @@ -Checker (infer.IBase.Checker)

    Module IBase.Checker

    module F = Stdlib.Format
    type t =
    1. | AnnotationReachability
    2. | Biabduction
    3. | BufferOverrunAnalysis
    4. | BufferOverrunChecker
    5. | ConfigImpactAnalysis
    6. | Cost
    7. | Datalog
    8. | DisjunctiveDemo
    9. | FragmentRetainsView
    10. | Impurity
    11. | InefficientKeysetIterator
    12. | LithoRequiredProps
    13. | Liveness
    14. | LoopHoisting
    15. | ParameterNotNullChecked
    16. | PrintfArgs
    17. | Pulse
    18. | PurityAnalysis
    19. | PurityChecker
    20. | Quandary
    21. | RacerD
    22. | ResourceLeakLabExercise
    23. | ScopeLeakage
    24. | SIOF
    25. | SILValidation
    26. | Lineage
    27. | LineageShape
    28. | SelfInBlock
    29. | Starvation
    30. | Topl
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    type support =
    1. | NoSupport
      (*

      checker does not run at all for this language

      *)
    2. | ExperimentalSupport
      (*

      checker runs but is not expected to give reasonable results

      *)
    3. | Support
      (*

      checker is expected to give reasonable results

      *)

    per-language support for each checker

    type cli_flags = {
    1. deprecated : string list;
      (*

      More command-line flags, similar to ~deprecated arguments in CommandLineOption.

      *)
    2. show_in_help : bool;
    }
    type kind =
    1. | UserFacing of {
      1. title : string;
        (*

        the title of the documentation web page

        *)
      2. markdown_body : string;
        (*

        main text of the documentation

        *)
      }
      (*

      can report issues to users

      *)
    2. | UserFacingDeprecated of {
      1. title : string;
        (*

        the title of the documentation web page

        *)
      2. markdown_body : string;
        (*

        main text of the documentation

        *)
      3. deprecation_message : string;
      }
      (*

      can report issues to users but should probably be deleted from infer

      *)
    3. | Internal
      (*

      Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

      *)
    4. | Exercise
      (*

      reserved for the "resource leak" lab exercise

      *)
    type config = {
    1. id : string;
      (*

      Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

      *)
    2. kind : kind;
    3. support : Language.t -> support;
    4. short_documentation : string;
      (*

      used in man pages and as a short intro on the website

      *)
    5. cli_flags : cli_flags option;
      (*

      If None then the checker cannot be enabled/disabled from the command line.

      *)
    6. enabled_by_default : bool;
    7. activates : t list;
      (*

      list of checkers that get enabled when this checker is enabled

      *)
    }
    val config : t -> config
    val get_id : t -> string

    get_id c is (config c).id

    val from_id : string -> t option
    val pp_manual : F.formatter -> t -> unit

    prints a short explanation of the checker; used for the man pages

    \ No newline at end of file +Checker (infer.IBase.Checker)

    Module IBase.Checker

    module F = Stdlib.Format
    type t =
    1. | AnnotationReachability
    2. | Biabduction
    3. | BufferOverrunAnalysis
    4. | BufferOverrunChecker
    5. | ConfigImpactAnalysis
    6. | Cost
    7. | Datalog
    8. | DisjunctiveDemo
    9. | FragmentRetainsView
    10. | Impurity
    11. | InefficientKeysetIterator
    12. | LithoRequiredProps
    13. | Liveness
    14. | LoopHoisting
    15. | ParameterNotNullChecked
    16. | PrintfArgs
    17. | Pulse
    18. | PurityAnalysis
    19. | PurityChecker
    20. | Quandary
    21. | RacerD
    22. | ResourceLeakLabExercise
    23. | ScopeLeakage
    24. | SIOF
    25. | SILValidation
    26. | Lineage
    27. | LineageShape
    28. | SelfInBlock
    29. | Starvation
    30. | Topl
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    type support =
    1. | NoSupport
      (*

      checker does not run at all for this language

      *)
    2. | ExperimentalSupport
      (*

      checker runs but is not expected to give reasonable results

      *)
    3. | Support
      (*

      checker is expected to give reasonable results

      *)

    per-language support for each checker

    type cli_flags = {
    1. deprecated : string list;
      (*

      More command-line flags, similar to ~deprecated arguments in CommandLineOption.

      *)
    2. show_in_help : bool;
    }
    type kind =
    1. | UserFacing of {
      1. title : string;
        (*

        the title of the documentation web page

        *)
      2. markdown_body : string;
        (*

        main text of the documentation

        *)
      }
      (*

      can report issues to users

      *)
    2. | UserFacingDeprecated of {
      1. title : string;
        (*

        the title of the documentation web page

        *)
      2. markdown_body : string;
        (*

        main text of the documentation

        *)
      3. deprecation_message : string;
      }
      (*

      can report issues to users but should probably be deleted from infer

      *)
    3. | Internal
      (*

      Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

      *)
    4. | Exercise
      (*

      reserved for the "resource leak" lab exercise

      *)
    type config = {
    1. id : string;
      (*

      Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

      *)
    2. kind : kind;
    3. support : Language.t -> support;
    4. short_documentation : string;
      (*

      used in man pages and as a short intro on the website

      *)
    5. cli_flags : cli_flags option;
      (*

      If None then the checker cannot be enabled/disabled from the command line.

      *)
    6. enabled_by_default : bool;
    7. activates : t list;
      (*

      list of checkers that get enabled when this checker is enabled

      *)
    }
    val config : t -> config
    val get_id : t -> string

    get_id c is (config c).id

    val from_id : string -> t option
    val pp_manual : F.formatter -> t -> unit

    prints a short explanation of the checker; used for the man pages

    diff --git a/website/static/odoc/next/infer/IBase/ClangProc/index.html b/website/static/odoc/next/infer/IBase/ClangProc/index.html index c89e236f525..3f7fb0838a0 100644 --- a/website/static/odoc/next/infer/IBase/ClangProc/index.html +++ b/website/static/odoc/next/infer/IBase/ClangProc/index.html @@ -1,2 +1,2 @@ -ClangProc (infer.IBase.ClangProc)

    Module IBase.ClangProc

    type t =
    1. | CFunction of {
      1. name : string;
      2. mangled_name : string option;
      }
    2. | CppMethod of {
      1. mangled_name : string;
      }
    3. | ObjcMethod of {
      1. mangled_name : string;
      }
    4. | ObjcBlock of {
      1. mangled_name : string;
      }
    \ No newline at end of file +ClangProc (infer.IBase.ClangProc)

    Module IBase.ClangProc

    type t =
    1. | CFunction of {
      1. name : string;
      2. mangled_name : string option;
      }
    2. | CppMethod of {
      1. mangled_name : string;
      }
    3. | ObjcMethod of {
      1. mangled_name : string;
      }
    4. | ObjcBlock of {
      1. mangled_name : string;
      }
    diff --git a/website/static/odoc/next/infer/IBase/CommandDoc/index.html b/website/static/odoc/next/infer/IBase/CommandDoc/index.html index 61ad7c9f05f..15783d29821 100644 --- a/website/static/odoc/next/infer/IBase/CommandDoc/index.html +++ b/website/static/odoc/next/infer/IBase/CommandDoc/index.html @@ -1,2 +1,2 @@ -CommandDoc (infer.IBase.CommandDoc)

    Module IBase.CommandDoc

    module CLOpt = CommandLineOption
    type data = {
    1. name : string;
    2. command_doc : CLOpt.command_doc;
    }
    val inferconfig_env_var : string
    val inferconfig_file : string
    val infer : CLOpt.command_doc
    val data_of_command : ATDGenerated.InferCommand.t -> data
    \ No newline at end of file +CommandDoc (infer.IBase.CommandDoc)

    Module IBase.CommandDoc

    module CLOpt = CommandLineOption
    type data = {
    1. name : string;
    2. command_doc : CLOpt.command_doc;
    }
    val inferconfig_env_var : string
    val inferconfig_file : string
    val infer : CLOpt.command_doc
    val data_of_command : ATDGenerated.InferCommand.t -> data
    diff --git a/website/static/odoc/next/infer/IBase/CommandLineOption/index.html b/website/static/odoc/next/infer/IBase/CommandLineOption/index.html index 0576df98777..870516c738a 100644 --- a/website/static/odoc/next/infer/IBase/CommandLineOption/index.html +++ b/website/static/odoc/next/infer/IBase/CommandLineOption/index.html @@ -1,120 +1,120 @@ -CommandLineOption (infer.IBase.CommandLineOption)

    Module IBase.CommandLineOption

    Definition and parsing of command line arguments

    val warnf : ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

    Print to stderr in case of error, fails in strict mode

    type parse_mode =
    1. | InferCommand
      (*

      parse arguments as arguments for infer

      *)
    2. | Javac
      (*

      parse arguments passed to the Java compiler

      *)
    3. | NoParse
      (*

      all arguments are anonymous arguments, no parsing is attempted

      *)
    val compare_parse_mode : parse_mode -> parse_mode -> int
    val is_originator : bool
    • deprecated Do not use this value, use [Config.is_originator] instead
    val init_work_dir : string
    type 'a t = - ?deprecated:string list -> - long:string -> - ?short:char -> - ?parse_mode:parse_mode -> - ?in_help:(ATDGenerated.InferCommand.t * string) list -> - ?meta:string -> +CommandLineOption (infer.IBase.CommandLineOption)

    Module IBase.CommandLineOption

    Definition and parsing of command line arguments

    val warnf : ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

    Print to stderr in case of error, fails in strict mode

    type parse_mode =
    1. | InferCommand
      (*

      parse arguments as arguments for infer

      *)
    2. | Javac
      (*

      parse arguments passed to the Java compiler

      *)
    3. | NoParse
      (*

      all arguments are anonymous arguments, no parsing is attempted

      *)
    val compare_parse_mode : parse_mode -> parse_mode -> int
    val is_originator : bool
    • deprecated Do not use this value, use [Config.is_originator] instead
    val init_work_dir : string
    type 'a t = + ?deprecated:string list -> + long:string -> + ?short:char -> + ?parse_mode:parse_mode -> + ?in_help:(ATDGenerated.InferCommand.t * string) list -> + ?meta:string -> string -> 'a

    The mk_* functions declare command line options, while parse parses then according to the declared options.

    The arguments of the declaration functions are largely treated uniformly:

    • long declares the option --long
    • short declares the option -short as an alias
    • deprecated declares the option -key as an alias, for each key in deprecated
    • default specifies the default value
    • default_to_string is used to document the default value
    • f specifies a transformation to be performed on the parsed value before setting the config variable
    • symbols is an association list sometimes used in place of f
    • parse_mode declares which parse mode the option is for
    • in_help indicates the man pages in which the command should be documented, as generated by calling infer with --help. Otherwise it appears only in --help-full.
    • meta is a meta-variable naming the parsed value for documentation purposes
    • a documentation string
    val mk_set : 'a IStdlib.IStd.ref -> 'a -> unit t

    mk_set variable value defines a command line option which sets variable to value.

    val mk_bool : - ?deprecated_no:string list -> - ?default:bool -> - ?f:(bool -> bool) -> + ?deprecated_no:string list -> + ?default:bool -> + ?f:(bool -> bool) -> bool IStdlib.IStd.ref t

    mk_bool long short doc defines a bool ref set by the command line flag --long (and -s), and cleared by the flag --no-long (and -S). If long already has a "no-" prefix, or s is capital, then the existing prefixes will instead be removed. The default value is false unless overridden by ~default:true. The doc string will be prefixed with either "Activates:" or "Deactivates:", so should be phrased accordingly.

    val mk_bool_group : - ?deprecated_no:string list -> - ?default:bool -> - ?f:(bool -> bool) -> + ?deprecated_no:string list -> + ?default:bool -> + ?f:(bool -> bool) -> (bool IStdlib.IStd.ref list -> bool IStdlib.IStd.ref list -> bool IStdlib.IStd.ref) t

    mk_bool_group children not_children behaves as mk_bool with the addition that all the children are also set and the no_children are unset. A child can be unset by including "--no-child" later in the arguments.

    val mk_int : - default:int -> - ?default_to_string:(int -> string) -> - ?f:(int -> int) -> + default:int -> + ?default_to_string:(int -> string) -> + ?f:(int -> int) -> int IStdlib.IStd.ref t
    val mk_int_opt : - ?default:int -> - ?default_to_string:(int option -> string) -> - ?f:(int -> int) -> + ?default:int -> + ?default_to_string:(int option -> string) -> + ?f:(int -> int) -> int option IStdlib.IStd.ref t
    val mk_int64_opt : - ?default:IStdlib.IStd.Int64.t -> - ?default_to_string:(IStdlib.IStd.Int64.t option -> string) -> - ?f:(IStdlib.IStd.Int64.t -> IStdlib.IStd.Int64.t) -> + ?default:IStdlib.IStd.Int64.t -> + ?default_to_string:(IStdlib.IStd.Int64.t option -> string) -> + ?f:(IStdlib.IStd.Int64.t -> IStdlib.IStd.Int64.t) -> IStdlib.IStd.Int64.t option IStdlib.IStd.ref t
    val mk_float_opt : - ?default:float -> - ?default_to_string:(float option -> string) -> + ?default:float -> + ?default_to_string:(float option -> string) -> float option IStdlib.IStd.ref t
    val mk_string : - default:string -> - ?default_to_string:(string -> string) -> - ?f:(string -> string) -> + default:string -> + ?default_to_string:(string -> string) -> + ?f:(string -> string) -> string IStdlib.IStd.ref t
    val mk_string_opt : - ?default:string -> - ?default_to_string:(string option -> string) -> - ?f:(string -> string) -> - ?mk_reset:bool -> + ?default:string -> + ?default_to_string:(string option -> string) -> + ?f:(string -> string) -> + ?mk_reset:bool -> string option IStdlib.IStd.ref t

    An option "--long-reset" is automatically created that resets the reference to None when found on the command line, unless mk_reset is false.

    val mk_string_list : - ?default:string list -> - ?default_to_string:(string list -> string) -> - ?f:(string -> string) -> + ?default:string list -> + ?default_to_string:(string list -> string) -> + ?f:(string -> string) -> string IStdlib.RevList.t IStdlib.IStd.ref t

    mk_string_list defines a string list ref, initialized to [] unless overridden by ~default. Each argument of an occurrence of the option will be prepended to the list, so the final value will be in the reverse order they appeared on the command line.

    An option "--long-reset" is automatically created that resets the list to when found on the command line.

    val mk_string_map : - ?default:string IStdlib.IStd.String.Map.t -> - ?default_to_string:(string IStdlib.IStd.String.Map.t -> string) -> + ?default:string IStdlib.IStd.String.Map.t -> + ?default_to_string:(string IStdlib.IStd.String.Map.t -> string) -> string IStdlib.IStd.String.Map.t IStdlib.IStd.ref t
    val mk_path : - default:string -> - ?default_to_string:(string -> string) -> - ?f:(string -> string) -> + default:string -> + ?default_to_string:(string -> string) -> + ?f:(string -> string) -> string IStdlib.IStd.ref t

    like mk_string but will resolve the string into an absolute path so that children processes agree on the absolute path that the option represents

    val mk_path_opt : - ?default:string -> - ?default_to_string:(string option -> string) -> + ?default:string -> + ?default_to_string:(string option -> string) -> string option IStdlib.IStd.ref t

    analogous of mk_string_opt with the extra feature of mk_path

    val mk_path_list : - ?default:string list -> - ?default_to_string:(string list -> string) -> + ?default:string list -> + ?default_to_string:(string list -> string) -> string IStdlib.RevList.t IStdlib.IStd.ref t

    analogous of mk_string_list with the extra feature of mk_path

    val mk_symbol : - default:'a -> - symbols:(string * 'a) list -> - eq:('a -> 'a -> bool) -> - ?f:('a -> 'a) -> + default:'a -> + symbols:(string * 'a) list -> + eq:('a -> 'a -> bool) -> + ?f:('a -> 'a) -> 'a IStdlib.IStd.ref t

    mk_symbol long symbols defines a command line flag --long <symbol> where (<symbol>,_) is an element of symbols.

    val mk_symbol_opt : - symbols:(string * 'a) list -> - ?f:('a -> 'a) -> - ?mk_reset:bool -> + symbols:(string * 'a) list -> + ?f:('a -> 'a) -> + ?mk_reset:bool -> 'a option IStdlib.IStd.ref t

    mk_symbol_opt is similar to mk_symbol but defaults to None. If mk_reset is false then do not create an additional --long-reset option to reset the value of the option to None.

    val mk_symbol_seq : - ?default:'a list -> - symbols:(string * 'a) list -> - eq:('a -> 'a -> bool) -> + ?default:'a list -> + symbols:(string * 'a) list -> + eq:('a -> 'a -> bool) -> 'a list IStdlib.IStd.ref t

    mk_symbol_seq long symbols defines a command line flag --long <symbol sequence> where <symbol sequence> is a comma-separated sequence of <symbol>s such that (<symbol>,_) is an element of symbols.

    val mk_json : Yojson.Safe.t IStdlib.IStd.ref t
    val mk_anon : unit -> string IStdlib.RevList.t IStdlib.IStd.ref

    mk_anon () defines a string list ref of the anonymous command line arguments, in the reverse order they appeared on the command line.

    val mk_rest_actions : - ?parse_mode:parse_mode -> - ?in_help:(ATDGenerated.InferCommand.t * string) list -> + ?parse_mode:parse_mode -> + ?in_help:(ATDGenerated.InferCommand.t * string) list -> string -> - usage:string -> + usage:string -> (string -> parse_mode) -> string list IStdlib.IStd.ref

    mk_rest_actions doc ~usage command_to_parse_mode defines a string list ref of the command line arguments following "--", in the reverse order they appeared on the command line. usage is the usage message in case of parse errors or if --help is passed. For example, calling mk_action and parsing exe -opt1 -opt2 -- arg1 arg2 will result in the returned ref containing arg2; arg1. Additionally, the first arg following "--" is passed to command_to_parse_mode to obtain the parse action that will be used to parse the remaining arguments.

    type command_doc
    val mk_command_doc : - title:string -> - section:int -> - version:string -> - date:string -> - short_description:string -> - synopsis:Cmdliner.Manpage.block list -> - description:Cmdliner.Manpage.block list -> - ?options: + title:string -> + section:int -> + version:string -> + date:string -> + short_description:string -> + synopsis:Cmdliner.Manpage.block list -> + description:Cmdliner.Manpage.block list -> + ?options: [ `Prepend of Cmdliner.Manpage.block list | `Replace of Cmdliner.Manpage.block list ] -> - ?exit_status:Cmdliner.Manpage.block list -> - ?environment:Cmdliner.Manpage.block list -> - ?files:Cmdliner.Manpage.block list -> - ?notes:Cmdliner.Manpage.block list -> - ?bugs:Cmdliner.Manpage.block list -> - ?examples:Cmdliner.Manpage.block list -> - ?see_also:Cmdliner.Manpage.block list -> + ?exit_status:Cmdliner.Manpage.block list -> + ?environment:Cmdliner.Manpage.block list -> + ?files:Cmdliner.Manpage.block list -> + ?notes:Cmdliner.Manpage.block list -> + ?bugs:Cmdliner.Manpage.block list -> + ?examples:Cmdliner.Manpage.block list -> + ?see_also:Cmdliner.Manpage.block list -> string -> command_doc

    mk_command_doc ~title ~section ~version ~short_description ~synopsis ~description ~see_also command_exe records information about a command that is used to create its man page. A lot of the concepts are taken from man-pages(7).

    • command_exe is the name of the command, preferably an executable that selects the command
    • title will be the title of the manual
    • section will be the section of the manual (the number 7 in man-pages(7))
    • version is the version string of the command
    • date is the date of the last modification of the manual
    • short_description is a one-line description of the command
    • options can be either `Replace blocks, which populates the OPTIONS section with blocks, or `Prepend blocks, in which case the options from the command are used, prepended by blocks. If unspecified it defaults to `Prepend [].
    • All the other section_name options correspond to the contents of the section section_name. Some are mandatory and some are not.
    val mk_subcommand : ATDGenerated.InferCommand.t -> - ?on_unknown_arg:[ `Add | `Skip | `Reject ] -> - name:string -> - ?deprecated_long:string -> - ?parse_mode:parse_mode -> - ?in_help:(ATDGenerated.InferCommand.t * string) list -> + ?on_unknown_arg:[ `Add | `Skip | `Reject ] -> + name:string -> + ?deprecated_long:string -> + ?parse_mode:parse_mode -> + ?in_help:(ATDGenerated.InferCommand.t * string) list -> command_doc option -> unit

    mk_subcommand command ~long command_doc defines the subcommand command. A subcommand is activated by passing name, and by passing --deprecated_long if specified. A man page is automatically generated for command based on the information in command_doc, if available (otherwise the command is considered internal). on_unknown_arg is the action taken on unknown anonymous arguments; it is `Reject by default.

    val infer_top_results_dir_env_var : string

    environment variable used for the results dir of the originator process

    val infer_cwd_env_var : string

    environment variable pointing to the originator's process working directory

    val args_env_var : string

    environment variable use to pass arguments from parent to child processes

    val strict_mode_env_var : string
    val env_var_sep : char

    separator of argv elements when encoded into environment variables

    val extend_env_args : string list -> unit

    extend_env_args args appends args to those passed via args_env_var

    val parse : - ?config_file:string -> - usage:IStdlib.IStd.Arg.usage_msg -> + ?config_file:string -> + usage:IStdlib.IStd.Arg.usage_msg -> parse_mode -> ATDGenerated.InferCommand.t option -> ATDGenerated.InferCommand.t option * (int -> 'a)

    parse ~usage parse_mode command parses command line arguments as specified by preceding calls to the mk_* functions, and returns:

    • the command selected by the user on the command line, except if command is not None in which case it is considered "pre-selected" for the user;
    • a function that prints the usage message and help text then exits with the code passed as argument.

    The decoded values of the inferconfig file config_file, if provided, are parsed, followed by the decoded values of the environment variable args_env_var, followed by Sys.argv if parse_mode is one that should parse command line arguments (this is defined in the implementation of this module). Therefore arguments passed on the command line supersede those specified in the environment variable, which themselves supersede those passed via the config file.

    WARNING: An argument will be interpreted as many times as it appears in all of the config file, the environment variable, and the command line. The args_env_var is set to the set of options parsed in args_env_var and on the command line.

    val is_env_var_set : string -> bool

    is_env_var_set var is true if $var=1

    val show_manual : - ?scrub_defaults:bool -> - ?internal_section:string -> + ?scrub_defaults:bool -> + ?internal_section:string -> Cmdliner.Manpage.format -> command_doc -> ATDGenerated.InferCommand.t option -> - unit

    Display the manual of command to the user, or command_doc if command is None. format is used as for Cmdliner.Manpage.print. If internal_section is specified, add a section titled internal_section about internal (hidden) options. If scrub_defaults then do not print default values for options.

    val keep_args_file : bool IStdlib.IStd.ref
    val inferconfig_path_arg : string

    name of argument for choosing path to inferconfig

    val add_to_env_args : string list -> unit

    add the provided extra arguments to arguments held in args_env_var in the current process environment

    val in_env_with_extra_args : string list -> f:(unit -> 'a) -> 'a

    like add_to_env_args but only add the extra arguments during the execution of f and restore the environment after f has returned

    \ No newline at end of file + unit

    Display the manual of command to the user, or command_doc if command is None. format is used as for Cmdliner.Manpage.print. If internal_section is specified, add a section titled internal_section about internal (hidden) options. If scrub_defaults then do not print default values for options.

    val keep_args_file : bool IStdlib.IStd.ref
    val inferconfig_path_arg : string

    name of argument for choosing path to inferconfig

    val add_to_env_args : string list -> unit

    add the provided extra arguments to arguments held in args_env_var in the current process environment

    val in_env_with_extra_args : string list -> f:(unit -> 'a) -> 'a

    like add_to_env_args but only add the extra arguments during the execution of f and restore the environment after f has returned

    diff --git a/website/static/odoc/next/infer/IBase/Config/index.html b/website/static/odoc/next/infer/IBase/Config/index.html index a2309ce45b1..81350967be1 100644 --- a/website/static/odoc/next/infer/IBase/Config/index.html +++ b/website/static/odoc/next/infer/IBase/Config/index.html @@ -1,9 +1,12 @@ -Config (infer.IBase.Config)

    Module IBase.Config

    Configuration values: either constant, determined at compile time, or set at startup time by system calls, environment variables, or command line options

    type os_type =
    1. | Unix
    2. | Win32
    3. | Cygwin
    type build_system =
    1. | BAnt
    2. | BBuck
    3. | BBuck2
    4. | BClang
    5. | BErlc
    6. | BGradle
    7. | BHackc
    8. | BJava
    9. | BJavac
    10. | BKotlinc
    11. | BMake
    12. | BMvn
    13. | BNdk
    14. | BPython
    15. | BRebar3
    16. | BXcode
    type scheduler =
    1. | File
    2. | Restart
    3. | SyntacticCallGraph
    val equal_scheduler : scheduler -> scheduler -> bool
    val string_of_scheduler : scheduler -> string
    val build_system_of_exe_name : string -> build_system
    val string_of_build_system : build_system -> string
    val env_inside_maven : IStdlib.IStd.Unix.env

    Constant configuration values

    val allow_listed_cpp_classes : string list
    val allow_listed_cpp_methods : string list
    val anonymous_block_prefix : string
    val assign : string
    val biabduction_models_jar : string
    val biabduction_models_sql : string
    val bin_dir : string
    val bound_error_allowed_in_procedure_call : bool
    val clang_exe_aliases : string list
    val clang_initializer_prefix : string
    val clang_inner_destructor_prefix : string
    val clang_plugin_path : string
    val copy : string
    val default_failure_name : string
    val dotty_frontend_output : string
    val etc_dir : string
    val fail_on_issue_exit_code : int
    val fcp_dir : string
    val idempotent_getters : bool
    val initial_analysis_time : float
    val is_running_unit_test : bool

    whether the infer executable looks like we are just running infer unit tests

    val ivar_attributes : string
    val java_lambda_marker_infix_generated_by_javalib : string

    marker to recognize methods generated by javalib to eliminate lambdas

    val java_lambda_marker_prefix_generated_by_javac : string

    marker to recognize methods generated by javac to build closures

    val kotlin_source_extension : string
    val lib_dir : string
    val max_narrows : int
    val max_widens : int
    val meet_level : int
    val nsnotification_center_checker_backend : bool
    val os_type : os_type
    val pp_version : Stdlib.Format.formatter -> unit -> unit
    val property_attributes : string
    val report_nullable_inconsistency : bool
    val save_compact_summaries : bool
    val smt_output : bool
    val unsafe_unret : string
    val weak : string
    val wrappers_dir : string

    Configuration values specified by command-line options

    val abstract_pulse_models_for_erlang : bool
    val analysis_schedule_file : string option
    val annotation_reachability_apply_class_annotations : bool
    val annotation_reachability_custom_models : Yojson.Safe.t
    val annotation_reachability_custom_pairs : Yojson.Safe.t
    val annotation_reachability_cxx : Yojson.Safe.t
    val annotation_reachability_cxx_sources : Yojson.Safe.t
    val annotation_reachability_expensive : bool
    val annotation_reachability_no_allocation : bool
    val append_buck_flavors : string list
    val biabduction_abs_struct : int
    val biabduction_abs_val : int
    val biabduction_allow_leak : bool
    val biabduction_array_level : int
    val biabduction_iterations : int
    val biabduction_join_cond : int
    val biabduction_memleak_buckets : +Config (infer.IBase.Config)

    Module IBase.Config

    Configuration values: either constant, determined at compile time, or set at startup time by system calls, environment variables, or command line options

    type os_type =
    1. | Unix
    2. | Win32
    3. | Cygwin
    type build_system =
    1. | BAnt
    2. | BBuck
    3. | BBuck2
    4. | BClang
    5. | BErlc
    6. | BGradle
    7. | BHackc
    8. | BJava
    9. | BJavac
    10. | BKotlinc
    11. | BMake
    12. | BMvn
    13. | BNdk
    14. | BPython
    15. | BRebar3
    16. | BXcode
    type scheduler =
    1. | File
    2. | Restart
    3. | SyntacticCallGraph
    val equal_scheduler : scheduler -> scheduler -> bool
    val string_of_scheduler : scheduler -> string
    val build_system_of_exe_name : string -> build_system
    val string_of_build_system : build_system -> string
    val env_inside_maven : IStdlib.IStd.Unix.env

    Constant configuration values

    val allow_listed_cpp_classes : string list
    val allow_listed_cpp_methods : string list
    val anonymous_block_prefix : string
    val assign : string
    val biabduction_models_jar : string
    val biabduction_models_sql : string
    val bin_dir : string
    val bound_error_allowed_in_procedure_call : bool
    val clang_exe_aliases : string list
    val clang_initializer_prefix : string
    val clang_inner_destructor_prefix : string
    val clang_plugin_path : string
    val copy : string
    val default_failure_name : string
    val dotty_frontend_output : string
    val etc_dir : string
    val fail_on_issue_exit_code : int
    val fcp_dir : string
    val idempotent_getters : bool
    val initial_analysis_time : float
    val is_running_unit_test : bool

    whether the infer executable looks like we are just running infer unit tests

    val ivar_attributes : string
    val java_lambda_marker_infix_generated_by_javalib : string

    marker to recognize methods generated by javalib to eliminate lambdas

    val java_lambda_marker_prefix_generated_by_javac : string

    marker to recognize methods generated by javac to build closures

    val kotlin_source_extension : string
    val lib_dir : string
    val max_narrows : int
    val max_widens : int
    val meet_level : int
    val nsnotification_center_checker_backend : bool
    val os_type : os_type
    val pp_version : Stdlib.Format.formatter -> unit -> unit
    val property_attributes : string
    val report_nullable_inconsistency : bool
    val save_compact_summaries : bool
    val smt_output : bool
    val unsafe_unret : string
    val weak : string
    val wrappers_dir : string

    Configuration values specified by command-line options

    val abstract_pulse_models_for_erlang : bool
    val analysis_schedule_file : string option
    val annotation_reachability_apply_superclass_annotations : bool
    val annotation_reachability_custom_models : Yojson.Safe.t
    val annotation_reachability_custom_pairs : Yojson.Safe.t
    val annotation_reachability_cxx : Yojson.Safe.t
    val annotation_reachability_cxx_sources : Yojson.Safe.t
    val annotation_reachability_expensive : bool
    val annotation_reachability_no_allocation : bool
    val annotation_reachability_report_source_and_sink : bool
    val append_buck_flavors : string list
    val biabduction_abs_struct : int
    val biabduction_abs_val : int
    val biabduction_allow_leak : bool
    val biabduction_array_level : int
    val biabduction_iterations : int
    val biabduction_join_cond : int
    val biabduction_memleak_buckets : [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] - list
    val biabduction_models_mode : bool
    val biabduction_monitor_prop_size : bool
    val biabduction_nelseg : bool
    val biabduction_only_footprint : bool
    val biabduction_seconds_per_iteration : float option
    val biabduction_symops_per_iteration : int option
    val biabduction_trace_join : bool
    val biabduction_trace_rearrange : bool
    val biabduction_type_size : bool
    val biabduction_unsafe_malloc : bool
    val biabduction_worklist_mode : int
    val biabduction_write_dotty : bool
    val bo_assume_void : bool
    val bo_bottom_as_default : bool
    val bo_context_sensitive_allocsites : bool
    val bo_debug : int
    val bo_exit_frontend_gener_vars : bool
    val bo_field_depth_limit : int option
    val bo_max_cfg_size : int
    val bo_sound_unknown_sets_join : bool
    val bootclasspath : string option
    val buck : bool
    val buck2_build_args : string list
    val buck2_build_args_no_inline : string list
    val buck2_bxl_capture_file_block_list : string list
    val buck2_bxl_target : string option
    val buck2_inferconfig_target : string option
    val buck2_infertoolchain_target : string option
    val buck2_isolation_dir : string option
    val buck2_query_deps : bool
    val buck2_root : string
    val buck2_use_bxl : bool
    val buck_block_list : string list
    val buck_build_args : string list
    val buck_build_args_no_inline : string list
    val buck_cache_mode : bool
    val buck_clang_use_toolchain_config : bool
    val buck_dependency_depth : int option
    val buck_java_heap_size_gb : int option
    val buck_java_suppress_config : bool
    val buck_merge_all_deps : bool
    val buck_mode : BuckMode.t option
    val buck_out : string
    val buck_out_gen : string
    val buck_targets_block_list : string list
    val capture : bool
    val capture_block_list : string * Yojson.Safe.t
    val capture_textual : string list
    val censor_report : ((bool * Str.regexp) * (bool * Str.regexp) * string) list
    val cfg_json : string option
    val changed_files_index : string option
    val check_version : string option
    val clang_ast_file : [ `Biniou of string | `Yojson of string ] option
    val clang_block_listed_flags : string list
    val clang_block_listed_flags_with_arg : string list
    val clang_compound_literal_init_limit : int
    val clang_extra_flags : string list
    val clang_frontend_action_string : string
    val clang_idirafter_to_override_regex : Str.regexp option
    val clang_ignore_regex : Str.regexp option
    val clang_isystem_to_override_regex : Str.regexp option
    val clang_libcxx_include_to_override_regex : string option
    val classpath : string option
    val compaction_if_heap_greater_equal_to_GB : int
    val compaction_minimum_interval_s : int
    val complete_capture_from : string option
    val config_impact_config_field_patterns : Re.Str.regexp list
    val config_impact_config_function_patterns : Re.Str.regexp list
    val config_impact_config_param_patterns : Re.Str.regexp list
    val config_impact_current : string option
    val config_impact_data_file : string option
    val config_impact_issues_tests : string option
    val config_impact_max_callees_to_print : int
    val config_impact_previous : string option
    val config_impact_strict_mode : bool
    val config_impact_strict_mode_paths : Str.regexp list
    val config_impact_test_paths : Str.regexp list
    val continue_analysis : bool
    val continue_capture : bool
    val cost_issues_tests : string option
    val cost_log_unknown_calls : bool
    val cost_suppress_func_ptr : bool
    val costs_current : string option
    val costs_previous : string option
    val cxx : bool
    val cxx_scope_guards : Yojson.Safe.t
    val data_flow_queries_on_topl : string list
    val dbwriter : bool
    val debug_exceptions : bool
    val debug_level_analysis : int
    val debug_level_capture : int
    val debug_level_test_determinator : int
    val debug_mode : bool
    val deduplicate : bool
    val dependency_mode : bool
    val developer_mode : bool
    val differential_filter_files : string option
    val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
    val dotty_cfg_libs : bool
    val dump_duplicate_symbols : bool
    val dump_textual : bool
    val dynamic_dispatch_json_file_path : string option
    val erlang_ast_dir : string option
    val erlang_check_return : bool
    val erlang_list_unfold_depth : int
    val erlang_reliability : bool
    val erlang_skip_compile : bool
    val erlang_with_otp_specs : bool
    val export_changed_functions : bool
    val extract_capture_from : string option
    val fail_on_bug : bool
    val fcp_apple_clang : string option
    val fcp_syntax_only : bool
    val file_renamings : string option
    val files_to_analyze_index : string option
    val filter_paths : bool
    val filtering : bool
    val force_delete_results_dir : bool
    val force_integration : build_system option
    val from_json_config_impact_report : string
    val from_json_costs_report : string
    val from_json_report : string
    val frontend_stats : bool
    val frontend_tests : bool
    val generated_classes : string option
    val genrule_mode : bool
    val global_tenv : bool
    val hack_builtin_models : string
    val hack_models : string list
    val hack_naming_table : string option
    val hackc_binary : string option
    val help_checker : Checker.t list
    val help_issue_type : IssueType.t list
    val hoisting_report_only_expensive : bool
    val html : bool
    val icfg_dotty_outfile : string option
    val implicit_sdk_root : string option
    val impurity_report_immutable_modifications : bool
    val inclusive_cost : bool
    val incremental_analysis : bool
    val infer_binary : string

    absolute canonicalized path to the current executable

    val infer_is_clang : bool
    val infer_is_javac : bool
    val inferconfig_file : string option
    val inline_func_pointer_for_testing : string option
    val invalidate_only : bool
    val is_checker_enabled : Checker.t -> bool
    val issues_tests : string option
    val issues_tests_fields : IssuesTestField.t list
    val java_debug_source_file_info : string option
    val java_jar_compiler : string option
    val java_reflection : bool
    val java_source_parser_experimental : bool
    val java_version : int option
    val javac_classes_out : string
    val job_id : string option
    val jobs : int
    val keep_going : bool
    val kotlin_capture : bool
    val lineage_dedup : bool
    val lineage_field_depth : int
    val lineage_field_max_cfg_size : int option
    val lineage_field_width : int option
    val lineage_include_builtins : bool
    val lineage_json_report : bool
    val lineage_keep_temporaries : bool
    val lineage_max_cfg_size : int option
    val lineage_prevent_cycles : bool
    val lineage_seed : int
    val lineage_variant_width : int
    val list_checkers : bool
    val list_issue_types : bool
    val liveness_block_list_var_regex : Str.regexp option
    val liveness_dangerous_classes : Yojson.Safe.t
    val liveness_ignored_constant : string list
    val load_average : float option
    val lock_model : Yojson.Safe.t
    val log_pulse_disjunct_increase_after_model_call : bool
    val log_pulse_unreachable_nodes : bool
    val log_missing_deps : bool
    val margin_html : int
    val mark_unchanged_procs : bool
    val mask_sajwa_exceptions : bool
    val max_nesting : int option
    val memtrace_analysis : bool
    val memtrace_sampling_rate : float
    val merge_capture : string list
    val merge_report : string list
    val merge_summaries : string list
    val method_decls_info : string option
    val modeled_expensive : string * Yojson.Safe.t
    val modified_lines : string option
    val never_returning_null : string * Yojson.Safe.t
    val no_censor_report : Str.regexp list
    val no_translate_libs : bool
    val nullable_annotation : string option
    val only_cheap_debug : bool
    val oom_threshold : int option
    val pmd_xml : bool
    val preanalysis_html : bool
    val print_active_checkers : bool
    val print_builtins : bool
    val print_jbir : bool
    val print_logs : bool
    val print_types : bool
    val print_using_diff : bool
    val procedures : bool
    val procedures_attributes : bool
    val procedures_call_graph : bool
    val procedures_callees : bool
    val procedures_cfg : bool
    val procedures_definedness : bool
    val procedures_filter : string option
    val procedures_name : bool
    val procedures_source_file : bool
    val procedures_summary : bool
    val procedures_summary_json : bool
    val procedures_summary_skip_empty : bool
    val process_clang_ast : bool
    val profiler_samples : string option
    val progress_bar : [ `MultiLine | `Plain | `Quiet ]
    val project_root : string
    val pulse_cut_to_one_path_procedures_pattern : Str.regexp option
    val pulse_force_continue : bool
    val pulse_havoc_arguments : bool
    val pulse_inline_global_init_func_pointer : bool
    val pulse_intraprocedural_only : bool
    val pulse_log_summary_count : bool
    val pulse_log_unknown_calls : bool
    val pulse_max_cfg_size : int
    val pulse_max_disjuncts : int
    val pulse_max_heap : int option
    val pulse_model_abort : string list
    val pulse_model_alloc_pattern : Str.regexp option
    val pulse_model_cheap_copy_type : Str.regexp option
    val pulse_model_free_pattern : Str.regexp option
    val pulse_model_malloc_pattern : Str.regexp option
    val pulse_model_realloc_pattern : Str.regexp option
    val pulse_model_release_pattern : Str.regexp option
    val pulse_model_return_first_arg : Str.regexp option
    val pulse_model_return_nonnull : Str.regexp option
    val pulse_model_return_this : Str.regexp option
    val pulse_model_returns_copy_pattern : Str.regexp option
    val pulse_model_skip_pattern : Str.regexp option
    val pulse_model_transfer_ownership : string list
    val pulse_model_transfer_ownership_namespace : (string * string) list
    val pulse_models_for_erlang : string list
    val pulse_monitor_transitive_callees : bool
    val pulse_monitor_transitive_missed_captures : bool
    val pulse_nullsafe_report_npe : bool
    val pulse_nullsafe_report_npe_as_separate_issue_type : bool
    val pulse_prevent_non_disj_top : bool
    val pulse_recency_limit : int
    val pulse_report_flows_from_taint_source : string option
    val pulse_report_flows_to_taint_sink : string option
    val pulse_report_issues_for_tests : bool
    val pulse_report_latent_issues : bool
    val pulse_sanity_checks : bool
    val pulse_skip_procedures : Str.regexp option
    val pulse_specialization_iteration_limit : int
    val pulse_specialization_limit : int
    val pulse_specialization_partial : bool
    val pulse_taint_check_history : bool
    val pulse_taint_config : pulse_taint_config
    val pulse_taint_short_traces : bool
    val pulse_taint_skip_sources : bool
    val pulse_transitive_access_config : string list
    val pulse_transitive_access_enabled : bool
    val pulse_transitive_access_verbose : bool
    val pulse_unsafe_malloc : bool
    val pulse_widen_threshold : int
    val pure_by_default : bool
    val pyc_file : string list
    val python_builtin_models : string
    val quandary_endpoints : Yojson.Safe.t
    val quandary_sanitizers : Yojson.Safe.t
    val quandary_show_passthroughs : bool
    val quandary_sinks : Yojson.Safe.t
    val quandary_sources : Yojson.Safe.t
    val quiet : bool
    val racerd_always_report_java : bool
    val racerd_guardedby : bool
    val racerd_ignore_classes : IStdlib.IStd.String.Set.t
    val reactive_mode : bool
    val reanalyze : bool
    val relative_path_backtrack : int
    val remodel_class : string option
    val replay_analysis_schedule : bool
    val replay_ondemand_should_error : bool
    val report : bool
    val report_block_list_files_containing : string list
    val report_console_limit : int option
    val report_current : string option
    val report_custom_error : bool
    val report_force_relative_path : bool
    val report_formatter : [ `No_formatter | `Phabricator_formatter ]
    val report_path_regex_allow_list : string list
    val report_path_regex_block_list : string list
    val report_previous : string option
    val report_suppress_errors : string list
    val reports_include_ml_loc : bool
    val rest : string list
    val results_dir : string
    val run_as_child : int option
    val sarif : bool
    val scheduler : scheduler
    val scope_leakage_config : Yojson.Safe.t
    val scuba_logging : bool
    val scuba_normals : string IStdlib.IStd.String.Map.t
    val scuba_tags : string list IStdlib.IStd.String.Map.t
    val select : [ `All | `Select of int ] option
    val show_buckets : bool
    val shrink_analysis_db : bool
    val siof_check_iostreams : bool
    val siof_safe_methods : string list
    val skip_analysis_in_path : Str.regexp option
    val skip_analysis_in_path_skips_compilation : bool
    val skip_duplicated_types : bool
    val skip_non_capture_clang_commands : bool
    val skip_translation_headers : string list
    val source_files : bool
    val source_files_call_graph : bool
    val source_files_call_graph_partition : int option
    val source_files_cfg : bool
    val source_files_filter : string option
    val source_files_freshly_captured : bool
    val source_files_procedure_names : bool
    val source_files_type_environment : bool
    val source_preview : bool
    val sourcepath : string option
    val sources : string list
    val sqlite_cache_size : int
    val sqlite_lock_timeout : int
    val sqlite_max_blob_size : int
    val sqlite_mmap_size : int
    val sqlite_page_size : int
    val sqlite_vfs : string option
    val starvation_skip_analysis : Yojson.Safe.t
    val starvation_strict_mode : bool
    val starvation_whole_program : bool
    val stats_dir_current : string option
    val stats_dir_previous : string option
    val store_analysis_schedule : bool
    val subtype_multirange : bool
    val suffix_match_changed_files : bool
    val summaries_caches_max_size : int
    val suppress_lint_ignore_types : bool
    val tenv_json : string option
    val test_determinator : bool
    val testing_mode : bool
    val threadsafe_aliases : Yojson.Safe.t
    val timeout : float option
    val top_longest_proc_duration_size : int option
    val topl_max_conjuncts : int
    val topl_max_disjuncts : int
    val topl_properties : ToplAst.t list
    val topl_report_latent_issues : bool
    val trace_absarray : bool
    val trace_error : bool
    val trace_events : bool
    val trace_ondemand : bool
    val trace_topl : bool
    val unix_fork : bool
    val workspace : string option
    val write_html : bool
    val write_html_allow_list_regex : string list
    val write_website : string option
    val xcode_developer_dir : string option
    val xcode_isysroot_suffix : string option
    val xcpretty : bool

    Configuration values derived from command-line options

    val toplevel_results_dir : string

    In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

    val java_package_is_external : string -> bool

    Check if a Java package is external to the repository

    val scuba_execution_id : IStdlib.IStd.Int64.t option

    a random number to (hopefully) uniquely identify this run

    val is_originator : bool

    is the current process (forked from) the root of the Infer process tree

    Global variables with initial values specified by command-line options

    val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
    \ No newline at end of file + list
    val biabduction_models_mode : bool
    val biabduction_monitor_prop_size : bool
    val biabduction_nelseg : bool
    val biabduction_only_footprint : bool
    val biabduction_seconds_per_iteration : float option
    val biabduction_symops_per_iteration : int option
    val biabduction_trace_join : bool
    val biabduction_trace_rearrange : bool
    val biabduction_type_size : bool
    val biabduction_unsafe_malloc : bool
    val biabduction_worklist_mode : int
    val biabduction_write_dotty : bool
    val bo_assume_void : bool
    val bo_bottom_as_default : bool
    val bo_context_sensitive_allocsites : bool
    val bo_debug : int
    val bo_exit_frontend_gener_vars : bool
    val bo_field_depth_limit : int option
    val bo_max_cfg_size : int
    val bo_sound_unknown_sets_join : bool
    val bootclasspath : string option
    val buck : bool
    val buck2_build_args : string list
    val buck2_build_args_no_inline : string list
    val buck2_bxl_capture_file_block_list : string list
    val buck2_bxl_target : string option
    val buck2_inferconfig_target : string option
    val buck2_infertoolchain_target : string option
    val buck2_isolation_dir : string option
    val buck2_query_deps : bool
    val buck2_root : string
    val buck_block_list : string list
    val buck_build_args : string list
    val buck_build_args_no_inline : string list
    val buck_cache_mode : bool
    val buck_clang_use_toolchain_config : bool
    val buck_dependency_depth : int option
    val buck_java_heap_size_gb : int option
    val buck_java_suppress_config : bool
    val buck_merge_all_deps : bool
    val buck_mode : BuckMode.t option
    val buck_out : string
    val buck_out_gen : string
    val buck_targets_block_list : string list
    val capture : bool
    val capture_block_list : string * Yojson.Safe.t
    val capture_textual : string list
    val censor_report : + ((bool * IStdlib.IStd.Str.regexp) * (bool * IStdlib.IStd.Str.regexp) * string) + list
    val cfg_json : string option
    val changed_files_index : string option
    val check_version : string option
    val clang_ast_file : [ `Biniou of string | `Yojson of string ] option
    val clang_block_listed_flags : string list
    val clang_block_listed_flags_with_arg : string list
    val clang_compound_literal_init_limit : int
    val clang_extra_flags : string list
    val clang_frontend_action_string : string
    val clang_idirafter_to_override_regex : IStdlib.IStd.Str.regexp option
    val clang_ignore_regex : IStdlib.IStd.Str.regexp option
    val clang_isystem_to_override_regex : IStdlib.IStd.Str.regexp option
    val clang_libcxx_include_to_override_regex : string option
    val classpath : string option
    val compaction_if_heap_greater_equal_to_GB : int
    val compaction_minimum_interval_s : int
    val complete_capture_from : string option
    val config_impact_config_field_patterns : IStdlib.IStd.Str.regexp list
    val config_impact_config_function_patterns : IStdlib.IStd.Str.regexp list
    val config_impact_config_param_patterns : IStdlib.IStd.Str.regexp list
    val config_impact_current : string option
    val config_impact_data_file : string option
    val config_impact_issues_tests : string option
    val config_impact_max_callees_to_print : int
    val config_impact_previous : string option
    val config_impact_strict_mode : bool
    val config_impact_strict_mode_paths : IStdlib.IStd.Str.regexp list
    val config_impact_test_paths : IStdlib.IStd.Str.regexp list
    val continue_analysis : bool
    val continue_capture : bool
    val cost_issues_tests : string option
    val cost_log_unknown_calls : bool
    val cost_suppress_func_ptr : bool
    val costs_current : string option
    val costs_previous : string option
    val cxx : bool
    val cxx_scope_guards : Yojson.Safe.t
    val data_flow_queries_on_topl : string list
    val dbwriter : bool
    val debug_exceptions : bool
    val debug_level_analysis : int
    val debug_level_capture : int
    val debug_level_report : int
    val debug_level_test_determinator : int
    val debug_mode : bool
    val deduplicate : bool
    val dependency_mode : bool
    val developer_mode : bool
    val dict_missing_key_var_block_list : IStdlib.IStd.Str.regexp option
    val differential_filter_files : string option
    val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
    val dotty_cfg_libs : bool
    val dump_duplicate_symbols : bool
    val dump_textual : bool
    val dynamic_dispatch_json_file_path : string option
    val erlang_ast_dir : string option
    val erlang_check_return : bool
    val erlang_list_unfold_depth : int
    val erlang_reliability : bool
    val erlang_skip_compile : bool
    val erlang_with_otp_specs : bool
    val export_changed_functions : bool
    val extract_capture_from : string option
    val fail_on_bug : bool
    val fcp_apple_clang : string option
    val fcp_syntax_only : bool
    val file_renamings : string option
    val files_to_analyze_index : string option
    val filter_paths : bool
    val filtering : bool
    val force_delete_results_dir : bool
    val force_integration : build_system option
    val from_json_config_impact_report : string
    val from_json_costs_report : string
    val from_json_report : string
    val frontend_stats : bool
    val frontend_tests : bool
    val generated_classes : string option
    val genrule_mode : bool
    val global_tenv : bool
    val hack_builtin_models : string
    val hack_models : string list
    val hack_naming_table : string option
    val hackc_binary : string option
    val help_checker : Checker.t list
    val help_issue_type : IssueType.t list
    val hoisting_report_only_expensive : bool
    val html : bool
    val icfg_dotty_outfile : string option
    val implicit_sdk_root : string option
    val impurity_report_immutable_modifications : bool
    val inclusive_cost : bool
    val incremental_analysis : bool
    val infer_binary : string

    absolute canonicalized path to the current executable

    val infer_is_clang : bool
    val infer_is_javac : bool
    val inferconfig_file : string option
    val inline_func_pointer_for_testing : string option
    val invalidate_only : bool
    val is_checker_enabled : Checker.t -> bool
    val issues_tests : string option
    val issues_tests_fields : IssuesTestField.t list
    val java_debug_source_file_info : string option
    val java_jar_compiler : string option
    val java_reflection : bool
    val java_source_parser_experimental : bool
    val java_version : int option
    val javac_classes_out : string
    val job_id : string option
    val jobs : int
    val keep_going : bool
    val kotlin_capture : bool
    val lineage_source : string option
    val lineage_sink : string option
    val lineage_dedup : bool
    val lineage_field_depth : int
    val lineage_field_max_cfg_size : int option
    val lineage_field_width : int option
    val lineage_include_builtins : bool
    val lineage_json_report : bool
    val lineage_keep_temporaries : bool
    val lineage_max_cfg_size : int option
    val lineage_prevent_cycles : bool
    val lineage_seed : int
    val lineage_variant_width : int
    val list_checkers : bool
    val list_issue_types : bool
    val liveness_block_list_var_regex : IStdlib.IStd.Str.regexp option
    val liveness_dangerous_classes : Yojson.Safe.t
    val liveness_ignored_constant : string list
    val load_average : float option
    val lock_model : Yojson.Safe.t
    val log_pulse_disjunct_increase_after_model_call : bool
    val log_pulse_coverage : bool
    val log_missing_deps : bool
    val margin_html : int
    val mark_unchanged_procs : bool
    val mask_sajwa_exceptions : bool
    val max_nesting : int option
    val memtrace_analysis : bool
    val memtrace_sampling_rate : float
    val merge_capture : string list
    val merge_report : string list
    val merge_summaries : string list
    val method_decls_info : string option
    val modeled_expensive : string * Yojson.Safe.t
    val modified_lines : string option
    val never_returning_null : string * Yojson.Safe.t
    val no_censor_report : IStdlib.IStd.Str.regexp list
    val no_translate_libs : bool
    val nullable_annotation : string option
    val only_cheap_debug : bool
    val oom_threshold : int option
    val pmd_xml : bool
    val preanalysis_html : bool
    val print_active_checkers : bool
    val print_builtins : bool
    val print_jbir : bool
    val print_logs : bool
    val print_types : bool
    val print_using_diff : bool
    val procedures : bool
    val procedures_attributes : bool
    val procedures_call_graph : bool
    val procedures_callees : bool
    val procedures_cfg : bool
    val procedures_definedness : bool
    val procedures_filter : string option
    val procedures_name : bool
    val procedures_source_file : bool
    val procedures_summary : bool
    val procedures_summary_json : bool
    val procedures_summary_skip_empty : bool
    val process_clang_ast : bool
    val profiler_samples : string option
    val progress_bar : [ `MultiLine | `Plain | `Quiet ]
    val project_root : string
    val pulse_cut_to_one_path_procedures_pattern : IStdlib.IStd.Str.regexp option
    val pulse_force_continue : bool
    val pulse_havoc_arguments : bool
    val pulse_inline_global_init_func_pointer : bool
    val pulse_intraprocedural_only : bool
    val pulse_log_summary_count : bool
    val pulse_log_unknown_calls : bool
    val pulse_max_cfg_size : int
    val pulse_max_disjuncts : int
    val pulse_max_heap : int option
    val pulse_model_abort : string list
    val pulse_model_alloc_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_cheap_copy_type : IStdlib.IStd.Str.regexp option
    val pulse_model_free_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_malloc_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_realloc_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_release_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_return_first_arg : IStdlib.IStd.Str.regexp option
    val pulse_model_return_nonnull : IStdlib.IStd.Str.regexp option
    val pulse_model_return_this : IStdlib.IStd.Str.regexp option
    val pulse_model_returns_copy_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_skip_pattern : IStdlib.IStd.Str.regexp option
    val pulse_model_transfer_ownership : string list
    val pulse_model_transfer_ownership_namespace : (string * string) list
    val pulse_models_for_erlang : string list
    val pulse_monitor_transitive_callees : bool
    val pulse_monitor_transitive_missed_captures : bool
    val pulse_nullsafe_report_npe : bool
    val pulse_nullsafe_report_npe_as_separate_issue_type : bool
    val pulse_prevent_non_disj_top : bool
    val pulse_recency_limit : int
    val pulse_report_flows_from_taint_source : string option
    val pulse_report_flows_to_taint_sink : string option
    val pulse_report_issues_for_tests : bool
    val pulse_report_latent_issues : bool
    val pulse_sanity_checks : bool
    val pulse_skip_procedures : IStdlib.IStd.Str.regexp option
    val pulse_specialization_iteration_limit : int
    val pulse_specialization_limit : int
    val pulse_specialization_partial : bool
    val pulse_taint_check_history : bool
    val pulse_taint_config : pulse_taint_config
    val pulse_taint_short_traces : bool
    val pulse_taint_skip_sources : bool
    val pulse_transitive_access_config : string list
    val pulse_transitive_access_enabled : bool
    val pulse_transitive_access_verbose : bool
    val pulse_unsafe_malloc : bool
    val pulse_widen_threshold : int
    val pure_by_default : bool
    val pyc_file : string list
    val python_builtin_models : string
    val qualified_cpp_name_block_list : string list
    val quandary_endpoints : Yojson.Safe.t
    val quandary_sanitizers : Yojson.Safe.t
    val quandary_show_passthroughs : bool
    val quandary_sinks : Yojson.Safe.t
    val quandary_sources : Yojson.Safe.t
    val quiet : bool
    val racerd_always_report_java : bool
    val racerd_guardedby : bool
    val racerd_ignore_classes : IStdlib.IStd.String.Set.t
    val reactive_mode : bool
    val reanalyze : bool
    val relative_path_backtrack : int
    val replay_analysis_schedule : bool
    val replay_ondemand_should_error : bool
    val report : bool
    val report_block_list_files_containing : string list
    val report_console_limit : int option
    val report_current : string option
    val report_custom_error : bool
    val report_force_relative_path : bool
    val report_formatter : [ `No_formatter | `Phabricator_formatter ]
    val report_path_regex_allow_list : string list
    val report_path_regex_block_list : string list
    val report_previous : string option
    val report_suppress_errors : string list
    val reports_include_ml_loc : bool
    val rest : string list
    val results_dir : string
    val run_as_child : int option
    val sarif : bool
    val scheduler : scheduler
    val scope_leakage_config : Yojson.Safe.t
    val scuba_logging : bool
    val scuba_normals : string IStdlib.IStd.String.Map.t
    val scuba_tags : string list IStdlib.IStd.String.Map.t
    val select : [ `All | `Select of int ] option
    val show_buckets : bool
    val shrink_analysis_db : bool
    val siof_check_iostreams : bool
    val siof_safe_methods : string list
    val skip_analysis_in_path : IStdlib.IStd.Str.regexp option
    val skip_analysis_in_path_skips_compilation : bool
    val skip_duplicated_types : bool
    val skip_non_capture_clang_commands : bool
    val skip_translation_headers : string list
    val source_files : bool
    val source_files_call_graph : bool
    val source_files_call_graph_partition : int option
    val source_files_cfg : bool
    val source_files_filter : string option
    val source_files_freshly_captured : bool
    val source_files_procedure_names : bool
    val source_files_type_environment : bool
    val source_preview : bool
    val sourcepath : string option
    val sources : string list
    val sqlite_cache_size : int
    val sqlite_lock_timeout : int
    val sqlite_max_blob_size : int
    val sqlite_mmap_size : int
    val sqlite_page_size : int
    val sqlite_vfs : string option
    val starvation_c_function_pointer_models : Yojson.Safe.t
    val starvation_skip_analysis : Yojson.Safe.t
    val starvation_strict_mode : bool
    val starvation_whole_program : bool
    val stats_dir_current : string option
    val stats_dir_previous : string option
    val struct_as_cpp_class : bool
    val store_analysis_schedule : bool
    val subtype_multirange : bool
    val suffix_match_changed_files : bool
    val summaries_caches_max_size : int
    val suppress_lint_ignore_types : bool
    val tenv_json : string option
    val test_determinator : bool
    val testing_mode : bool
    val threadsafe_aliases : Yojson.Safe.t
    val timeout : float option
    val top_longest_proc_duration_size : int option
    val topl_max_conjuncts : int
    val topl_max_disjuncts : int
    val topl_properties : ToplAst.t list
    val topl_report_latent_issues : bool
    val trace_absarray : bool
    val trace_error : bool
    val trace_events : bool
    val trace_ondemand : bool
    val trace_topl : bool
    val unix_fork : bool
    val workspace : string option
    val write_html : bool
    val write_html_allow_list_regex : string list
    val write_website : string option
    val xcode_developer_dir : string option
    val xcode_isysroot_suffix : string option
    val xcpretty : bool

    Configuration values derived from command-line options

    val toplevel_results_dir : string

    In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

    val java_package_is_external : string -> bool

    Check if a Java package is external to the repository

    val scuba_execution_id : IStdlib.IStd.Int64.t option

    a random number to (hopefully) uniquely identify this run

    val is_originator : bool

    is the current process (forked from) the root of the Infer process tree

    Global variables with initial values specified by command-line options

    val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
    diff --git a/website/static/odoc/next/infer/IBase/CostIssues/CostKindMap/index.html b/website/static/odoc/next/infer/IBase/CostIssues/CostKindMap/index.html index 428cc72b510..f86080fc5db 100644 --- a/website/static/odoc/next/infer/IBase/CostIssues/CostKindMap/index.html +++ b/website/static/odoc/next/infer/IBase/CostIssues/CostKindMap/index.html @@ -1,12 +1,12 @@ -CostKindMap (infer.IBase.CostIssues.CostKindMap)

    Module CostIssues.CostKindMap

    include IStdlib.PrettyPrintable.PPMap with type key = CostKind.t
    include IStdlib.IStd.Caml.Map.S with type key = IBase.CostKind.t
    type key = CostKind.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +CostKindMap (infer.IBase.CostIssues.CostKindMap)

    Module CostIssues.CostKindMap

    include IStdlib.PrettyPrintable.PPMap with type key = CostKind.t
    include IStdlib.IStd.Caml.Map.S with type key = IBase.CostKind.t
    type key = CostKind.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    val iter2 : 'a t -> 'b t -> f:(key -> 'a -> 'b -> unit) -> unit
    \ No newline at end of file + unit
    val iter2 : 'a t -> 'b t -> f:(key -> 'a -> 'b -> unit) -> unit
    diff --git a/website/static/odoc/next/infer/IBase/CostIssues/index.html b/website/static/odoc/next/infer/IBase/CostIssues/index.html index cc447ac0740..a1ee774c4ea 100644 --- a/website/static/odoc/next/infer/IBase/CostIssues/index.html +++ b/website/static/odoc/next/infer/IBase/CostIssues/index.html @@ -1,2 +1,2 @@ -CostIssues (infer.IBase.CostIssues)

    Module IBase.CostIssues

    type issue_spec = {
    1. extract_cost_f : ATDGenerated.Jsoncost_t.item -> ATDGenerated.Jsoncost_t.info;
    2. name : string;
    3. complexity_increase_issue : is_on_ui_thread:bool -> IssueType.t;
    4. unreachable_issue : IssueType.t;
    5. infinite_issue : IssueType.t;
    6. expensive_issue : IssueType.t;
    7. top_and_unreachable : bool;
    8. expensive : bool;
    }
    module CostKindMap : sig ... end
    val enabled_cost_map : issue_spec CostKindMap.t
    \ No newline at end of file +CostIssues (infer.IBase.CostIssues)

    Module IBase.CostIssues

    type issue_spec = {
    1. extract_cost_f : ATDGenerated.Jsoncost_t.item -> ATDGenerated.Jsoncost_t.info;
    2. name : string;
    3. complexity_increase_issue : is_on_ui_thread:bool -> IssueType.t;
    4. unreachable_issue : IssueType.t;
    5. infinite_issue : IssueType.t;
    6. expensive_issue : IssueType.t;
    7. top_and_unreachable : bool;
    8. expensive : bool;
    }
    module CostKindMap : sig ... end
    val enabled_cost_map : issue_spec CostKindMap.t
    diff --git a/website/static/odoc/next/infer/IBase/CostIssuesTestField/index.html b/website/static/odoc/next/infer/IBase/CostIssuesTestField/index.html index 37533a1cb2a..d0a16d22886 100644 --- a/website/static/odoc/next/infer/IBase/CostIssuesTestField/index.html +++ b/website/static/odoc/next/infer/IBase/CostIssuesTestField/index.html @@ -1,2 +1,2 @@ -CostIssuesTestField (infer.IBase.CostIssuesTestField)

    Module IBase.CostIssuesTestField

    type t =
    1. | IsOnUIThread
    2. | Procedure
    3. | File
    4. | Cost
    5. | Trace
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val all_fields : t list
    \ No newline at end of file +CostIssuesTestField (infer.IBase.CostIssuesTestField)

    Module IBase.CostIssuesTestField

    type t =
    1. | IsOnUIThread
    2. | Procedure
    3. | File
    4. | Cost
    5. | Trace
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val all_fields : t list
    diff --git a/website/static/odoc/next/infer/IBase/CostKind/index.html b/website/static/odoc/next/infer/IBase/CostKind/index.html index 028d4b9914c..1e595b0cf1d 100644 --- a/website/static/odoc/next/infer/IBase/CostKind/index.html +++ b/website/static/odoc/next/infer/IBase/CostKind/index.html @@ -1,5 +1,5 @@ -CostKind (infer.IBase.CostKind)

    Module IBase.CostKind

    type t =
    1. | OperationCost
    2. | AllocationCost
    include Ppx_compare_lib.Comparable.S with type t := t
    type kind_spec = {
    1. kind : t;
    2. top_and_unreachable : bool;
    3. expensive : bool;
    }
    val compare : t -> t -> int
    val pp : Stdlib.Format.formatter -> t -> unit
    val to_complexity_string : t -> string
    val to_issue_string : t -> string
    val to_json_cost_info : +CostKind (infer.IBase.CostKind)

    Module IBase.CostKind

    type t =
    1. | OperationCost
    2. | AllocationCost
    include Ppx_compare_lib.Comparable.S with type t := t
    type kind_spec = {
    1. kind : t;
    2. top_and_unreachable : bool;
    3. expensive : bool;
    }
    val compare : t -> t -> int
    val pp : Stdlib.Format.formatter -> t -> unit
    val to_complexity_string : t -> string
    val to_issue_string : t -> string
    val enabled_cost_kinds : kind_spec list
    \ No newline at end of file + ATDGenerated.Jsoncost_t.info
    val enabled_cost_kinds : kind_spec list
    diff --git a/website/static/odoc/next/infer/IBase/DB/Results_dir/index.html b/website/static/odoc/next/infer/IBase/DB/Results_dir/index.html index 8cadd72d744..f57b857e2b1 100644 --- a/website/static/odoc/next/infer/IBase/DB/Results_dir/index.html +++ b/website/static/odoc/next/infer/IBase/DB/Results_dir/index.html @@ -1,2 +1,2 @@ -Results_dir (infer.IBase.DB.Results_dir)

    Module DB.Results_dir

    type path = string list

    path expressed as a list of strings

    type path_kind =
    1. | Abs_root
      (*

      absolute path implicitly rooted at the root of the results dir

      *)
    2. | Abs_source_dir of SourceFile.t
      (*

      absolute path implicitly rooted at the source directory for the file

      *)
    3. | Rel
      (*

      relative path

      *)

    kind of path: specifies how to interpret a path

    val path_to_filename : path_kind -> path -> filename

    convert a path to a filename

    val init : ?debug:bool -> SourceFile.t -> unit

    Initialize the results directory

    val create_file : path_kind -> path -> IStdlib.IStd.Unix.File_descr.t

    create a file at the given path, creating any missing directories

    \ No newline at end of file +Results_dir (infer.IBase.DB.Results_dir)

    Module DB.Results_dir

    type path = string list

    path expressed as a list of strings

    type path_kind =
    1. | Abs_root
      (*

      absolute path implicitly rooted at the root of the results dir

      *)
    2. | Abs_source_dir of SourceFile.t
      (*

      absolute path implicitly rooted at the source directory for the file

      *)
    3. | Rel
      (*

      relative path

      *)

    kind of path: specifies how to interpret a path

    val path_to_filename : path_kind -> path -> filename

    convert a path to a filename

    val init : ?debug:bool -> SourceFile.t -> unit

    Initialize the results directory

    val create_file : path_kind -> path -> IStdlib.IStd.Unix.File_descr.t

    create a file at the given path, creating any missing directories

    diff --git a/website/static/odoc/next/infer/IBase/DB/index.html b/website/static/odoc/next/infer/IBase/DB/index.html index a0f668bb003..433e38424cf 100644 --- a/website/static/odoc/next/infer/IBase/DB/index.html +++ b/website/static/odoc/next/infer/IBase/DB/index.html @@ -1,2 +1,2 @@ -DB (infer.IBase.DB)

    Module IBase.DB

    Database of analysis results

    Filename

    type filename

    generic file name

    val compare_filename : filename -> filename -> int
    val filename_from_string : string -> filename
    val filename_to_string : filename -> string
    val filename_add_suffix : filename -> string -> filename
    val file_exists : filename -> bool
    val file_modified_time : ?symlink:bool -> filename -> float

    Return the time when a file was last modified. The file must exist.

    Results Directory

    module Results_dir : sig ... end
    val append_crc_cutoff : ?key:string -> string -> string

    Append a crc to the string, using string_crc_hex32. Cut the string if it exceeds the cutoff limit. Use an optional key to compute the crc.

    val source_file_encoding : SourceFile.t -> string

    string encoding of a source file (including path) as a single filename

    Source Dirs

    type source_dir

    source directory: the directory inside the results dir corresponding to a source file

    val compare_source_dir : source_dir -> source_dir -> int
    val source_dir_get_internal_file : source_dir -> string -> filename

    get the path to an internal file with the given extention (.tenv, ...)

    val source_dir_from_source_file : SourceFile.t -> source_dir

    get the source directory corresponding to a source file

    \ No newline at end of file +DB (infer.IBase.DB)

    Module IBase.DB

    Database of analysis results

    Filename

    type filename

    generic file name

    val compare_filename : filename -> filename -> int
    val filename_from_string : string -> filename
    val filename_to_string : filename -> string
    val filename_add_suffix : filename -> string -> filename
    val file_exists : filename -> bool
    val file_modified_time : ?symlink:bool -> filename -> float

    Return the time when a file was last modified. The file must exist.

    Results Directory

    module Results_dir : sig ... end
    val append_crc_cutoff : ?key:string -> string -> string

    Append a crc to the string, using string_crc_hex32. Cut the string if it exceeds the cutoff limit. Use an optional key to compute the crc.

    val source_file_encoding : SourceFile.t -> string

    string encoding of a source file (including path) as a single filename

    Source Dirs

    type source_dir

    source directory: the directory inside the results dir corresponding to a source file

    val compare_source_dir : source_dir -> source_dir -> int
    val source_dir_get_internal_file : source_dir -> string -> filename

    get the path to an internal file with the given extention (.tenv, ...)

    val source_dir_from_source_file : SourceFile.t -> source_dir

    get the source directory corresponding to a source file

    diff --git a/website/static/odoc/next/infer/IBase/DBWriter/index.html b/website/static/odoc/next/infer/IBase/DBWriter/index.html index 097345eee98..0d2533940e6 100644 --- a/website/static/odoc/next/infer/IBase/DBWriter/index.html +++ b/website/static/odoc/next/infer/IBase/DBWriter/index.html @@ -1,26 +1,26 @@ -DBWriter (infer.IBase.DBWriter)

    Module IBase.DBWriter

    val override_use_daemon : bool -> unit

    override the default of whether the process should use DB daemon true or not false

    val add_source_file : - source_file:Sqlite3.Data.t -> - tenv:Sqlite3.Data.t -> - integer_type_widths:Sqlite3.Data.t -> - proc_names:Sqlite3.Data.t -> - unit
    val canonicalize : unit -> unit

    put the **capture** database on disk in deterministic form

    val delete_all_specs : unit -> unit
    val delete_attributes : proc_uid:string -> unit
    val delete_issue_logs : source_file:Sqlite3.Data.t -> unit
    val delete_specs : proc_uids:string list -> unit
    val mark_all_source_files_stale : unit -> unit
    val merge_captures : root:string -> infer_deps_file:string -> unit
    val merge_summaries : infer_outs:string list -> unit
    val replace_attributes : - proc_uid:string -> - proc_attributes:Sqlite3.Data.t -> - cfg:Sqlite3.Data.t -> - callees:Sqlite3.Data.t -> - analysis:bool -> +DBWriter (infer.IBase.DBWriter)

    Module IBase.DBWriter

    val override_use_daemon : bool -> unit

    override the default of whether the process should use DB daemon true or not false

    val add_source_file : + source_file:Sqlite3.Data.t -> + tenv:Sqlite3.Data.t -> + integer_type_widths:Sqlite3.Data.t -> + proc_names:Sqlite3.Data.t -> + unit
    val canonicalize : unit -> unit

    put the **capture** database on disk in deterministic form

    val delete_all_specs : unit -> unit
    val delete_attributes : proc_uid:string -> unit
    val delete_issue_logs : source_file:Sqlite3.Data.t -> unit
    val delete_specs : proc_uids:string list -> unit
    val mark_all_source_files_stale : unit -> unit
    val merge_captures : root:string -> infer_deps_file:string -> unit
    val merge_summaries : infer_outs:string list -> unit
    val replace_attributes : + proc_uid:string -> + proc_attributes:Sqlite3.Data.t -> + cfg:Sqlite3.Data.t -> + callees:Sqlite3.Data.t -> + analysis:bool -> unit
    val shrink_analysis_db : unit -> unit

    Delete all analysis summaries (by overwriting with NULL) and VACUUMing.

    val start : unit -> unit
    val store_issue_log : - checker:string -> - source_file:Sqlite3.Data.t -> - issue_log:Sqlite3.Data.t -> + checker:string -> + source_file:Sqlite3.Data.t -> + issue_log:Sqlite3.Data.t -> unit
    val store_spec : - proc_uid:string -> - proc_name:Sqlite3.Data.t -> - merge_pulse_payload: - (old_pulse_payload:Sqlite3.Data.t option -> Sqlite3.Data.t list) -> - merge_report_summary: - (old_report_summary:Sqlite3.Data.t option -> Sqlite3.Data.t) -> - merge_summary_metadata: - (old_summary_metadata:Sqlite3.Data.t option -> Sqlite3.Data.t) -> - unit
    \ No newline at end of file + proc_uid:string -> + proc_name:Sqlite3.Data.t -> + merge_pulse_payload: + (old_pulse_payload:Sqlite3.Data.t option -> Sqlite3.Data.t list) -> + merge_report_summary: + (old_report_summary:Sqlite3.Data.t option -> Sqlite3.Data.t) -> + merge_summary_metadata: + (old_summary_metadata:Sqlite3.Data.t option -> Sqlite3.Data.t) -> + unit
    diff --git a/website/static/odoc/next/infer/IBase/Database/index.html b/website/static/odoc/next/infer/IBase/Database/index.html index c24683a3af9..28d2affa785 100644 --- a/website/static/odoc/next/infer/IBase/Database/index.html +++ b/website/static/odoc/next/infer/IBase/Database/index.html @@ -1,8 +1,8 @@ -Database (infer.IBase.Database)

    Module IBase.Database

    type id =
    1. | CaptureDatabase
      (*

      the capture databse *

      *)
    2. | AnalysisDatabase
      (*

      the analysis/summaries database *

      *)
    type location =
    1. | Primary
      (*

      primary location under Config.results_dir

      *)
    2. | Secondary of string
      (*

      secondary location in the specified path

      *)
    type analysis_table =
    1. | Specs
    2. | BiabductionModelsSpecs
    val string_of_analysis_table : analysis_table -> string
    val schema_hum : string

    some human-readable string describing the tables

    val create_tables : ?prefix:string -> Sqlite3.db -> id -> unit
    val get_database : id -> Sqlite3.db

    You should always use this function to access the database, as the connection to it may change during the execution (see new_database_connection).

    val create_db : location -> id -> unit

    create the database file and initialize all the necessary tables

    val new_database_connection : location -> id -> unit
    val new_database_connections : location -> unit

    Closes the previous connections to the databases (if any), and opens new ones. Needed after calls to fork(2).

    val ensure_database_connection : location -> id -> unit

    open a new connection to the specified database if there isn't one already

    val db_close : unit -> unit

    close the current connection to the database

    type registered_stmt
    val register_statement : +Database (infer.IBase.Database)

    Module IBase.Database

    type id =
    1. | CaptureDatabase
      (*

      the capture databse *

      *)
    2. | AnalysisDatabase
      (*

      the analysis/summaries database *

      *)
    type location =
    1. | Primary
      (*

      primary location under Config.results_dir

      *)
    2. | Secondary of string
      (*

      secondary location in the specified path

      *)
    type analysis_table =
    1. | Specs
    2. | BiabductionModelsSpecs
    val string_of_analysis_table : analysis_table -> string
    val schema_hum : string

    some human-readable string describing the tables

    val create_tables : ?prefix:string -> Sqlite3.db -> id -> unit
    val get_database : id -> Sqlite3.db

    You should always use this function to access the database, as the connection to it may change during the execution (see new_database_connection).

    val create_db : location -> id -> unit

    create the database file and initialize all the necessary tables

    val new_database_connection : location -> id -> unit
    val new_database_connections : location -> unit

    Closes the previous connections to the databases (if any), and opens new ones. Needed after calls to fork(2).

    val ensure_database_connection : location -> id -> unit

    open a new connection to the specified database if there isn't one already

    val db_close : unit -> unit

    close the current connection to the database

    type registered_stmt
    val register_statement : id -> ('a, unit, string, registered_stmt) Base.format4 -> 'a

    Return a function unit -> Sqlite3.stmt that can be called (once the DB has been initialized) to get the prepared statement corresponding to the current DB connection. Use this to prepare statements only once per DB connection.

    In particular, clients of this need not worry about calling Sqlite3.finalize on the returned statement, or about generating new statements when the connection to the DB changes: this is all handled internally.

    val with_registered_statement : registered_stmt -> - f:(Sqlite3.db -> Sqlite3.stmt -> 'a) -> - 'a
    \ No newline at end of file + f:(Sqlite3.db -> Sqlite3.stmt -> 'a) -> + 'a
    diff --git a/website/static/odoc/next/infer/IBase/Die/index.html b/website/static/odoc/next/infer/IBase/Die/index.html index 5deaec9016d..7c7fbfe1c72 100644 --- a/website/static/odoc/next/infer/IBase/Die/index.html +++ b/website/static/odoc/next/infer/IBase/Die/index.html @@ -1,9 +1,9 @@ -Die (infer.IBase.Die)

    Module IBase.Die

    exception InferExternalError of string
    exception InferInternalError of string
    exception InferUserError of string
    exception InferExit of int

    This can be used to avoid scattering exit invocations all over the codebase

    type error =
    1. | ExternalError
    2. | InternalError
    3. | UserError

    kind of error for die, with similar semantics as Logging.{external,internal,user}_error

    val exit : int -> 'a
    val exit_code_of_exception : IStdlib.IStd.Exn.t -> int
    val set_log_uncaught_exception_callback : (exn -> exitcode:int -> unit) -> unit
    val log_uncaught_exception : exn -> exitcode:int -> unit
    val die : +Die (infer.IBase.Die)

    Module IBase.Die

    exception InferExternalError of string
    exception InferInternalError of string
    exception InferUserError of string
    exception InferExit of int

    This can be used to avoid scattering exit invocations all over the codebase

    type error =
    1. | ExternalError
    2. | InternalError
    3. | UserError

    kind of error for die, with similar semantics as Logging.{external,internal,user}_error

    val exit : int -> 'a
    val exit_code_of_exception : IStdlib.IStd.Exn.t -> int
    val set_log_uncaught_exception_callback : (exn -> exitcode:int -> unit) -> unit
    val log_uncaught_exception : exn -> exitcode:int -> unit
    val die : error -> ('a, Stdlib.Format.formatter, unit, _) IStdlib.IStd.format4 -> 'a

    Raise the corresponding exception.

    val raise_error : - ?backtrace:IStdlib.IStd.Caml.Printexc.raw_backtrace -> + ?backtrace:IStdlib.IStd.Caml.Printexc.raw_backtrace -> error -> - msg:string -> - 'a
    type style =
    1. | Error
    2. | Fatal
    3. | Normal
    4. | Warning
    val term_styles_of_style : style -> IStdlib.IStd.ANSITerminal.style list
    \ No newline at end of file + msg:string -> + 'a
    type style =
    1. | Error
    2. | Fatal
    3. | Normal
    4. | Warning
    val term_styles_of_style : style -> IStdlib.IStd.ANSITerminal.style list
    diff --git a/website/static/odoc/next/infer/IBase/Epilogues/index.html b/website/static/odoc/next/infer/IBase/Epilogues/index.html index b3e05928a7d..a0d176fd5d0 100644 --- a/website/static/odoc/next/infer/IBase/Epilogues/index.html +++ b/website/static/odoc/next/infer/IBase/Epilogues/index.html @@ -1,2 +1,2 @@ -Epilogues (infer.IBase.Epilogues)

    Module IBase.Epilogues

    val register : f:(unit -> unit) -> description:string -> unit

    Register a function to run when the program exits or is interrupted. Registered functions are run in the reverse order in which they were registered.

    val register_late : f:(unit -> unit) -> description:string -> unit

    Register a function to run when the program exits or is interrupted. Registered functions are run in the reverse order in which they were registered, but *after* the ones registered with register.

    val run : unit -> unit
    val reset : unit -> unit
    \ No newline at end of file +Epilogues (infer.IBase.Epilogues)

    Module IBase.Epilogues

    val register : f:(unit -> unit) -> description:string -> unit

    Register a function to run when the program exits or is interrupted. Registered functions are run in the reverse order in which they were registered.

    val register_late : f:(unit -> unit) -> description:string -> unit

    Register a function to run when the program exits or is interrupted. Registered functions are run in the reverse order in which they were registered, but *after* the ones registered with register.

    val run : unit -> unit
    val reset : unit -> unit
    diff --git a/website/static/odoc/next/infer/IBase/Exception/index.html b/website/static/odoc/next/infer/IBase/Exception/index.html index 77d943151a6..9465b15cd2a 100644 --- a/website/static/odoc/next/infer/IBase/Exception/index.html +++ b/website/static/odoc/next/infer/IBase/Exception/index.html @@ -1,2 +1,2 @@ -Exception (infer.IBase.Exception)

    Module IBase.Exception

    The restart scheduler and biabduction use exceptions for control flow (restarts/timeouts respectively). Functions here abstract away the semantics of when an exception can be ignored.

    type failure_kind =
    1. | FKtimeout
      (*

      max time exceeded

      *)
    2. | FKsymops_timeout of int
      (*

      max symop's exceeded

      *)
    3. | FKcrash of string
      (*

      uncaught exception or failed assertion

      *)

    types of biabduction failure due to timeouts

    val pp_failure_kind : Stdlib.Format.formatter -> failure_kind -> unit
    exception Analysis_failure_exe of failure_kind

    Timeout exception

    val exn_not_failure : exn -> bool

    check that the exception is not a biabduction timeout or restart scheduler exception

    val try_finally : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

    try_finally ~f ~finally executes f and then finally even if f raises an exception. Biabduction timeouts and restart scheduler exceptions are handled as necessary.

    \ No newline at end of file +Exception (infer.IBase.Exception)

    Module IBase.Exception

    The restart scheduler and biabduction use exceptions for control flow (restarts/timeouts respectively). Functions here abstract away the semantics of when an exception can be ignored.

    type failure_kind =
    1. | FKtimeout
      (*

      max time exceeded

      *)
    2. | FKsymops_timeout of int
      (*

      max symop's exceeded

      *)
    3. | FKcrash of string
      (*

      uncaught exception or failed assertion

      *)

    types of biabduction failure due to timeouts

    val pp_failure_kind : Stdlib.Format.formatter -> failure_kind -> unit
    exception Analysis_failure_exe of failure_kind

    Timeout exception

    val exn_not_failure : exn -> bool

    check that the exception is not a biabduction timeout or restart scheduler exception

    val try_finally : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

    try_finally ~f ~finally executes f and then finally even if f raises an exception. Biabduction timeouts and restart scheduler exceptions are handled as necessary.

    diff --git a/website/static/odoc/next/infer/IBase/ExecutionDuration/index.html b/website/static/odoc/next/infer/IBase/ExecutionDuration/index.html index c8b9cfa6515..b570b7c09ae 100644 --- a/website/static/odoc/next/infer/IBase/ExecutionDuration/index.html +++ b/website/static/odoc/next/infer/IBase/ExecutionDuration/index.html @@ -1,2 +1,2 @@ -ExecutionDuration (infer.IBase.ExecutionDuration)

    Module IBase.ExecutionDuration

    type t
    type counter
    type 'a evaluation_result = {
    1. result : 'a;
    2. execution_duration : t;
    }
    val zero : t
    val counter : unit -> counter
    val since : counter -> t
    val add_duration_since : t -> counter -> t
    val add : t -> t -> t
    val wall_time : t -> Mtime.span
    val total_useful_s : t -> float

    seconds of user plus system time

    val timed_evaluate : f:(unit -> 'a) -> 'a evaluation_result
    val log : prefix:string -> Logging.debug_kind -> t -> unit

    log to debug logs and to Scuba

    val to_scuba_entries : prefix:string -> t -> LogEntry.t list
    \ No newline at end of file +ExecutionDuration (infer.IBase.ExecutionDuration)

    Module IBase.ExecutionDuration

    type t
    type counter
    type 'a evaluation_result = {
    1. result : 'a;
    2. execution_duration : t;
    }
    val zero : t
    val counter : unit -> counter
    val since : counter -> t
    val add_duration_since : t -> counter -> t
    val add : t -> t -> t
    val wall_time : t -> Mtime.span
    val total_useful_s : t -> float

    seconds of user plus system time

    val timed_evaluate : f:(unit -> 'a) -> 'a evaluation_result
    val log : prefix:string -> Logging.debug_kind -> t -> unit

    log to debug logs and to Scuba

    val to_scuba_entries : prefix:string -> t -> LogEntry.t list
    diff --git a/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html b/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html index 32839760efc..73c60d67fb3 100644 --- a/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html +++ b/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html @@ -1,2 +1,2 @@ -VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.IBase.FileDiff.UnixDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module UnixDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type t =
    1. | Unchanged
    2. | New
    3. | Old
    val equal : t -> t -> bool
    val process_raw_directives : string -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.IBase.FileDiff.UnixDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module UnixDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type t =
    1. | Unchanged
    2. | New
    3. | Old
    val equal : t -> t -> bool
    val process_raw_directives : string -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/index.html b/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/index.html index 489d7211606..b64dbf095f5 100644 --- a/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/index.html +++ b/website/static/odoc/next/infer/IBase/FileDiff/UnixDiff/index.html @@ -1,2 +1,2 @@ -UnixDiff (infer.IBase.FileDiff.UnixDiff)

    Module FileDiff.UnixDiff

    \ No newline at end of file +UnixDiff (infer.IBase.FileDiff.UnixDiff)

    Module FileDiff.UnixDiff

    diff --git a/website/static/odoc/next/infer/IBase/FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html b/website/static/odoc/next/infer/IBase/FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html index 86dc409c25e..73b067265e3 100644 --- a/website/static/odoc/next/infer/IBase/FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html +++ b/website/static/odoc/next/infer/IBase/FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html @@ -1,4 +1,4 @@ -VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.IBase.FileDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module FileDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    val parse_directives : +VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.IBase.FileDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module FileDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    val parse_directives : UnixDiff.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY.t list -> - int list
    \ No newline at end of file + int list
    diff --git a/website/static/odoc/next/infer/IBase/FileDiff/index.html b/website/static/odoc/next/infer/IBase/FileDiff/index.html index a013a32ab79..3c755cc5e3f 100644 --- a/website/static/odoc/next/infer/IBase/FileDiff/index.html +++ b/website/static/odoc/next/infer/IBase/FileDiff/index.html @@ -1,2 +1,2 @@ -FileDiff (infer.IBase.FileDiff)

    Module IBase.FileDiff

    module UnixDiff : sig ... end
    val parse_unix_diff : string -> int list

    Given a difference between two files, return the relevant lines in the new file; a line is relevant when a change took place in it, or nearby. To generate a valid input for this parser, use unix-diff command with the following formatter arguments: diff --unchanged-line-format="U" \--old-line-format="O" --new-line-format="N" File1 File2

    \ No newline at end of file +FileDiff (infer.IBase.FileDiff)

    Module IBase.FileDiff

    module UnixDiff : sig ... end
    val parse_unix_diff : string -> int list

    Given a difference between two files, return the relevant lines in the new file; a line is relevant when a change took place in it, or nearby. To generate a valid input for this parser, use unix-diff command with the following formatter arguments: diff --unchanged-line-format="U" \--old-line-format="O" --new-line-format="N" File1 File2

    diff --git a/website/static/odoc/next/infer/IBase/ForkUtils/index.html b/website/static/odoc/next/infer/IBase/ForkUtils/index.html index 4676944e796..0e496e1c737 100644 --- a/website/static/odoc/next/infer/IBase/ForkUtils/index.html +++ b/website/static/odoc/next/infer/IBase/ForkUtils/index.html @@ -1,2 +1,2 @@ -ForkUtils (infer.IBase.ForkUtils)

    Module IBase.ForkUtils

    val protect : f:('a -> 'b) -> 'a -> 'b

    does the bookkeeping necessary to safely execute an infer function f after a call to fork(2)

    \ No newline at end of file +ForkUtils (infer.IBase.ForkUtils)

    Module IBase.ForkUtils

    val protect : f:('a -> 'b) -> 'a -> 'b

    does the bookkeeping necessary to safely execute an infer function f after a call to fork(2)

    diff --git a/website/static/odoc/next/infer/IBase/IssueType/Map/index.html b/website/static/odoc/next/infer/IBase/IssueType/Map/index.html index 6219fe02860..d85915ff8b1 100644 --- a/website/static/odoc/next/infer/IBase/IssueType/Map/index.html +++ b/website/static/odoc/next/infer/IBase/IssueType/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IBase.IssueType.Map)

    Module IssueType.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IBase.IssueType.Map)

    Module IssueType.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IBase/IssueType/index.html b/website/static/odoc/next/infer/IBase/IssueType/index.html index cf7009947f7..e431a964355 100644 --- a/website/static/odoc/next/infer/IBase/IssueType/index.html +++ b/website/static/odoc/next/infer/IBase/IssueType/index.html @@ -1,9 +1,9 @@ -IssueType (infer.IBase.IssueType)

    Module IBase.IssueType

    type visibility =
    1. | User
      (*

      always add to error log

      *)
    2. | Developer
      (*

      only add to error log in some debug modes

      *)
    3. | Silent
      (*

      never add to error log

      *)

    visibility of the issue type

    val compare_visibility : visibility -> visibility -> int
    val equal_visibility : visibility -> visibility -> bool
    val string_of_visibility : visibility -> string
    type severity =
    1. | Info
    2. | Advice
    3. | Warning
    4. | Error

    severity of the report

    val compare_severity : severity -> severity -> int
    val equal_severity : severity -> severity -> bool
    val all_of_severity : severity list
    type category =
    1. | Data_corruption
    2. | Data_race
    3. | Deadlock
    4. | Incorrect_program_semantics
    5. | Memory_error
    6. | Memory_leak
    7. | No_category
    8. | Null_pointer_dereference
    9. | Perf_regression
    10. | Privacy_violation
    11. | Resource_leak
    12. | Runtime_exception
    13. | Ungated_code
    val compare_category : category -> category -> int
    val equal_category : category -> category -> bool
    val all_of_category : category list
    val string_of_severity : severity -> string
    val string_of_category : category -> string
    type t = private {
    1. unique_id : string;
    2. checker : Checker.t;
    3. category : category;
    4. visibility : visibility;
    5. user_documentation : string option;
    6. mutable default_severity : severity;
      (*

      used for documentation but can be overriden at report time

      *)
    7. mutable enabled : bool;
    8. mutable hum : string;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val all_issues : unit -> t list

    all the issues declared so far

    val pp : Stdlib.Format.formatter -> t -> unit

    pretty print a localised string

    val find_from_string : id:string -> t option

    return the issue type if it was previously registered

    val register_dynamic : - ?enabled:bool -> - ?hum:string -> - id:string -> - ?user_documentation:string -> +IssueType (infer.IBase.IssueType)

    Module IBase.IssueType

    type visibility =
    1. | User
      (*

      always add to error log

      *)
    2. | Developer
      (*

      only add to error log in some debug modes

      *)
    3. | Silent
      (*

      never add to error log

      *)

    visibility of the issue type

    val compare_visibility : visibility -> visibility -> int
    val equal_visibility : visibility -> visibility -> bool
    val string_of_visibility : visibility -> string
    type severity =
    1. | Info
    2. | Advice
    3. | Warning
    4. | Error

    severity of the report

    val compare_severity : severity -> severity -> int
    val equal_severity : severity -> severity -> bool
    val all_of_severity : severity list
    type category =
    1. | Data_corruption
    2. | Data_race
    3. | Deadlock
    4. | Incorrect_program_semantics
    5. | Memory_error
    6. | Memory_leak
    7. | No_category
    8. | Null_pointer_dereference
    9. | Perf_regression
    10. | Privacy_violation
    11. | Resource_leak
    12. | Runtime_exception
    13. | Ungated_code
    val compare_category : category -> category -> int
    val equal_category : category -> category -> bool
    val all_of_category : category list
    val string_of_severity : severity -> string
    val string_of_category : category -> string
    type t = private {
    1. unique_id : string;
    2. checker : Checker.t;
    3. category : category;
    4. visibility : visibility;
    5. user_documentation : string option;
    6. mutable default_severity : severity;
      (*

      used for documentation but can be overriden at report time

      *)
    7. mutable enabled : bool;
    8. mutable hum : string;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val all_issues : unit -> t list

    all the issues declared so far

    val pp : Stdlib.Format.formatter -> t -> unit

    pretty print a localised string

    val find_from_string : id:string -> t option

    return the issue type if it was previously registered

    val register_dynamic : + ?enabled:bool -> + ?hum:string -> + id:string -> + ?user_documentation:string -> severity -> Checker.t -> - t

    Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum` but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type.

    val checker_can_report : Checker.t -> t -> bool

    Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

    val set_enabled : t -> bool -> unit
    val abduction_case_not_implemented : t
    val arbitrary_code_execution_under_lock : t
    val array_of_pointsto : t
    val array_out_of_bounds_l1 : t
    val array_out_of_bounds_l2 : t
    val array_out_of_bounds_l3 : t
    val assert_failure : t
    val bad_footprint : t
    val bad_arg : latent:bool -> t
    val bad_key : latent:bool -> t
    val bad_map : latent:bool -> t
    val bad_record : latent:bool -> t
    val bad_return : latent:bool -> t
    val biabduction_analysis_stops : t
    val biabduction_retain_cycle : t
    val block_parameter_not_null_checked : t
    val buffer_overrun_l1 : t
    val buffer_overrun_l2 : t
    val buffer_overrun_l3 : t
    val buffer_overrun_l4 : t
    val buffer_overrun_l5 : t
    val buffer_overrun_s2 : t
    val buffer_overrun_u5 : t
    val cannot_star : t
    val captured_strong_self : t
    val checkers_allocates_memory : t

    Warning name when a performance critical method directly or indirectly calls a method allocating memory

    val checkers_annotation_reachability_error : t
    val checkers_calls_expensive_method : t

    Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

    val checkers_expensive_overrides_unexpensive : t

    Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

    val checkers_fragment_retain_view : t
    val checkers_printf_args : t
    val class_cast_exception : t
    val complexity_increase : kind:CostKind.t -> is_on_ui_thread:bool -> t
    val condition_always_false : t
    val condition_always_true : t
    val config_impact_analysis : t
    val config_impact_analysis_strict : t
    val pulse_config_usage : t
    val pulse_const_refable : t
    val constant_address_dereference : latent:bool -> t
    val cxx_ref_captured_in_block : t
    val create_intent_from_uri : t
    val cross_site_scripting : t
    val dangling_pointer_dereference : t
    val dangling_pointer_dereference_maybe : t
    val data_flow_to_sink : t
    val datalog_fact : t
    val dead_store : t
    val deadlock : t
    val divide_by_zero : t
    val do_not_report : t

    an issue type that should never be reported

    val empty_vector_access : t
    val exposed_insecure_intent_handling : t
    val expensive_cost_call : kind:CostKind.t -> t
    val failure_exe : t
    val guardedby_violation : t
    val impure_function : t
    val inefficient_keyset_iterator : t
    val inferbo_alloc_is_big : t
    val inferbo_alloc_is_negative : t
    val inferbo_alloc_is_zero : t
    val inferbo_alloc_may_be_big : t
    val inferbo_alloc_may_be_negative : t
    val infinite_cost_call : kind:CostKind.t -> t
    val inherently_dangerous_function : t
    val insecure_intent_handling : t
    val integer_overflow_l1 : t
    val integer_overflow_l2 : t
    val integer_overflow_l5 : t
    val integer_overflow_u5 : t
    val interface_not_thread_safe : t
    val internal_error : t
    val invalid_sil : t
    val invariant_call : t
    val ipc_on_ui_thread : t
    val javascript_injection : t
    val lab_resource_leak : t
    val leak_after_array_abstraction : t
    val leak_in_footprint : t
    val leak_unknown_origin : t
    val lockless_violation : t
    val lock_consistency_violation : t
    val logging_private_data : t
    val expensive_loop_invariant_call : t
    val memory_leak : t
    val missing_fld : t
    val missing_required_prop : t
    val mixed_self_weakself : t
    val modifies_immutable : t
    val multiple_weakself : t
    val nil_block_call : latent:bool -> t
    val nil_insertion_into_collection : latent:bool -> t
    val nil_messaging_to_non_pod : latent:bool -> t
    val no_match_of_rhs : latent:bool -> t
    val no_matching_case_clause : latent:bool -> t
    val no_matching_function_clause : latent:bool -> t
    val no_true_branch_in_if : latent:bool -> t
    val no_matching_branch_in_try : latent:bool -> t
    val null_argument : latent:bool -> t
    val null_dereference : t
    val nullptr_dereference : latent:bool -> t
    val nullptr_dereference_in_nullsafe_class : latent:bool -> t
    val optional_empty_access : latent:bool -> t
    val precondition_not_found : t
    val precondition_not_met : t
    val premature_nil_termination : t
    val pulse_dict_missing_key : t
    val pulse_transitive_access : t
    val pulse_memory_leak_c : t
    val pulse_memory_leak_cpp : t
    val pulse_resource_leak : t
    val pulse_unawaited_awaitable : t
    val pulse_uninitialized_const : t
    val pure_function : t
    val quandary_taint_error : t
    val readonly_shared_ptr_param : t
    val regex_op_on_ui_thread : t
    val resource_leak : t
    val retain_cycle : t
    val scope_leakage : t
    val sensitive_data_flow : t
    val skip_function : t
    val shell_injection : t
    val shell_injection_risk : t
    val sql_injection : t
    val sql_injection_risk : t
    val stack_variable_address_escape : t
    val starvation : t
    val static_initialization_order_fiasco : t
    val strict_mode_violation : t
    val strong_self_not_checked : t
    val symexec_memory_error : t
    val taint_error : t
    val thread_safety_violation : t
    val topl_error : latent:bool -> t
    val uninitialized_value_pulse : t
    val unnecessary_copy_pulse : t
    val unnecessary_copy_assignment_pulse : t
    val unnecessary_copy_assignment_const_pulse : t
    val unnecessary_copy_assignment_movable_pulse : t
    val unnecessary_copy_intermediate_pulse : t
    val unnecessary_copy_intermediate_const_pulse : t
    val unnecessary_copy_movable_pulse : t
    val unnecessary_copy_optional_pulse : t
    val unnecessary_copy_optional_const_pulse : t
    val unnecessary_copy_return_pulse : t
    val unreachable_code_after : t
    val use_after_delete : latent:bool -> t
    val use_after_free : latent:bool -> t
    val use_after_lifetime : latent:bool -> t
    val untrusted_buffer_access : t
    val untrusted_deserialization : t
    val untrusted_deserialization_risk : t
    val untrusted_file : t
    val untrusted_file_risk : t
    val untrusted_heap_allocation : t
    val untrusted_intent_creation : t
    val untrusted_url_risk : t
    val untrusted_environment_change_risk : t
    val untrusted_variable_length_array : t
    val user_controlled_sql_risk : t
    val vector_invalidation : latent:bool -> t
    val pulse_reference_stability : t
    val weak_self_in_noescape_block : t
    val wrong_argument_number : t
    val unreachable_cost_call : kind:CostKind.t -> t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    \ No newline at end of file + t

    Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum` but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type.

    val checker_can_report : Checker.t -> t -> bool

    Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

    val set_enabled : t -> bool -> unit
    val abduction_case_not_implemented : t
    val arbitrary_code_execution_under_lock : t
    val array_of_pointsto : t
    val array_out_of_bounds_l1 : t
    val array_out_of_bounds_l2 : t
    val array_out_of_bounds_l3 : t
    val assert_failure : t
    val bad_footprint : t
    val bad_arg : latent:bool -> t
    val bad_key : latent:bool -> t
    val bad_map : latent:bool -> t
    val bad_record : latent:bool -> t
    val bad_return : latent:bool -> t
    val biabduction_analysis_stops : t
    val biabduction_retain_cycle : t
    val block_parameter_not_null_checked : t
    val buffer_overrun_l1 : t
    val buffer_overrun_l2 : t
    val buffer_overrun_l3 : t
    val buffer_overrun_l4 : t
    val buffer_overrun_l5 : t
    val buffer_overrun_s2 : t
    val buffer_overrun_u5 : t
    val cannot_star : t
    val captured_strong_self : t
    val checkers_allocates_memory : t

    Warning name when a performance critical method directly or indirectly calls a method allocating memory

    val checkers_annotation_reachability_error : t
    val checkers_calls_expensive_method : t

    Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

    val checkers_expensive_overrides_unexpensive : t

    Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

    val checkers_fragment_retain_view : t
    val checkers_printf_args : t
    val class_cast_exception : t
    val complexity_increase : kind:CostKind.t -> is_on_ui_thread:bool -> t
    val condition_always_false : t
    val condition_always_true : t
    val config_impact_analysis : t
    val config_impact_analysis_strict : t
    val pulse_config_usage : t
    val pulse_const_refable : t
    val constant_address_dereference : latent:bool -> t
    val cxx_ref_captured_in_block : t
    val create_intent_from_uri : t
    val cross_site_scripting : t
    val dangling_pointer_dereference : t
    val dangling_pointer_dereference_maybe : t
    val data_flow_to_sink : t
    val datalog_fact : t
    val dead_store : t
    val deadlock : t
    val divide_by_zero : t
    val do_not_report : t

    an issue type that should never be reported

    val empty_vector_access : t
    val exposed_insecure_intent_handling : t
    val expensive_cost_call : kind:CostKind.t -> t
    val failure_exe : t
    val guardedby_violation : t
    val impure_function : t
    val inefficient_keyset_iterator : t
    val inferbo_alloc_is_big : t
    val inferbo_alloc_is_negative : t
    val inferbo_alloc_is_zero : t
    val inferbo_alloc_may_be_big : t
    val inferbo_alloc_may_be_negative : t
    val infinite_cost_call : kind:CostKind.t -> t
    val inherently_dangerous_function : t
    val insecure_intent_handling : t
    val integer_overflow_l1 : t
    val integer_overflow_l2 : t
    val integer_overflow_l5 : t
    val integer_overflow_u5 : t
    val interface_not_thread_safe : t
    val internal_error : t
    val invalid_sil : t
    val invariant_call : t
    val ipc_on_ui_thread : t
    val javascript_injection : t
    val lab_resource_leak : t
    val leak_after_array_abstraction : t
    val leak_in_footprint : t
    val leak_unknown_origin : t
    val lockless_violation : t
    val lock_consistency_violation : t
    val logging_private_data : t
    val expensive_loop_invariant_call : t
    val memory_leak : t
    val missing_fld : t
    val missing_required_prop : t
    val mixed_self_weakself : t
    val modifies_immutable : t
    val multiple_weakself : t
    val mutual_recursion_cycle : t
    val nil_block_call : latent:bool -> t
    val nil_insertion_into_collection : latent:bool -> t
    val nil_messaging_to_non_pod : latent:bool -> t
    val no_match_of_rhs : latent:bool -> t
    val no_matching_case_clause : latent:bool -> t
    val no_matching_function_clause : latent:bool -> t
    val no_true_branch_in_if : latent:bool -> t
    val no_matching_branch_in_try : latent:bool -> t
    val null_argument : latent:bool -> t
    val null_dereference : t
    val nullptr_dereference : latent:bool -> t
    val nullptr_dereference_in_nullsafe_class : latent:bool -> t
    val optional_empty_access : latent:bool -> t
    val precondition_not_found : t
    val precondition_not_met : t
    val premature_nil_termination : t
    val pulse_cannot_instantiate_abstract_class : t
    val pulse_dict_missing_key : t
    val pulse_dynamic_type_mismatch : t
    val pulse_transitive_access : t
    val pulse_memory_leak_c : t
    val pulse_memory_leak_cpp : t
    val pulse_resource_leak : t
    val pulse_unawaited_awaitable : t
    val pulse_uninitialized_const : t
    val pure_function : t
    val quandary_taint_error : t
    val readonly_shared_ptr_param : t
    val regex_op_on_ui_thread : t
    val resource_leak : t
    val retain_cycle : t
    val retain_cycle_no_weak_info : t
    val scope_leakage : t
    val sensitive_data_flow : t
    val skip_function : t
    val shell_injection : t
    val shell_injection_risk : t
    val sql_injection : t
    val sql_injection_risk : t
    val stack_variable_address_escape : t
    val starvation : t
    val static_initialization_order_fiasco : t
    val strict_mode_violation : t
    val strong_self_not_checked : t
    val symexec_memory_error : t
    val taint_error : t
    val thread_safety_violation : t
    val topl_error : latent:bool -> t
    val uninitialized_value_pulse : t
    val unnecessary_copy_pulse : t
    val unnecessary_copy_assignment_pulse : t
    val unnecessary_copy_assignment_const_pulse : t
    val unnecessary_copy_assignment_movable_pulse : t
    val unnecessary_copy_intermediate_pulse : t
    val unnecessary_copy_intermediate_const_pulse : t
    val unnecessary_copy_movable_pulse : t
    val unnecessary_copy_optional_pulse : t
    val unnecessary_copy_optional_const_pulse : t
    val unnecessary_copy_return_pulse : t
    val unreachable_code_after : t
    val use_after_delete : latent:bool -> t
    val use_after_free : latent:bool -> t
    val use_after_lifetime : latent:bool -> t
    val untrusted_buffer_access : t
    val untrusted_deserialization : t
    val untrusted_deserialization_risk : t
    val untrusted_file : t
    val untrusted_file_risk : t
    val untrusted_heap_allocation : t
    val untrusted_intent_creation : t
    val untrusted_url_risk : t
    val untrusted_environment_change_risk : t
    val untrusted_variable_length_array : t
    val user_controlled_sql_risk : t
    val vector_invalidation : latent:bool -> t
    val pulse_reference_stability : t
    val weak_self_in_noescape_block : t
    val wrong_argument_number : t
    val unreachable_cost_call : kind:CostKind.t -> t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    diff --git a/website/static/odoc/next/infer/IBase/IssuesTestField/index.html b/website/static/odoc/next/infer/IBase/IssuesTestField/index.html index fcf8092e4e5..3896baf2d45 100644 --- a/website/static/odoc/next/infer/IBase/IssuesTestField/index.html +++ b/website/static/odoc/next/infer/IBase/IssuesTestField/index.html @@ -1,2 +1,2 @@ -IssuesTestField (infer.IBase.IssuesTestField)

    Module IBase.IssuesTestField

    type t =
    1. | BugType
    2. | Qualifier
    3. | Severity
    4. | Suggestion
    5. | Bucket
    6. | Line
    7. | Column
    8. | Procedure
    9. | ProcedureStartLine
    10. | File
    11. | BugTrace
    12. | Key
    13. | Hash
    14. | LineOffset
    15. | QualifierContainsPotentialExceptionNote
    16. | NullsafeExtra
    17. | TaintExtra
    18. | TransitiveCalleesExtra
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val all_symbols : (string * t) list
    \ No newline at end of file +IssuesTestField (infer.IBase.IssuesTestField)

    Module IBase.IssuesTestField

    type t =
    1. | BugType
    2. | Qualifier
    3. | Severity
    4. | Suggestion
    5. | Bucket
    6. | Line
    7. | Column
    8. | Procedure
    9. | ProcedureStartLine
    10. | File
    11. | BugTrace
    12. | Key
    13. | Hash
    14. | LineOffset
    15. | QualifierContainsPotentialExceptionNote
    16. | NullsafeExtra
    17. | TaintExtra
    18. | TransitiveCalleesExtra
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val all_symbols : (string * t) list
    diff --git a/website/static/odoc/next/infer/IBase/Language/index.html b/website/static/odoc/next/infer/IBase/Language/index.html index afd2677bbc9..b6238997683 100644 --- a/website/static/odoc/next/infer/IBase/Language/index.html +++ b/website/static/odoc/next/infer/IBase/Language/index.html @@ -1,2 +1,2 @@ -Language (infer.IBase.Language)

    Module IBase.Language

    type t =
    1. | Clang
    2. | CIL
    3. | Erlang
    4. | Hack
    5. | Java
    6. | Python
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    val equal : t -> t -> bool
    val to_string : t -> string
    val curr_language : t IStdlib.IStd.ref
    val curr_language_is : t -> bool
    \ No newline at end of file +Language (infer.IBase.Language)

    Module IBase.Language

    type t =
    1. | Clang
    2. | CIL
    3. | Erlang
    4. | Hack
    5. | Java
    6. | Python
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    val equal : t -> t -> bool
    val to_string : t -> string
    val curr_language : t IStdlib.IStd.ref
    val curr_language_is : t -> bool
    diff --git a/website/static/odoc/next/infer/IBase/LineReader/index.html b/website/static/odoc/next/infer/IBase/LineReader/index.html index a1ec5872c9c..c0238c2395e 100644 --- a/website/static/odoc/next/infer/IBase/LineReader/index.html +++ b/website/static/odoc/next/infer/IBase/LineReader/index.html @@ -1,2 +1,2 @@ -LineReader (infer.IBase.LineReader)

    Module IBase.LineReader

    Module to read specific lines from files. The data from any file will stay in memory until the handle is collected by the gc

    type t
    val create : unit -> t
    val from_loc : t -> Location.t -> string option

    get the line from a location looking for the copy of the file in the results dir

    val iteri : t -> SourceFile.t -> f:(int -> string -> unit) -> unit

    iterate on the lines of the file, with line numbers

    \ No newline at end of file +LineReader (infer.IBase.LineReader)

    Module IBase.LineReader

    Module to read specific lines from files. The data from any file will stay in memory until the handle is collected by the gc

    type t
    val create : unit -> t
    val from_loc : t -> Location.t -> string option

    get the line from a location looking for the copy of the file in the results dir

    val iteri : t -> SourceFile.t -> f:(int -> string -> unit) -> unit

    iterate on the lines of the file, with line numbers

    diff --git a/website/static/odoc/next/infer/IBase/Location/Map/index.html b/website/static/odoc/next/infer/IBase/Location/Map/index.html index eefe9aec7e5..338604b0e01 100644 --- a/website/static/odoc/next/infer/IBase/Location/Map/index.html +++ b/website/static/odoc/next/infer/IBase/Location/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IBase.Location.Map)

    Module Location.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IBase.Location.Map)

    Module Location.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IBase/Location/index.html b/website/static/odoc/next/infer/IBase/Location/index.html index 9442294d52f..4a0297610c9 100644 --- a/website/static/odoc/next/infer/IBase/Location/index.html +++ b/website/static/odoc/next/infer/IBase/Location/index.html @@ -1,2 +1,2 @@ -Location (infer.IBase.Location)

    Module IBase.Location

    type t = {
    1. file : SourceFile.t;
      (*

      The name of the source file

      *)
    2. line : int;
      (*

      The line number. -1 means "do not know"

      *)
    3. col : int;
      (*

      The column number. -1 means "do not know"

      *)
    4. macro_file_opt : SourceFile.t option;
      (*

      If the location is coming from macro expansion, the name of the file macro is defined in

      *)
    5. macro_line : int;
      (*

      If the location is coming from macro expansion, the line number

      *)
    }

    Location in the original source file

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val get_macro_file_line_opt : t -> (SourceFile.t * int) option
    val equal : t -> t -> bool
    val none : SourceFile.t -> t

    Dummy source location for the given file

    val dummy : t

    Dummy location with no source file

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a location.

    val pp_line : Stdlib.Format.formatter -> t -> unit

    print just the line information

    val to_string : t -> string

    String representation of a location.

    val pp_file_pos : Stdlib.Format.formatter -> t -> unit

    Pretty print a file-position of a location

    val pp_range : Stdlib.Format.formatter -> (t * t) -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    \ No newline at end of file +Location (infer.IBase.Location)

    Module IBase.Location

    type t = {
    1. file : SourceFile.t;
      (*

      The name of the source file

      *)
    2. line : int;
      (*

      The line number. -1 means "do not know"

      *)
    3. col : int;
      (*

      The column number. -1 means "do not know"

      *)
    4. macro_file_opt : SourceFile.t option;
      (*

      If the location is coming from macro expansion, the name of the file macro is defined in

      *)
    5. macro_line : int;
      (*

      If the location is coming from macro expansion, the line number

      *)
    }

    Location in the original source file

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val get_macro_file_line_opt : t -> (SourceFile.t * int) option
    val equal : t -> t -> bool
    val none : SourceFile.t -> t

    Dummy source location for the given file

    val dummy : t

    Dummy location with no source file

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a location.

    val pp_line : Stdlib.Format.formatter -> t -> unit

    print just the line information

    val to_string : t -> string

    String representation of a location.

    val pp_file_pos : Stdlib.Format.formatter -> t -> unit

    Pretty print a file-position of a location

    val pp_range : Stdlib.Format.formatter -> (t * t) -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    diff --git a/website/static/odoc/next/infer/IBase/LogEntry/index.html b/website/static/odoc/next/infer/IBase/LogEntry/index.html index cef004acdaa..bdd23ebbfc9 100644 --- a/website/static/odoc/next/infer/IBase/LogEntry/index.html +++ b/website/static/odoc/next/infer/IBase/LogEntry/index.html @@ -1,2 +1,2 @@ -LogEntry (infer.IBase.LogEntry)

    Module IBase.LogEntry

    Log entry data model, global log entry store and functions to manipulate it. Direct access to the store is not exposed.

    type count_entry_data = {
    1. value : int;
    }
    type time_entry_data = {
    1. duration_us : int;
    }
    type string_data = {
    1. message : string;
    }
    type entry_data =
    1. | Count of count_entry_data
    2. | Time of time_entry_data
    3. | String of string_data
    type t = {
    1. label : string;
    2. created_at_ts : int;
    3. data : entry_data;
    }

    created_at_ts is a unix timestamp (in seconds)

    val mk_count : label:string -> value:int -> t
    val mk_time : label:string -> duration_us:int -> t
    val mk_string : label:string -> message:string -> t
    val global_log_get : unit -> t list
    val global_log_erase : unit -> unit
    val global_log_add : t -> unit
    \ No newline at end of file +LogEntry (infer.IBase.LogEntry)

    Module IBase.LogEntry

    Log entry data model, global log entry store and functions to manipulate it. Direct access to the store is not exposed.

    type count_entry_data = {
    1. value : int;
    }
    type time_entry_data = {
    1. duration_us : int;
    }
    type string_data = {
    1. message : string;
    }
    type entry_data =
    1. | Count of count_entry_data
    2. | Time of time_entry_data
    3. | String of string_data
    type t = {
    1. label : string;
    2. created_at_ts : int;
    3. data : entry_data;
    }

    created_at_ts is a unix timestamp (in seconds)

    val mk_count : label:string -> value:int -> t
    val mk_time : label:string -> duration_us:int -> t
    val mk_string : label:string -> message:string -> t
    val global_log_get : unit -> t list
    val global_log_erase : unit -> unit
    val global_log_add : t -> unit
    diff --git a/website/static/odoc/next/infer/IBase/Logging/index.html b/website/static/odoc/next/infer/IBase/Logging/index.html index a63fddd5f03..e1b4a5c19c8 100644 --- a/website/static/odoc/next/infer/IBase/Logging/index.html +++ b/website/static/odoc/next/infer/IBase/Logging/index.html @@ -1,36 +1,36 @@ -Logging (infer.IBase.Logging)

    Module IBase.Logging

    log messages at different levels of verbosity

    module F = Stdlib.Format
    include module type of Die
    exception InferExternalError of string
    exception InferInternalError of string
    exception InferUserError of string
    exception InferExit of int

    This can be used to avoid scattering exit invocations all over the codebase

    type error =
    1. | ExternalError
    2. | InternalError
    3. | UserError

    kind of error for die, with similar semantics as Logging.{external,internal,user}_error

    val exit : int -> 'a
    val exit_code_of_exception : IStdlib.IStd.Exn.t -> int
    val set_log_uncaught_exception_callback : (exn -> exitcode:int -> unit) -> unit
    val log_uncaught_exception : exn -> exitcode:int -> unit
    val die : +Logging (infer.IBase.Logging)

    Module IBase.Logging

    log messages at different levels of verbosity

    module F = Stdlib.Format
    include module type of Die
    exception InferExternalError of string
    exception InferInternalError of string
    exception InferUserError of string
    exception InferExit of int

    This can be used to avoid scattering exit invocations all over the codebase

    type error =
    1. | ExternalError
    2. | InternalError
    3. | UserError

    kind of error for die, with similar semantics as Logging.{external,internal,user}_error

    val exit : int -> 'a
    val exit_code_of_exception : IStdlib.IStd.Exn.t -> int
    val set_log_uncaught_exception_callback : (exn -> exitcode:int -> unit) -> unit
    val log_uncaught_exception : exn -> exitcode:int -> unit
    val die : error -> ('a, Stdlib.Format.formatter, unit, _) IStdlib.IStd.format4 -> 'a

    Raise the corresponding exception.

    val raise_error : - ?backtrace:IStdlib.IStd.Caml.Printexc.raw_backtrace -> + ?backtrace:IStdlib.IStd.Caml.Printexc.raw_backtrace -> error -> - msg:string -> - 'a
    type style =
    1. | Error
    2. | Fatal
    3. | Normal
    4. | Warning
    val term_styles_of_style : style -> IStdlib.IStd.ANSITerminal.style list
    val environment_info : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    log information about the environment

    val progress : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    print immediately to standard error unless --quiet is specified

    val log_task : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    log progress in the log file and on the console unless there is an active task bar

    val task_progress : f:(unit -> 'a) -> (F.formatter -> 'b -> unit) -> 'b -> 'a

    task_progress ~f pp x executes f and log progress pp x in the log file and also on the console unless there is an active task bar

    val result : - ?style:IStdlib.IStd.ANSITerminal.style list -> + msg:string -> + 'a
    type style =
    1. | Error
    2. | Fatal
    3. | Normal
    4. | Warning
    val term_styles_of_style : style -> IStdlib.IStd.ANSITerminal.style list
    val environment_info : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    log information about the environment

    val progress : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    print immediately to standard error unless --quiet is specified

    val log_task : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    log progress in the log file and on the console unless there is an active task bar

    val task_progress : f:(unit -> 'a) -> (F.formatter -> 'b -> unit) -> 'b -> 'a

    task_progress ~f pp x executes f and log progress pp x in the log file and also on the console unless there is an active task bar

    val result : + ?style:IStdlib.IStd.ANSITerminal.style list -> ('a, F.formatter, unit) IStdlib.IStd.format -> - 'a

    Emit a result to stdout. Use only if the output format is stable and useful enough that it may conceivably get piped to another program, ie, almost never (use progress instead otherwise).

    val user_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    bad input, etc. detected

    val user_warning : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    the user may have done something wrong

    val internal_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    huho, infer has a bug

    val external_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    some other tool has a bug or is called wrongly

    val external_warning : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a
    type debug_kind =
    1. | Analysis
    2. | BufferOverrun
    3. | Capture
    4. | MergeCapture
    5. | TestDeterminator
    type debug_level =
    1. | Quiet
      (*

      innocuous, eg emitted once per toplevel execution

      *)
    2. | Medium
      (*

      still fairly lightweight, eg emitted O(<number of infer processes>)

      *)
    3. | Verbose
      (*

      go crazy

      *)

    Level of verbosity for debug output. Each level enables all the levels before it.

    val debug : + 'a

    Emit a result to stdout. Use only if the output format is stable and useful enough that it may conceivably get piped to another program, ie, almost never (use progress instead otherwise).

    val user_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    bad input, etc. detected

    val user_warning : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    the user may have done something wrong

    val internal_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    huho, infer has a bug

    val external_error : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    some other tool has a bug or is called wrongly

    val external_warning : ('a, F.formatter, unit) IStdlib.IStd.format -> 'a
    type debug_kind =
    1. | Analysis
    2. | BufferOverrun
    3. | Capture
    4. | MergeCapture
    5. | Report
    6. | TestDeterminator
    type debug_level =
    1. | Quiet
      (*

      innocuous, eg emitted once per toplevel execution

      *)
    2. | Medium
      (*

      still fairly lightweight, eg emitted O(<number of infer processes>)

      *)
    3. | Verbose
      (*

      go crazy

      *)

    Level of verbosity for debug output. Each level enables all the levels before it.

    val debug : debug_kind -> debug_level -> ('a, F.formatter, unit) IStdlib.IStd.format -> 'a

    log debug info

    val debug_dev : ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

    For debugging during development.

    • deprecated Only use to debug during development. If you want more permanent logging, use [Logging.debug] instead.
    type ocaml_pos = string * int * int * int

    Type of location in ml source: __POS__

    val ocaml_pos_to_string : ocaml_pos -> string

    Convert an ocaml position to a string

    val pp_ocaml_pos_opt : F.formatter -> ocaml_pos option -> unit

    Pretty print a position in ocaml source

    log management

    val setup_log_file : unit -> unit

    Set up logging to go to the log file. Call this once the results directory has been set up.

    val flush_formatters : unit -> unit

    Flushes the formatters used for logging. Call this in the parent before you fork(2).

    val reset_formatters : unit -> unit

    Reset the formatters used for logging. Call this in the child after you fork(2).

    Delayed printing (HTML debug, ...)

    type delayed_prints
    val d_pp : (F.formatter -> 'a -> unit) -> 'a -> unit
    val d_pp_with_pe : - ?color:IStdlib.Pp.color -> + ?color:IStdlib.Pp.color -> (IStdlib.Pp.env -> F.formatter -> 'a -> unit) -> 'a -> - unit
    val force_and_reset_delayed_prints : F.formatter -> unit
    val get_and_reset_delayed_prints : unit -> delayed_prints

    return the delayed print actions and reset them

    val set_delayed_prints : delayed_prints -> unit

    set the delayed print actions

    val reset_delayed_prints : unit -> unit

    reset the delayed print actions

    val d_str : ?color:IStdlib.Pp.color -> string -> unit

    dump a string

    val d_strln : ?color:IStdlib.Pp.color -> string -> unit

    dump a string plus newline

    val d_ln : unit -> unit

    dump a newline

    val d_printf : - ?color:IStdlib.Pp.color -> + unit
    val force_and_reset_delayed_prints : F.formatter -> unit
    val get_and_reset_delayed_prints : unit -> delayed_prints

    return the delayed print actions and reset them

    val set_delayed_prints : delayed_prints -> unit

    set the delayed print actions

    val reset_delayed_prints : unit -> unit

    reset the delayed print actions

    val d_str : ?color:IStdlib.Pp.color -> string -> unit

    dump a string

    val d_strln : ?color:IStdlib.Pp.color -> string -> unit

    dump a string plus newline

    val d_ln : unit -> unit

    dump a newline

    val d_printf : + ?color:IStdlib.Pp.color -> ('a, F.formatter, unit) IStdlib.IStd.format -> 'a
    val d_printfln : - ?color:IStdlib.Pp.color -> + ?color:IStdlib.Pp.color -> ('a, F.formatter, unit) IStdlib.IStd.format -> 'a
    val d_printfln_escaped : - ?color:IStdlib.Pp.color -> + ?color:IStdlib.Pp.color -> ('a, F.formatter, unit) IStdlib.IStd.format -> 'a
    val d_error : string -> unit

    dump an error string

    val d_warning : string -> unit

    dump a warning string

    val d_info : string -> unit

    dump an info string

    val d_indent : int -> unit

    dump an indentation

    val d_increase_indent : unit -> unit

    dump command to increase the indentation level. NOTE: most likely, you need d_with_indent instead

    val d_decrease_indent : unit -> unit

    dump command to decrease the indentation level NOTE: most likely, you need d_with_indent instead.

    val with_indent : - ?name_color:IStdlib.Pp.color -> - ?collapsible:bool -> - ?escape_result:bool -> - ?pp_result:(F.formatter -> 'a -> unit) -> - f:(unit -> 'a) -> + ?name_color:IStdlib.Pp.color -> + ?collapsible:bool -> + ?escape_result:bool -> + ?pp_result:(F.formatter -> 'a -> unit) -> + f:(unit -> 'a) -> ('b, F.formatter, unit, 'a) IStdlib.IStd.format4 -> - 'b

    Unconditionally execute f so that all logs written inside (if any) are written with indentation, using the title format provided.

    pp_result, if provided, will make the result of a call to be printed as well (useful for cases when there are several places when the function returns).

    NOTE: If you want to use it NOT at the very top level of a function, it is a code smell, and you probably want to split your function into smaller ones.

    \ No newline at end of file + 'b

    Unconditionally execute f so that all logs written inside (if any) are written with indentation, using the title format provided.

    pp_result, if provided, will make the result of a call to be printed as well (useful for cases when there are several places when the function returns).

    NOTE: If you want to use it NOT at the very top level of a function, it is a code smell, and you probably want to split your function into smaller ones.

    diff --git a/website/static/odoc/next/infer/IBase/MarkupFormatter/index.html b/website/static/odoc/next/infer/IBase/MarkupFormatter/index.html index 4087e24d2df..67ae744ae29 100644 --- a/website/static/odoc/next/infer/IBase/MarkupFormatter/index.html +++ b/website/static/odoc/next/infer/IBase/MarkupFormatter/index.html @@ -1,5 +1,5 @@ -MarkupFormatter (infer.IBase.MarkupFormatter)

    Module IBase.MarkupFormatter

    val wrap_monospaced : +MarkupFormatter (infer.IBase.MarkupFormatter)

    Module IBase.MarkupFormatter

    val wrap_monospaced : (Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a -> @@ -11,4 +11,4 @@ (Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a -> - unit

    used to combine pp together, wrap content into a bold block

    val pp_bold : Stdlib.Format.formatter -> string -> unit

    pp to wrap into a bold block

    val bold_to_string : string -> string

    wrap into a bold block

    \ No newline at end of file + unit

    used to combine pp together, wrap content into a bold block

    val pp_bold : Stdlib.Format.formatter -> string -> unit

    pp to wrap into a bold block

    val bold_to_string : string -> string

    wrap into a bold block

    diff --git a/website/static/odoc/next/infer/IBase/MissingDependencyException/index.html b/website/static/odoc/next/infer/IBase/MissingDependencyException/index.html index 3899a6db205..e4de3321b76 100644 --- a/website/static/odoc/next/infer/IBase/MissingDependencyException/index.html +++ b/website/static/odoc/next/infer/IBase/MissingDependencyException/index.html @@ -1,2 +1,2 @@ -MissingDependencyException (infer.IBase.MissingDependencyException)

    Module IBase.MissingDependencyException

    exception MissingDependencyException

    for tracking missing dependencies

    \ No newline at end of file +MissingDependencyException (infer.IBase.MissingDependencyException)

    Module IBase.MissingDependencyException

    exception MissingDependencyException

    for tracking missing dependencies

    diff --git a/website/static/odoc/next/infer/IBase/PayloadId/Variants/index.html b/website/static/odoc/next/infer/IBase/PayloadId/Variants/index.html index 6b86d2610c8..eb34295b41b 100644 --- a/website/static/odoc/next/infer/IBase/PayloadId/Variants/index.html +++ b/website/static/odoc/next/infer/IBase/PayloadId/Variants/index.html @@ -1,106 +1,106 @@ -Variants (infer.IBase.PayloadId.Variants)

    Module PayloadId.Variants

    val annotmap : t Variantslib.Variant.t
    val biabduction : t Variantslib.Variant.t
    val bufferoverrunanalysis : t Variantslib.Variant.t
    val bufferoverrunchecker : t Variantslib.Variant.t
    val configimpactanalysis : t Variantslib.Variant.t
    val cost : t Variantslib.Variant.t
    val disjunctivedemo : t Variantslib.Variant.t
    val labresourceleaks : t Variantslib.Variant.t
    val lithorequiredprops : t Variantslib.Variant.t
    val pulse : t Variantslib.Variant.t
    val purity : t Variantslib.Variant.t
    val quandary : t Variantslib.Variant.t
    val racerd : t Variantslib.Variant.t
    val scopeleakage : t Variantslib.Variant.t
    val siof : t Variantslib.Variant.t
    val lineage : t Variantslib.Variant.t
    val lineageshape : t Variantslib.Variant.t
    val starvation : t Variantslib.Variant.t
    val nullsafe : t Variantslib.Variant.t
    val uninit : t Variantslib.Variant.t
    val fold : - init:'acc__ -> - annotmap:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - biabduction:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - bufferoverrunanalysis:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - bufferoverrunchecker:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - configimpactanalysis:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - cost:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - disjunctivedemo:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - labresourceleaks:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - lithorequiredprops:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - pulse:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - purity:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - quandary:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - racerd:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - scopeleakage:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - siof:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - lineage:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - lineageshape:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - starvation:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - nullsafe:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> - uninit:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> +Variants (infer.IBase.PayloadId.Variants)

    Module PayloadId.Variants

    val annotmap : t Variantslib.Variant.t
    val biabduction : t Variantslib.Variant.t
    val bufferoverrunanalysis : t Variantslib.Variant.t
    val bufferoverrunchecker : t Variantslib.Variant.t
    val configimpactanalysis : t Variantslib.Variant.t
    val cost : t Variantslib.Variant.t
    val disjunctivedemo : t Variantslib.Variant.t
    val labresourceleaks : t Variantslib.Variant.t
    val lithorequiredprops : t Variantslib.Variant.t
    val pulse : t Variantslib.Variant.t
    val purity : t Variantslib.Variant.t
    val quandary : t Variantslib.Variant.t
    val racerd : t Variantslib.Variant.t
    val scopeleakage : t Variantslib.Variant.t
    val siof : t Variantslib.Variant.t
    val lineage : t Variantslib.Variant.t
    val lineageshape : t Variantslib.Variant.t
    val starvation : t Variantslib.Variant.t
    val nullsafe : t Variantslib.Variant.t
    val uninit : t Variantslib.Variant.t
    val fold : + init:'acc__ -> + annotmap:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + biabduction:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + bufferoverrunanalysis:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + bufferoverrunchecker:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + configimpactanalysis:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + cost:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + disjunctivedemo:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + labresourceleaks:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + lithorequiredprops:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + pulse:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + purity:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + quandary:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + racerd:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + scopeleakage:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + siof:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + lineage:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + lineageshape:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + starvation:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + nullsafe:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> + uninit:('acc__ -> t Variantslib.Variant.t -> 'acc__) -> 'acc__
    val iter : - annotmap:(t Variantslib.Variant.t -> unit) -> - biabduction:(t Variantslib.Variant.t -> unit) -> - bufferoverrunanalysis:(t Variantslib.Variant.t -> unit) -> - bufferoverrunchecker:(t Variantslib.Variant.t -> unit) -> - configimpactanalysis:(t Variantslib.Variant.t -> unit) -> - cost:(t Variantslib.Variant.t -> unit) -> - disjunctivedemo:(t Variantslib.Variant.t -> unit) -> - labresourceleaks:(t Variantslib.Variant.t -> unit) -> - lithorequiredprops:(t Variantslib.Variant.t -> unit) -> - pulse:(t Variantslib.Variant.t -> unit) -> - purity:(t Variantslib.Variant.t -> unit) -> - quandary:(t Variantslib.Variant.t -> unit) -> - racerd:(t Variantslib.Variant.t -> unit) -> - scopeleakage:(t Variantslib.Variant.t -> unit) -> - siof:(t Variantslib.Variant.t -> unit) -> - lineage:(t Variantslib.Variant.t -> unit) -> - lineageshape:(t Variantslib.Variant.t -> unit) -> - starvation:(t Variantslib.Variant.t -> unit) -> - nullsafe:(t Variantslib.Variant.t -> unit) -> - uninit:(t Variantslib.Variant.t -> unit) -> + annotmap:(t Variantslib.Variant.t -> unit) -> + biabduction:(t Variantslib.Variant.t -> unit) -> + bufferoverrunanalysis:(t Variantslib.Variant.t -> unit) -> + bufferoverrunchecker:(t Variantslib.Variant.t -> unit) -> + configimpactanalysis:(t Variantslib.Variant.t -> unit) -> + cost:(t Variantslib.Variant.t -> unit) -> + disjunctivedemo:(t Variantslib.Variant.t -> unit) -> + labresourceleaks:(t Variantslib.Variant.t -> unit) -> + lithorequiredprops:(t Variantslib.Variant.t -> unit) -> + pulse:(t Variantslib.Variant.t -> unit) -> + purity:(t Variantslib.Variant.t -> unit) -> + quandary:(t Variantslib.Variant.t -> unit) -> + racerd:(t Variantslib.Variant.t -> unit) -> + scopeleakage:(t Variantslib.Variant.t -> unit) -> + siof:(t Variantslib.Variant.t -> unit) -> + lineage:(t Variantslib.Variant.t -> unit) -> + lineageshape:(t Variantslib.Variant.t -> unit) -> + starvation:(t Variantslib.Variant.t -> unit) -> + nullsafe:(t Variantslib.Variant.t -> unit) -> + uninit:(t Variantslib.Variant.t -> unit) -> unit
    val map : t -> - annotmap:(t Variantslib.Variant.t -> 'result__) -> - biabduction:(t Variantslib.Variant.t -> 'result__) -> - bufferoverrunanalysis:(t Variantslib.Variant.t -> 'result__) -> - bufferoverrunchecker:(t Variantslib.Variant.t -> 'result__) -> - configimpactanalysis:(t Variantslib.Variant.t -> 'result__) -> - cost:(t Variantslib.Variant.t -> 'result__) -> - disjunctivedemo:(t Variantslib.Variant.t -> 'result__) -> - labresourceleaks:(t Variantslib.Variant.t -> 'result__) -> - lithorequiredprops:(t Variantslib.Variant.t -> 'result__) -> - pulse:(t Variantslib.Variant.t -> 'result__) -> - purity:(t Variantslib.Variant.t -> 'result__) -> - quandary:(t Variantslib.Variant.t -> 'result__) -> - racerd:(t Variantslib.Variant.t -> 'result__) -> - scopeleakage:(t Variantslib.Variant.t -> 'result__) -> - siof:(t Variantslib.Variant.t -> 'result__) -> - lineage:(t Variantslib.Variant.t -> 'result__) -> - lineageshape:(t Variantslib.Variant.t -> 'result__) -> - starvation:(t Variantslib.Variant.t -> 'result__) -> - nullsafe:(t Variantslib.Variant.t -> 'result__) -> - uninit:(t Variantslib.Variant.t -> 'result__) -> + annotmap:(t Variantslib.Variant.t -> 'result__) -> + biabduction:(t Variantslib.Variant.t -> 'result__) -> + bufferoverrunanalysis:(t Variantslib.Variant.t -> 'result__) -> + bufferoverrunchecker:(t Variantslib.Variant.t -> 'result__) -> + configimpactanalysis:(t Variantslib.Variant.t -> 'result__) -> + cost:(t Variantslib.Variant.t -> 'result__) -> + disjunctivedemo:(t Variantslib.Variant.t -> 'result__) -> + labresourceleaks:(t Variantslib.Variant.t -> 'result__) -> + lithorequiredprops:(t Variantslib.Variant.t -> 'result__) -> + pulse:(t Variantslib.Variant.t -> 'result__) -> + purity:(t Variantslib.Variant.t -> 'result__) -> + quandary:(t Variantslib.Variant.t -> 'result__) -> + racerd:(t Variantslib.Variant.t -> 'result__) -> + scopeleakage:(t Variantslib.Variant.t -> 'result__) -> + siof:(t Variantslib.Variant.t -> 'result__) -> + lineage:(t Variantslib.Variant.t -> 'result__) -> + lineageshape:(t Variantslib.Variant.t -> 'result__) -> + starvation:(t Variantslib.Variant.t -> 'result__) -> + nullsafe:(t Variantslib.Variant.t -> 'result__) -> + uninit:(t Variantslib.Variant.t -> 'result__) -> 'result__
    val make_matcher : - annotmap: + annotmap: (t Variantslib.Variant.t -> 'acc__0 -> (unit -> 'result__) * 'acc__1) -> - biabduction: + biabduction: (t Variantslib.Variant.t -> 'acc__1 -> (unit -> 'result__) * 'acc__2) -> - bufferoverrunanalysis: + bufferoverrunanalysis: (t Variantslib.Variant.t -> 'acc__2 -> (unit -> 'result__) * 'acc__3) -> - bufferoverrunchecker: + bufferoverrunchecker: (t Variantslib.Variant.t -> 'acc__3 -> (unit -> 'result__) * 'acc__4) -> - configimpactanalysis: + configimpactanalysis: (t Variantslib.Variant.t -> 'acc__4 -> (unit -> 'result__) * 'acc__5) -> - cost:(t Variantslib.Variant.t -> 'acc__5 -> (unit -> 'result__) * 'acc__6) -> - disjunctivedemo: + cost:(t Variantslib.Variant.t -> 'acc__5 -> (unit -> 'result__) * 'acc__6) -> + disjunctivedemo: (t Variantslib.Variant.t -> 'acc__6 -> (unit -> 'result__) * 'acc__7) -> - labresourceleaks: + labresourceleaks: (t Variantslib.Variant.t -> 'acc__7 -> (unit -> 'result__) * 'acc__8) -> - lithorequiredprops: + lithorequiredprops: (t Variantslib.Variant.t -> 'acc__8 -> (unit -> 'result__) * 'acc__9) -> - pulse:(t Variantslib.Variant.t -> 'acc__9 -> (unit -> 'result__) * 'acc__10) -> - purity: + pulse:(t Variantslib.Variant.t -> 'acc__9 -> (unit -> 'result__) * 'acc__10) -> + purity: (t Variantslib.Variant.t -> 'acc__10 -> (unit -> 'result__) * 'acc__11) -> - quandary: + quandary: (t Variantslib.Variant.t -> 'acc__11 -> (unit -> 'result__) * 'acc__12) -> - racerd: + racerd: (t Variantslib.Variant.t -> 'acc__12 -> (unit -> 'result__) * 'acc__13) -> - scopeleakage: + scopeleakage: (t Variantslib.Variant.t -> 'acc__13 -> (unit -> 'result__) * 'acc__14) -> - siof:(t Variantslib.Variant.t -> 'acc__14 -> (unit -> 'result__) * 'acc__15) -> - lineage: + siof:(t Variantslib.Variant.t -> 'acc__14 -> (unit -> 'result__) * 'acc__15) -> + lineage: (t Variantslib.Variant.t -> 'acc__15 -> (unit -> 'result__) * 'acc__16) -> - lineageshape: + lineageshape: (t Variantslib.Variant.t -> 'acc__16 -> (unit -> 'result__) * 'acc__17) -> - starvation: + starvation: (t Variantslib.Variant.t -> 'acc__17 -> (unit -> 'result__) * 'acc__18) -> - nullsafe: + nullsafe: (t Variantslib.Variant.t -> 'acc__18 -> (unit -> 'result__) * 'acc__19) -> - uninit: + uninit: (t Variantslib.Variant.t -> 'acc__19 -> (unit -> 'result__) * 'acc__20) -> 'acc__0 -> - (t -> 'result__) * 'acc__20
    val to_rank : t -> int
    val to_name : t -> string
    val descriptions : (string * int) list
    \ No newline at end of file + (t -> 'result__) * 'acc__20
    val to_rank : t -> int
    val to_name : t -> string
    val descriptions : (string * int) list
    diff --git a/website/static/odoc/next/infer/IBase/PayloadId/index.html b/website/static/odoc/next/infer/IBase/PayloadId/index.html index e6b9ec0e767..38ca737c4d6 100644 --- a/website/static/odoc/next/infer/IBase/PayloadId/index.html +++ b/website/static/odoc/next/infer/IBase/PayloadId/index.html @@ -1,2 +1,2 @@ -PayloadId (infer.IBase.PayloadId)

    Module IBase.PayloadId

    type t =
    1. | AnnotMap
    2. | Biabduction
    3. | BufferOverrunAnalysis
    4. | BufferOverrunChecker
    5. | ConfigImpactAnalysis
    6. | Cost
    7. | DisjunctiveDemo
    8. | LabResourceLeaks
    9. | LithoRequiredProps
    10. | Pulse
    11. | Purity
    12. | Quandary
    13. | RacerD
    14. | ScopeLeakage
    15. | SIOF
    16. | Lineage
    17. | LineageShape
    18. | Starvation
    19. | Nullsafe
    20. | Uninit
    val annotmap : t
    val biabduction : t
    val bufferoverrunanalysis : t
    val bufferoverrunchecker : t
    val configimpactanalysis : t
    val cost : t
    val disjunctivedemo : t
    val labresourceleaks : t
    val lithorequiredprops : t
    val pulse : t
    val purity : t
    val quandary : t
    val racerd : t
    val scopeleakage : t
    val siof : t
    val lineage : t
    val lineageshape : t
    val starvation : t
    val nullsafe : t
    val uninit : t
    val is_annotmap : t -> bool
    val is_biabduction : t -> bool
    val is_bufferoverrunanalysis : t -> bool
    val is_bufferoverrunchecker : t -> bool
    val is_configimpactanalysis : t -> bool
    val is_cost : t -> bool
    val is_disjunctivedemo : t -> bool
    val is_labresourceleaks : t -> bool
    val is_lithorequiredprops : t -> bool
    val is_pulse : t -> bool
    val is_purity : t -> bool
    val is_quandary : t -> bool
    val is_racerd : t -> bool
    val is_scopeleakage : t -> bool
    val is_siof : t -> bool
    val is_lineage : t -> bool
    val is_lineageshape : t -> bool
    val is_starvation : t -> bool
    val is_nullsafe : t -> bool
    val is_uninit : t -> bool
    val annotmap_val : t -> unit option
    val biabduction_val : t -> unit option
    val bufferoverrunanalysis_val : t -> unit option
    val bufferoverrunchecker_val : t -> unit option
    val configimpactanalysis_val : t -> unit option
    val cost_val : t -> unit option
    val disjunctivedemo_val : t -> unit option
    val labresourceleaks_val : t -> unit option
    val lithorequiredprops_val : t -> unit option
    val pulse_val : t -> unit option
    val purity_val : t -> unit option
    val quandary_val : t -> unit option
    val racerd_val : t -> unit option
    val scopeleakage_val : t -> unit option
    val siof_val : t -> unit option
    val lineage_val : t -> unit option
    val lineageshape_val : t -> unit option
    val starvation_val : t -> unit option
    val nullsafe_val : t -> unit option
    val uninit_val : t -> unit option
    module Variants : sig ... end
    val database_fields : string list
    \ No newline at end of file +PayloadId (infer.IBase.PayloadId)

    Module IBase.PayloadId

    type t =
    1. | AnnotMap
    2. | Biabduction
    3. | BufferOverrunAnalysis
    4. | BufferOverrunChecker
    5. | ConfigImpactAnalysis
    6. | Cost
    7. | DisjunctiveDemo
    8. | LabResourceLeaks
    9. | LithoRequiredProps
    10. | Pulse
    11. | Purity
    12. | Quandary
    13. | RacerD
    14. | ScopeLeakage
    15. | SIOF
    16. | Lineage
    17. | LineageShape
    18. | Starvation
    19. | Nullsafe
    20. | Uninit
    val annotmap : t
    val biabduction : t
    val bufferoverrunanalysis : t
    val bufferoverrunchecker : t
    val configimpactanalysis : t
    val cost : t
    val disjunctivedemo : t
    val labresourceleaks : t
    val lithorequiredprops : t
    val pulse : t
    val purity : t
    val quandary : t
    val racerd : t
    val scopeleakage : t
    val siof : t
    val lineage : t
    val lineageshape : t
    val starvation : t
    val nullsafe : t
    val uninit : t
    val is_annotmap : t -> bool
    val is_biabduction : t -> bool
    val is_bufferoverrunanalysis : t -> bool
    val is_bufferoverrunchecker : t -> bool
    val is_configimpactanalysis : t -> bool
    val is_cost : t -> bool
    val is_disjunctivedemo : t -> bool
    val is_labresourceleaks : t -> bool
    val is_lithorequiredprops : t -> bool
    val is_pulse : t -> bool
    val is_purity : t -> bool
    val is_quandary : t -> bool
    val is_racerd : t -> bool
    val is_scopeleakage : t -> bool
    val is_siof : t -> bool
    val is_lineage : t -> bool
    val is_lineageshape : t -> bool
    val is_starvation : t -> bool
    val is_nullsafe : t -> bool
    val is_uninit : t -> bool
    val annotmap_val : t -> unit option
    val biabduction_val : t -> unit option
    val bufferoverrunanalysis_val : t -> unit option
    val bufferoverrunchecker_val : t -> unit option
    val configimpactanalysis_val : t -> unit option
    val cost_val : t -> unit option
    val disjunctivedemo_val : t -> unit option
    val labresourceleaks_val : t -> unit option
    val lithorequiredprops_val : t -> unit option
    val pulse_val : t -> unit option
    val purity_val : t -> unit option
    val quandary_val : t -> unit option
    val racerd_val : t -> unit option
    val scopeleakage_val : t -> unit option
    val siof_val : t -> unit option
    val lineage_val : t -> unit option
    val lineageshape_val : t -> unit option
    val starvation_val : t -> unit option
    val nullsafe_val : t -> unit option
    val uninit_val : t -> unit option
    module Variants : sig ... end
    val database_fields : string list
    diff --git a/website/static/odoc/next/infer/IBase/PerfEvent/Json/index.html b/website/static/odoc/next/infer/IBase/PerfEvent/Json/index.html index 4d65b73c61e..5ebcc1541c0 100644 --- a/website/static/odoc/next/infer/IBase/PerfEvent/Json/index.html +++ b/website/static/odoc/next/infer/IBase/PerfEvent/Json/index.html @@ -1,2 +1,2 @@ -Json (infer.IBase.PerfEvent.Json)

    Module PerfEvent.Json

    type t = [
    1. | `Int of int
    2. | `String of string
    3. | `Assoc of (string * t) list
    4. | `List of t list
    ]

    only what we need for now

    \ No newline at end of file +Json (infer.IBase.PerfEvent.Json)

    Module PerfEvent.Json

    type t = [
    1. | `Int of int
    2. | `String of string
    3. | `Assoc of (string * t) list
    4. | `List of t list
    ]

    only what we need for now

    diff --git a/website/static/odoc/next/infer/IBase/PerfEvent/index.html b/website/static/odoc/next/infer/IBase/PerfEvent/index.html index 3b900529898..93c04b68c6e 100644 --- a/website/static/odoc/next/infer/IBase/PerfEvent/index.html +++ b/website/static/odoc/next/infer/IBase/PerfEvent/index.html @@ -1,27 +1,27 @@ -PerfEvent (infer.IBase.PerfEvent)

    Module IBase.PerfEvent

    module Json : sig ... end
    type scope =
    1. | Global
    2. | Process
    type logger
    val log_begin_event : +PerfEvent (infer.IBase.PerfEvent)

    Module IBase.PerfEvent

    module Json : sig ... end
    type scope =
    1. | Global
    2. | Process
    type logger
    val log_begin_event : logger -> - ?timestamp:Mtime.t -> - ?categories:string list -> - ?arguments:(string * Json.t) list -> - name:string -> + ?timestamp:Mtime.t -> + ?categories:string list -> + ?arguments:(string * Json.t) list -> + name:string -> unit -> unit
    val log_end_event : logger -> - ?timestamp:Mtime.t -> - ?arguments:(string * Json.t) list -> + ?timestamp:Mtime.t -> + ?arguments:(string * Json.t) list -> unit -> unit
    val log_complete_event : logger -> - timestamp:Mtime.t -> - ?duration:Mtime.Span.t -> - ?categories:string list -> - ?arguments:(string * Json.t) list -> - name:string -> + timestamp:Mtime.t -> + ?duration:Mtime.Span.t -> + ?categories:string list -> + ?arguments:(string * Json.t) list -> + name:string -> unit -> unit
    val log_instant_event : logger -> - ?timestamp:Mtime.t -> - name:string -> + ?timestamp:Mtime.t -> + name:string -> scope -> - unit
    val log : (logger -> unit) -> unit
    val init : unit -> unit
    \ No newline at end of file + unit
    val log : (logger -> unit) -> unit
    val init : unit -> unit
    diff --git a/website/static/odoc/next/infer/IBase/Process/index.html b/website/static/odoc/next/infer/IBase/Process/index.html index 185daf23f12..3df1686df18 100644 --- a/website/static/odoc/next/infer/IBase/Process/index.html +++ b/website/static/odoc/next/infer/IBase/Process/index.html @@ -1,14 +1,14 @@ -Process (infer.IBase.Process)

    Module IBase.Process

    val create_process_and_wait : prog:string -> args:string list -> unit

    Given an command to be executed, creates a process to execute this command, and waits for its execution. The standard out and error are not redirected. If the commands fails to execute, prints an error message and exits.

    type action =
    1. | ReadStdout
    2. | ReadStderr
    val create_process_and_wait_with_output : - prog:string -> - args:string list -> +Process (infer.IBase.Process)

    Module IBase.Process

    val create_process_and_wait : prog:string -> args:string list -> unit

    Given an command to be executed, creates a process to execute this command, and waits for its execution. The standard out and error are not redirected. If the commands fails to execute, prints an error message and exits.

    type action =
    1. | ReadStdout
    2. | ReadStderr
    val create_process_and_wait_with_output : + prog:string -> + args:string list -> action -> string

    Given an command to be executed, creates a process to execute this command, and waits for its execution. Depending on the action passed, either stdout or stderr is returned, with the other being streamed to the console. If the commands fails to execute, prints an error message and exits.

    val print_error_and_exit : - ?exit_code:int -> + ?exit_code:int -> ('a, Stdlib.Format.formatter, unit, 'b) IStdlib.IStd.format4 -> 'a

    Prints an error message to a log file, prints a message saying that the error can be found in that file, and exist, with default code 1 or a given code.

    val pipeline : - producer_prog:string -> - producer_args:string list -> - consumer_prog:string -> - consumer_args:string list -> - IStdlib.IStd.Unix.Exit_or_signal.t * IStdlib.IStd.Unix.Exit_or_signal.t

    Pipeline producer program into consumer program

    \ No newline at end of file + producer_prog:string -> + producer_args:string list -> + consumer_prog:string -> + consumer_args:string list -> + IStdlib.IStd.Unix.Exit_or_signal.t * IStdlib.IStd.Unix.Exit_or_signal.t

    Pipeline producer program into consumer program

    diff --git a/website/static/odoc/next/infer/IBase/ProcessPool/TaskGenerator/index.html b/website/static/odoc/next/infer/IBase/ProcessPool/TaskGenerator/index.html index 7863f5b0bca..65577e2a1a6 100644 --- a/website/static/odoc/next/infer/IBase/ProcessPool/TaskGenerator/index.html +++ b/website/static/odoc/next/infer/IBase/ProcessPool/TaskGenerator/index.html @@ -1,2 +1,2 @@ -TaskGenerator (infer.IBase.ProcessPool.TaskGenerator)

    Module ProcessPool.TaskGenerator

    type ('a, 'b) t = {
    1. remaining_tasks : unit -> int;
      (*

      number of tasks remaining to complete -- only used for reporting, so imprecision is not a bug

      *)
    2. is_empty : unit -> bool;
      (*

      when should the main loop of the task manager stop expecting new tasks

      *)
    3. finished : result:'b option -> 'a -> unit;
      (*

      Process pool calls finished result:r x when a worker finishes item x. result is None when the item was completed successfully and Some pname when it failed because it could not lock pname. This is only called if next () has previously returned Some x and x was sent to a worker.

      *)
    4. next : unit -> 'a option;
      (*

      next () generates the next work item. If is_empty () is true then next () must return None. However, it is OK to for next () to return None when is_empty is false. This corresponds to the case where there is more work to be done, but it is not schedulable until some already scheduled work is finished.

      *)
    }

    abstraction for generating jobs

    val chain : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

    chain two generators in order

    val of_list : 'a list -> ('a, 'b) t

    schedule tasks out of a concrete list

    \ No newline at end of file +TaskGenerator (infer.IBase.ProcessPool.TaskGenerator)

    Module ProcessPool.TaskGenerator

    type ('a, 'b) t = {
    1. remaining_tasks : unit -> int;
      (*

      number of tasks remaining to complete -- only used for reporting, so imprecision is not a bug

      *)
    2. is_empty : unit -> bool;
      (*

      when should the main loop of the task manager stop expecting new tasks

      *)
    3. finished : result:'b option -> 'a -> unit;
      (*

      Process pool calls finished result:r x when a worker finishes item x. result is None when the item was completed successfully and Some pname when it failed because it could not lock pname. This is only called if next () has previously returned Some x and x was sent to a worker.

      *)
    4. next : unit -> 'a option;
      (*

      next () generates the next work item. If is_empty () is true then next () must return None. However, it is OK to for next () to return None when is_empty is false. This corresponds to the case where there is more work to be done, but it is not schedulable until some already scheduled work is finished.

      *)
    }

    abstraction for generating jobs

    val chain : ('a, 'b) t -> ('a, 'b) t -> ('a, 'b) t

    chain two generators in order

    val of_list : 'a list -> ('a, 'b) t

    schedule tasks out of a concrete list

    diff --git a/website/static/odoc/next/infer/IBase/ProcessPool/Worker/index.html b/website/static/odoc/next/infer/IBase/ProcessPool/Worker/index.html index fcfa2d14337..bae9c1ed987 100644 --- a/website/static/odoc/next/infer/IBase/ProcessPool/Worker/index.html +++ b/website/static/odoc/next/infer/IBase/ProcessPool/Worker/index.html @@ -1,2 +1,2 @@ -Worker (infer.IBase.ProcessPool.Worker)

    Module ProcessPool.Worker

    type id = private int

    the number matches the index of the worker in the array of final results

    val pp_id : Ppx_show_runtime.Format.formatter -> id -> unit
    val show_id : id -> string
    \ No newline at end of file +Worker (infer.IBase.ProcessPool.Worker)

    Module ProcessPool.Worker

    type id = private int

    the number matches the index of the worker in the array of final results

    val pp_id : Ppx_show_runtime.Format.formatter -> id -> unit
    val show_id : id -> string
    diff --git a/website/static/odoc/next/infer/IBase/ProcessPool/index.html b/website/static/odoc/next/infer/IBase/ProcessPool/index.html index b790619b340..d080f06eb35 100644 --- a/website/static/odoc/next/infer/IBase/ProcessPool/index.html +++ b/website/static/odoc/next/infer/IBase/ProcessPool/index.html @@ -1,8 +1,8 @@ -ProcessPool (infer.IBase.ProcessPool)

    Module IBase.ProcessPool

    module TaskGenerator : sig ... end

    Pool of parallel workers that can both receive tasks from the orchestrator process and start doing tasks on their own. Unix pipes are used for communication, all while refreshing a task bar periodically.

    Due to ondemand analysis, workers may do tasks unprompted (eg, when analysing a procedure, a process will typically end up analysing all its callees). Thus, children need to update the main process (which is in charge of the task bar) whenever they start analysing a new procedure, and whenever they resume analysing a previous procedure. This is more complicated than what, eg, `ParMap` can handle because of the bidirectional flow between children and parents.

    The children send "Ready" or "I'm working on task <some string>" messages that are used to respectively send them more tasks ("Do x") or update the task bar with the description provided by the child.

    See also ProcessPoolState.

    type (_, _, _) t

    A ('work, 'final) t process pool accepts tasks of type 'work and produces an array of results of type 'final. 'work and 'final will be marshalled over a Unix pipe.

    module Worker : sig ... end
    val create : - jobs:int -> - child_prologue:(Worker.id -> unit) -> - f:('work -> 'result option) -> - child_epilogue:(Worker.id -> 'final) -> - tasks:(unit -> ('work, 'result) TaskGenerator.t) -> - ('work, 'final, 'result) t

    Create a new pool of processes running jobs jobs in parallel

    val run : (_, 'final, 'result) t -> 'final option IStdlib.IStd.Array.t

    use the processes in the given process pool to run all the given tasks in parallel and return the results of the epilogues

    val run_as_child : unit -> IStdlib.IStd.never_returns

    run a child that has been started by create_process, on platforms where fork is not available. The child will take care of executing the proper code. Once it has started, it receives order from the parent through stdin, and send status updates through stdout.

    \ No newline at end of file +ProcessPool (infer.IBase.ProcessPool)

    Module IBase.ProcessPool

    module TaskGenerator : sig ... end

    Pool of parallel workers that can both receive tasks from the orchestrator process and start doing tasks on their own. Unix pipes are used for communication, all while refreshing a task bar periodically.

    Due to ondemand analysis, workers may do tasks unprompted (eg, when analysing a procedure, a process will typically end up analysing all its callees). Thus, children need to update the main process (which is in charge of the task bar) whenever they start analysing a new procedure, and whenever they resume analysing a previous procedure. This is more complicated than what, eg, `ParMap` can handle because of the bidirectional flow between children and parents.

    The children send "Ready" or "I'm working on task <some string>" messages that are used to respectively send them more tasks ("Do x") or update the task bar with the description provided by the child.

    See also ProcessPoolState.

    type (_, _, _) t

    A ('work, 'final) t process pool accepts tasks of type 'work and produces an array of results of type 'final. 'work and 'final will be marshalled over a Unix pipe.

    module Worker : sig ... end
    val create : + jobs:int -> + child_prologue:(Worker.id -> unit) -> + f:('work -> 'result option) -> + child_epilogue:(Worker.id -> 'final) -> + tasks:(unit -> ('work, 'result) TaskGenerator.t) -> + ('work, 'final, 'result) t

    Create a new pool of processes running jobs jobs in parallel

    val run : (_, 'final, 'result) t -> 'final option IStdlib.IStd.Array.t

    use the processes in the given process pool to run all the given tasks in parallel and return the results of the epilogues

    val run_as_child : unit -> IStdlib.IStd.never_returns

    run a child that has been started by create_process, on platforms where fork is not available. The child will take care of executing the proper code. Once it has started, it receives order from the parent through stdin, and send status updates through stdout.

    diff --git a/website/static/odoc/next/infer/IBase/ProcessPoolState/index.html b/website/static/odoc/next/infer/IBase/ProcessPoolState/index.html index 0eddbacb764..be7a71ec3c2 100644 --- a/website/static/odoc/next/infer/IBase/ProcessPoolState/index.html +++ b/website/static/odoc/next/infer/IBase/ProcessPoolState/index.html @@ -1,2 +1,2 @@ -ProcessPoolState (infer.IBase.ProcessPoolState)

    Module IBase.ProcessPoolState

    val in_child : int option IStdlib.IStd.ref

    Keep track of whether the current execution is in a child process

    val update_status : (Mtime.t -> string -> unit) IStdlib.IStd.ref

    Ping the task bar whenever a new task is started with the start time and a description for the task

    val update_heap_words : (unit -> unit) IStdlib.IStd.ref
    val get_pid : unit -> IStdlib.IStd.Pid.t
    val reset_pid : unit -> unit
    val has_running_children : bool IStdlib.IStd.ref
    \ No newline at end of file +ProcessPoolState (infer.IBase.ProcessPoolState)

    Module IBase.ProcessPoolState

    val in_child : int option IStdlib.IStd.ref

    Keep track of whether the current execution is in a child process

    val update_status : (Mtime.t -> string -> unit) IStdlib.IStd.ref

    Ping the task bar whenever a new task is started with the start time and a description for the task

    val update_heap_words : (unit -> unit) IStdlib.IStd.ref
    val get_pid : unit -> IStdlib.IStd.Pid.t
    val reset_pid : unit -> unit
    val has_running_children : bool IStdlib.IStd.ref
    diff --git a/website/static/odoc/next/infer/IBase/RestartSchedulerException/index.html b/website/static/odoc/next/infer/IBase/RestartSchedulerException/index.html index 5b314a740a2..0966ac4a4a8 100644 --- a/website/static/odoc/next/infer/IBase/RestartSchedulerException/index.html +++ b/website/static/odoc/next/infer/IBase/RestartSchedulerException/index.html @@ -1,2 +1,2 @@ -RestartSchedulerException (infer.IBase.RestartSchedulerException)

    Module IBase.RestartSchedulerException

    exception ProcnameAlreadyLocked of {
    1. dependency_filename : string;
    }

    for the Restart scheduler: raise when a worker tries to analyze a procedure already being analyzed by another process

    val is_not_restart_exception : exn -> bool

    check if the exception passed is the one defined above

    \ No newline at end of file +RestartSchedulerException (infer.IBase.RestartSchedulerException)

    Module IBase.RestartSchedulerException

    exception ProcnameAlreadyLocked of {
    1. dependency_filename : string;
    }

    for the Restart scheduler: raise when a worker tries to analyze a procedure already being analyzed by another process

    val is_not_restart_exception : exn -> bool

    check if the exception passed is the one defined above

    diff --git a/website/static/odoc/next/infer/IBase/ResultsDir/RunState/index.html b/website/static/odoc/next/infer/IBase/ResultsDir/RunState/index.html index 4e45aad5fc9..060e844688b 100644 --- a/website/static/odoc/next/infer/IBase/ResultsDir/RunState/index.html +++ b/website/static/odoc/next/infer/IBase/ResultsDir/RunState/index.html @@ -1,2 +1,2 @@ -RunState (infer.IBase.ResultsDir.RunState)

    Module ResultsDir.RunState

    val add_run_to_sequence : unit -> unit

    add an entry with the current run date

    \ No newline at end of file +RunState (infer.IBase.ResultsDir.RunState)

    Module ResultsDir.RunState

    val add_run_to_sequence : unit -> unit

    add an entry with the current run date

    diff --git a/website/static/odoc/next/infer/IBase/ResultsDir/index.html b/website/static/odoc/next/infer/IBase/ResultsDir/index.html index e7cc553a848..5082c144fd8 100644 --- a/website/static/odoc/next/infer/IBase/ResultsDir/index.html +++ b/website/static/odoc/next/infer/IBase/ResultsDir/index.html @@ -1,2 +1,2 @@ -ResultsDir (infer.IBase.ResultsDir)

    Module IBase.ResultsDir

    module RunState : sig ... end
    val get_path : ResultsDirEntryName.id -> string

    Wrapper around ResultsDirEntryName.get_path that implicitly applies to the current results directory Config.results_dir. If you need to specify another results directory use ResultsDirEntryName directly.

    val assert_results_dir : string -> unit

    Check that the results dir exists and sets up logging, the database, etc.

    val remove_results_dir : unit -> unit

    Recursively delete the results directory.

    val create_results_dir : unit -> unit

    Create the results dir and sets up logging, the database, etc.

    val scrub_for_incremental : unit -> unit

    scrub capture data in preparation of an incremental capture + analysis

    val scrub_for_caching : unit -> unit

    Clean up the results dir to keep only what's relevant to go in a cache (e.g., the distributed Buck cache). In particular, get rid of non-deterministic outputs.

    \ No newline at end of file +ResultsDir (infer.IBase.ResultsDir)

    Module IBase.ResultsDir

    module RunState : sig ... end
    val get_path : ResultsDirEntryName.id -> string

    Wrapper around ResultsDirEntryName.get_path that implicitly applies to the current results directory Config.results_dir. If you need to specify another results directory use ResultsDirEntryName directly.

    val assert_results_dir : string -> unit

    Check that the results dir exists and sets up logging, the database, etc.

    val remove_results_dir : unit -> unit

    Recursively delete the results directory.

    val create_results_dir : unit -> unit

    Create the results dir and sets up logging, the database, etc.

    val scrub_for_incremental : unit -> unit

    scrub capture data in preparation of an incremental capture + analysis

    val scrub_for_caching : unit -> unit

    Clean up the results dir to keep only what's relevant to go in a cache (e.g., the distributed Buck cache). In particular, get rid of non-deterministic outputs.

    diff --git a/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html b/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html index 39fa5c83ff0..dc74081d860 100644 --- a/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html +++ b/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html @@ -1,4 +1,4 @@ -ResultsDirEntryName (infer.IBase.ResultsDirEntryName)

    Module IBase.ResultsDirEntryName

    Entries in the results directory (infer-out/).

    type id =
    1. | AllocationTraces
      (*

      directory for storing allocation traces

      *)
    2. | AnalysisDependencyGraph
      (*

      the inter-procedures dependencies revealed during an analysis phase; used for the replay analysis

      *)
    3. | AnalysisDependencyGraphDot
      (*

      the above in dotty format, for debug

      *)
    4. | AnalysisDependencyInvalidationGraphDot
      (*

      the inter-procedures dependencies revealed during an analysis phase used for invalidating procedure summaries that need re-analyzing, in dotty format for debug

      *)
    5. | AnalysisDB
      (*

      the analysis database

      *)
    6. | AnalysisDBShm
      (*

      SQLite-generated index file for the results database's write-ahead log

      *)
    7. | AnalysisDBWal
      (*

      the results database's write-ahead log generated by SQLite

      *)
    8. | CallGraphCyclesDot
      (*

      cycles in the call graph used for analysis scheduling in dotty format

      *)
    9. | CaptureDB
      (*

      the capture database

      *)
    10. | CaptureDBShm
      (*

      SQLite-generated index file for the capture database's write-ahead log

      *)
    11. | CaptureDBWal
      (*

      the capture database's write-ahead log generated by SQLite

      *)
    12. | CaptureDependencies
      (*

      list of infer-out/ directories that contain capture artefacts

      *)
    13. | ChangedFunctions
      (*

      results of the clang test determinator

      *)
    14. | ChangedFunctionsTempResults
      (*

      a directory for temporary ChangedFunctions files

      *)
    15. | DatalogFacts
      (*

      directory for datalog facts

      *)
    16. | DBWriterSocket
      (*

      socket to the DBWriter process for serializing writes to SQLite

      *)
    17. | Debug
      (*

      directory containing debug data

      *)
    18. | Differential
      (*

      contains the results of infer reportdiff

      *)
    19. | DuplicateFunctions
      (*

      list of duplicated functions

      *)
    20. | GlobalTypeEnvironment
      (*

      internal IR.Tenv.t object corresponding to the whole project

      *)
    21. | Logs
      (*

      log file

      *)
    22. | MissingSourceFiles
      (*

      Source files missing during analysis

      *)
    23. | MissingProcedures
      (*

      Procedures missing during analysis

      *)
    24. | PerfEvents
      (*

      file containing events for performance profiling

      *)
    25. | ProcnamesLocks
      (*

      directory of per-IR.Procname.t file locks, used by the analysis scheduler in certain modes

      *)
    26. | ReportConfigImpactJson
      (*

      reports of the config impact analysis

      *)
    27. | ReportCostsJson
      (*

      reports of the costs analysis

      *)
    28. | ReportHtml
      (*

      directory of the HTML report

      *)
    29. | ReportJson
      (*

      the main product of the analysis: report.json

      *)
    30. | ReportSarif
      (*

      a sarif version of report.json: report.sarif

      *)
    31. | ReportText
      (*

      a human-readable textual version of report.json

      *)
    32. | ReportXML
      (*

      a PMD-style XML version of report.json

      *)
    33. | RetainCycles
      (*

      directory of retain cycles dotty files

      *)
    34. | RunState
      (*

      internal data about the last infer run

      *)
    35. | Stats
      (*

      internal statistics about the infer run

      *)
    36. | SyntacticDependencyGraphDot
      (*

      the inter-procedures dependencies obtained by syntactically inspecting the source of each procedure and recording the (static) calls it makes during an analysis phase; used by the callgraph analysis scheduler and presented here in dotty format for debug purposes

      *)
    37. | Temporary
      (*

      directory containing temp files

      *)
    38. | TestDeterminatorReport
      (*

      the report produced by the test determinator capture mode

      *)
    39. | TestDeterminatorTempResults
      (*

      a directory for temporary TestDeterminatorReport files

      *)
    val get_path : results_dir:string -> id -> string

    the absolute path for the given entry

    val to_keep_before_incremental_capture_and_analysis : - results_dir:string -> - string list

    utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

    val to_keep_before_caching_capture : results_dir:string -> string list

    utility for ResultsDir.scrub_for_caching, you probably want to use that instead

    val to_keep_before_new_capture : results_dir:string -> string list

    utility for ResultsDir.remove_results_dir, you probably want to use that instead

    val db_writer_socket_name : string

    see comment in DBWriter as to why we need the relative path of the socket

    val infer_deps_file_name : string

    sad that we have to have this here but some code path is looking for all files with that name in buck-out/

    \ No newline at end of file +ResultsDirEntryName (infer.IBase.ResultsDirEntryName)

    Module IBase.ResultsDirEntryName

    Entries in the results directory (infer-out/).

    type id =
    1. | AllocationTraces
      (*

      directory for storing allocation traces

      *)
    2. | AnalysisDependencyGraph
      (*

      the inter-procedures dependencies revealed during an analysis phase; used for the replay analysis

      *)
    3. | AnalysisDependencyGraphDot
      (*

      the above in dotty format, for debug

      *)
    4. | AnalysisDependencyInvalidationGraphDot
      (*

      the inter-procedures dependencies revealed during an analysis phase used for invalidating procedure summaries that need re-analyzing, in dotty format for debug

      *)
    5. | AnalysisDB
      (*

      the analysis database

      *)
    6. | AnalysisDBShm
      (*

      SQLite-generated index file for the results database's write-ahead log

      *)
    7. | AnalysisDBWal
      (*

      the results database's write-ahead log generated by SQLite

      *)
    8. | CallGraphCyclesDot
      (*

      cycles in the call graph used for analysis scheduling in dotty format

      *)
    9. | CaptureDB
      (*

      the capture database

      *)
    10. | CaptureDBShm
      (*

      SQLite-generated index file for the capture database's write-ahead log

      *)
    11. | CaptureDBWal
      (*

      the capture database's write-ahead log generated by SQLite

      *)
    12. | CaptureDependencies
      (*

      list of infer-out/ directories that contain capture artefacts

      *)
    13. | ChangedFunctions
      (*

      results of the clang test determinator

      *)
    14. | ChangedFunctionsTempResults
      (*

      a directory for temporary ChangedFunctions files

      *)
    15. | DatalogFacts
      (*

      directory for datalog facts

      *)
    16. | DBWriterSocket
      (*

      socket to the DBWriter process for serializing writes to SQLite

      *)
    17. | Debug
      (*

      directory containing debug data

      *)
    18. | Differential
      (*

      contains the results of infer reportdiff

      *)
    19. | DuplicateFunctions
      (*

      list of duplicated functions

      *)
    20. | GlobalTypeEnvironment
      (*

      internal IR.Tenv.t object corresponding to the whole project

      *)
    21. | Logs
      (*

      log file

      *)
    22. | MissingSourceFiles
      (*

      Source files missing during analysis

      *)
    23. | MissingProcedures
      (*

      Procedures missing during analysis

      *)
    24. | PerfEvents
      (*

      file containing events for performance profiling

      *)
    25. | ProcnamesLocks
      (*

      directory of per-IR.Procname.t file locks, used by the analysis scheduler in certain modes

      *)
    26. | ReportConfigImpactJson
      (*

      reports of the config impact analysis

      *)
    27. | ReportCostsJson
      (*

      reports of the costs analysis

      *)
    28. | ReportHtml
      (*

      directory of the HTML report

      *)
    29. | ReportJson
      (*

      the main product of the analysis: report.json

      *)
    30. | ReportSarif
      (*

      a sarif version of report.json: report.sarif

      *)
    31. | ReportText
      (*

      a human-readable textual version of report.json

      *)
    32. | ReportXML
      (*

      a PMD-style XML version of report.json

      *)
    33. | RetainCycles
      (*

      directory of retain cycles dotty files

      *)
    34. | RunState
      (*

      internal data about the last infer run

      *)
    35. | Stats
      (*

      internal statistics about the infer run

      *)
    36. | SyntacticDependencyGraphDot
      (*

      the inter-procedures dependencies obtained by syntactically inspecting the source of each procedure and recording the (static) calls it makes during an analysis phase; used by the callgraph analysis scheduler and presented here in dotty format for debug purposes

      *)
    37. | Temporary
      (*

      directory containing temp files

      *)
    38. | TestDeterminatorReport
      (*

      the report produced by the test determinator capture mode

      *)
    39. | TestDeterminatorTempResults
      (*

      a directory for temporary TestDeterminatorReport files

      *)
    val get_path : results_dir:string -> id -> string

    the absolute path for the given entry

    val to_keep_before_incremental_capture_and_analysis : + results_dir:string -> + string list

    utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

    val to_keep_before_caching_capture : results_dir:string -> string list

    utility for ResultsDir.scrub_for_caching, you probably want to use that instead

    val to_keep_before_new_capture : results_dir:string -> string list

    utility for ResultsDir.remove_results_dir, you probably want to use that instead

    val db_writer_socket_name : string

    see comment in DBWriter as to why we need the relative path of the socket

    val infer_deps_file_name : string

    sad that we have to have this here but some code path is looking for all files with that name in buck-out/

    diff --git a/website/static/odoc/next/infer/IBase/Scuba/index.html b/website/static/odoc/next/infer/IBase/Scuba/index.html index 5fce45963a3..3e0df69d1ba 100644 --- a/website/static/odoc/next/infer/IBase/Scuba/index.html +++ b/website/static/odoc/next/infer/IBase/Scuba/index.html @@ -1,2 +1,2 @@ -Scuba (infer.IBase.Scuba)

    Module IBase.Scuba

    Low-level Scuba logging functionality. Provides functionality to log anything to any scuba table. (Note that Scuba is a schema-free storage, so it won't require any changes). Don't use this module directly for logging to tables with known structure. Use high-level functions that are aware of the table structure.

    type table =
    1. | InferEvents

    A scuba table

    type sample

    A sample to be added to Scuba

    val new_sample : time:int option -> sample

    Create an empty sample with given creation timestamp. If time is not specified, corresponds to current timestamp.

    val add_int : name:string -> value:int -> sample -> sample

    Set a new integer field and its value to the sample. Overwrites if a field with this name was already set.

    val add_normal : name:string -> value:string -> sample -> sample

    Set a new string (normal in Scuba terminology) field and its value to the sample. Overwrites if a field with this name was already set.

    val add_tagset : name:string -> value:string list -> sample -> sample

    Set a new set of strings (tagset in Scuba terminology) field and its value to the sample. Overwrites if a field with this name was already set.

    val log : table -> sample list -> unit

    The main function. Log a collection of samples to the given table.

    val sample_to_json : sample -> Yojson.t
    \ No newline at end of file +Scuba (infer.IBase.Scuba)

    Module IBase.Scuba

    Low-level Scuba logging functionality. Provides functionality to log anything to any scuba table. (Note that Scuba is a schema-free storage, so it won't require any changes). Don't use this module directly for logging to tables with known structure. Use high-level functions that are aware of the table structure.

    type table =
    1. | InferEvents

    A scuba table

    type sample

    A sample to be added to Scuba

    val new_sample : time:int option -> sample

    Create an empty sample with given creation timestamp. If time is not specified, corresponds to current timestamp.

    val add_int : name:string -> value:int -> sample -> sample

    Set a new integer field and its value to the sample. Overwrites if a field with this name was already set.

    val add_normal : name:string -> value:string -> sample -> sample

    Set a new string (normal in Scuba terminology) field and its value to the sample. Overwrites if a field with this name was already set.

    val add_tagset : name:string -> value:string list -> sample -> sample

    Set a new set of strings (tagset in Scuba terminology) field and its value to the sample. Overwrites if a field with this name was already set.

    val log : table -> sample list -> unit

    The main function. Log a collection of samples to the given table.

    val sample_to_json : sample -> Yojson.t
    diff --git a/website/static/odoc/next/infer/IBase/ScubaLogging/index.html b/website/static/odoc/next/infer/IBase/ScubaLogging/index.html index 2d24b6e451f..d2ec2a650f1 100644 --- a/website/static/odoc/next/infer/IBase/ScubaLogging/index.html +++ b/website/static/odoc/next/infer/IBase/ScubaLogging/index.html @@ -1,7 +1,7 @@ -ScubaLogging (infer.IBase.ScubaLogging)

    Module IBase.ScubaLogging

    Functionality for logging into "infer_events" Scuba table. The table is organized in form of key-value pairs. Two most important fields are "event" and "value". Other fields in the table correspond to things common for this particular run of Infer.

    val log_many : LogEntry.t list -> unit

    Log several events in one go. Useful when you do custom aggregations and have a place to log all aggregated results at once.

    val log_count : label:string -> value:int -> unit

    Log anything that can be counted. Events will be prefixed with "count."

    val log_duration : label:string -> duration_us:int -> unit

    Log elapsed time. Events will be prefixed with "time."

    val log_message : label:string -> message:string -> unit

    Log a string. Event is prefixed with "msg."

    val log_message_with_location : - label:string -> - loc:string -> - message:string -> +ScubaLogging (infer.IBase.ScubaLogging)

    Module IBase.ScubaLogging

    Functionality for logging into "infer_events" Scuba table. The table is organized in form of key-value pairs. Two most important fields are "event" and "value". Other fields in the table correspond to things common for this particular run of Infer.

    val log_many : LogEntry.t list -> unit

    Log several events in one go. Useful when you do custom aggregations and have a place to log all aggregated results at once.

    val log_count : label:string -> value:int -> unit

    Log anything that can be counted. Events will be prefixed with "count."

    val log_duration : label:string -> duration_us:int -> unit

    Log elapsed time. Events will be prefixed with "time."

    val log_message : label:string -> message:string -> unit

    Log a string. Event is prefixed with "msg."

    val log_message_with_location : + label:string -> + loc:string -> + message:string -> unit
    val execute_with_time_logging : string -> (unit -> 'a) -> 'a

    A helper to log execution time of a particular function. Use this to measure a performance of a given function. Example:

    let f a b = <some code>
    -let f a b = ScubaLogging.execute_with_time_logging "f" (fun () -> f a b)
    val register_global_log_flushing_at_exit : unit -> unit
    \ No newline at end of file +let f a b = ScubaLogging.execute_with_time_logging "f" (fun () -> f a b)
    val register_global_log_flushing_at_exit : unit -> unit
    diff --git a/website/static/odoc/next/infer/IBase/Serialization/Key/index.html b/website/static/odoc/next/infer/IBase/Serialization/Key/index.html index 47cae6ada27..8f0897686ce 100644 --- a/website/static/odoc/next/infer/IBase/Serialization/Key/index.html +++ b/website/static/odoc/next/infer/IBase/Serialization/Key/index.html @@ -1,2 +1,2 @@ -Key (infer.IBase.Serialization.Key)

    Module Serialization.Key

    type t

    Serialization key, used to distinguish versions of serializers and avoid assert faults

    val tenv : t

    current key for tenv

    \ No newline at end of file +Key (infer.IBase.Serialization.Key)

    Module Serialization.Key

    type t

    Serialization key, used to distinguish versions of serializers and avoid assert faults

    val tenv : t

    current key for tenv

    diff --git a/website/static/odoc/next/infer/IBase/Serialization/index.html b/website/static/odoc/next/infer/IBase/Serialization/index.html index 7cb09e87e0b..29e8e638737 100644 --- a/website/static/odoc/next/infer/IBase/Serialization/index.html +++ b/website/static/odoc/next/infer/IBase/Serialization/index.html @@ -1,2 +1,2 @@ -Serialization (infer.IBase.Serialization)

    Module IBase.Serialization

    Serialization of data stuctures

    module Key : sig ... end
    type 'a serializer

    Generic serializer

    val create_serializer : Key.t -> 'a serializer

    create a serializer from a file name given an integer key used as double-check of the file type

    val read_from_file : 'a serializer -> DB.filename -> 'a option

    Deserialize a file and check the keys

    val write_to_file : 'a serializer -> data:'a -> DB.filename -> unit

    Serialize into a file writing value

    val generate_keys : unit -> int * int * int

    Generate new (random) serialization keys, to be used in an ocaml toplevel

    \ No newline at end of file +Serialization (infer.IBase.Serialization)

    Module IBase.Serialization

    Serialization of data stuctures

    module Key : sig ... end
    type 'a serializer

    Generic serializer

    val create_serializer : Key.t -> 'a serializer

    create a serializer from a file name given an integer key used as double-check of the file type

    val read_from_file : 'a serializer -> DB.filename -> 'a option

    Deserialize a file and check the keys

    val write_to_file : 'a serializer -> data:'a -> DB.filename -> unit

    Serialize into a file writing value

    val generate_keys : unit -> int * int * int

    Generate new (random) serialization keys, to be used in an ocaml toplevel

    diff --git a/website/static/odoc/next/infer/IBase/SourceFile/HashSet/index.html b/website/static/odoc/next/infer/IBase/SourceFile/HashSet/index.html index f5b4ea90c7f..ceb5e9aeead 100644 --- a/website/static/odoc/next/infer/IBase/SourceFile/HashSet/index.html +++ b/website/static/odoc/next/infer/IBase/SourceFile/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.IBase.SourceFile.HashSet)

    Module SourceFile.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.IBase.SourceFile.HashSet)

    Module SourceFile.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IBase/SourceFile/SQLite/index.html b/website/static/odoc/next/infer/IBase/SourceFile/SQLite/index.html index 2d81f6271b4..761e774aaea 100644 --- a/website/static/odoc/next/infer/IBase/SourceFile/SQLite/index.html +++ b/website/static/odoc/next/infer/IBase/SourceFile/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IBase.SourceFile.SQLite)

    Module SourceFile.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLite (infer.IBase.SourceFile.SQLite)

    Module SourceFile.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IBase/SourceFile/index.html b/website/static/odoc/next/infer/IBase/SourceFile/index.html index 218aa96d065..f1c4e97b25a 100644 --- a/website/static/odoc/next/infer/IBase/SourceFile/index.html +++ b/website/static/odoc/next/infer/IBase/SourceFile/index.html @@ -1,2 +1,2 @@ -SourceFile (infer.IBase.SourceFile)

    Module IBase.SourceFile

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    module Map : IStdlib.IStd.Caml.Map.S with type key = t

    Maps from source_file

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set of source files

    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Mutable hash tables and sets keyed on source files

    module HashSet : IStdlib.HashSet.S with type elt = t
    val is_invalid : t -> bool

    Is the source file the invalid source file?

    val read_config_changed_files : unit -> Set.t option

    return the list of changed files as read from Config.changed_files_index. NOTE: it may include extra source_files if --changed-files-index contains paths to header files.

    val read_config_files_to_analyze : unit -> Set.t option

    return the list of files as read from Config.files_to_analyze_index. NOTE: it may include extra source_files if --changed-files-index contains paths to header files.

    val invalid : string -> t

    Invalid source file

    val equal : t -> t -> bool

    equality of source files

    val from_abs_path : ?warn_on_error:bool -> string -> t

    create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

    val create : ?check_abs_path:bool -> ?check_rel_path:bool -> string -> t

    Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: if check_abs_path (check_rel_path) is true then a warning message is shown if the provided path is absolute (relative) and an error occurs when resolving (e.g. if it does not exist).

    val is_under_project_root : t -> bool

    Returns true if the file is under the project root or the workspace directory if it exists

    val of_header : ?warn_on_error:bool -> t -> t option

    Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

    val pp : Stdlib.Format.formatter -> t -> unit

    pretty print t

    val to_abs_path : t -> string

    get the full path of a source file

    val to_rel_path : t -> string

    get the relative path of a source file

    val to_string : ?force_relative:bool -> t -> string

    convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

    val has_extension : ext:string -> t -> bool

    returns whether the source file has provided extension

    val is_matching : Str.regexp list -> t -> bool

    Check if the source file path is matching with a regexp of the given regexp list.

    module SQLite : SqliteUtils.Data with type t = t
    \ No newline at end of file +SourceFile (infer.IBase.SourceFile)

    Module IBase.SourceFile

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    module Map : IStdlib.IStd.Caml.Map.S with type key = t

    Maps from source_file

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set of source files

    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Mutable hash tables and sets keyed on source files

    module HashSet : IStdlib.HashSet.S with type elt = t
    val is_invalid : t -> bool

    Is the source file the invalid source file?

    val read_config_changed_files : unit -> Set.t option

    return the list of changed files as read from Config.changed_files_index. NOTE: it may include extra source_files if --changed-files-index contains paths to header files.

    val read_config_files_to_analyze : unit -> Set.t option

    return the list of files as read from Config.files_to_analyze_index. NOTE: it may include extra source_files if --changed-files-index contains paths to header files.

    val invalid : string -> t

    Invalid source file

    val equal : t -> t -> bool

    equality of source files

    val from_abs_path : ?warn_on_error:bool -> string -> t

    create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

    val create : ?check_abs_path:bool -> ?check_rel_path:bool -> string -> t

    Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: if check_abs_path (check_rel_path) is true then a warning message is shown if the provided path is absolute (relative) and an error occurs when resolving (e.g. if it does not exist).

    val is_under_project_root : t -> bool

    Returns true if the file is under the project root or the workspace directory if it exists

    val of_header : ?warn_on_error:bool -> t -> t option

    Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

    val pp : Stdlib.Format.formatter -> t -> unit

    pretty print t

    val to_abs_path : t -> string

    get the full path of a source file

    val to_rel_path : t -> string

    get the relative path of a source file

    val to_string : ?force_relative:bool -> t -> string

    convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

    val has_extension : ext:string -> t -> bool

    returns whether the source file has provided extension

    val is_matching : IStdlib.IStd.Str.regexp list -> t -> bool

    Check if the source file path is matching with a regexp of the given regexp list.

    module SQLite : SqliteUtils.Data with type t = t
    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/argument-1-D/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/argument-1-D/index.html index 5f653261916..cddd652ae73 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/argument-1-D/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/argument-1-D/index.html @@ -1,2 +1,2 @@ -D (infer.IBase.SqliteUtils.MarshalledDataNOTForComparison.D)

    Parameter MarshalledDataNOTForComparison.D

    type t
    \ No newline at end of file +D (infer.IBase.SqliteUtils.MarshalledDataNOTForComparison.D)

    Parameter MarshalledDataNOTForComparison.D

    type t
    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/index.html index 4008c570419..e0e11b6fcee 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledDataNOTForComparison/index.html @@ -1,2 +1,2 @@ -MarshalledDataNOTForComparison (infer.IBase.SqliteUtils.MarshalledDataNOTForComparison)

    Module SqliteUtils.MarshalledDataNOTForComparison

    A default implementation of the Data API that encodes every objects as marshalled blobs

    Parameters

    module D : sig ... end

    Signature

    type t = D.t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +MarshalledDataNOTForComparison (infer.IBase.SqliteUtils.MarshalledDataNOTForComparison)

    Module SqliteUtils.MarshalledDataNOTForComparison

    A default implementation of the Data API that encodes every objects as marshalled blobs

    Parameters

    module D : sig ... end

    Signature

    type t = D.t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/argument-1-D/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/argument-1-D/index.html index f74a22b4df7..96cfd8d0e9c 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/argument-1-D/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/argument-1-D/index.html @@ -1,2 +1,2 @@ -D (infer.IBase.SqliteUtils.MarshalledNullableDataNOTForComparison.D)

    Parameter MarshalledNullableDataNOTForComparison.D

    type t
    \ No newline at end of file +D (infer.IBase.SqliteUtils.MarshalledNullableDataNOTForComparison.D)

    Parameter MarshalledNullableDataNOTForComparison.D

    type t
    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/index.html index 11d63fdbf58..14effa33998 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/MarshalledNullableDataNOTForComparison/index.html @@ -1,2 +1,2 @@ -MarshalledNullableDataNOTForComparison (infer.IBase.SqliteUtils.MarshalledNullableDataNOTForComparison)

    Module SqliteUtils.MarshalledNullableDataNOTForComparison

    A default implementation of the Data API that encodes None as a NULL SQLite value

    Parameters

    module D : sig ... end

    Signature

    type t = D.t option
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +MarshalledNullableDataNOTForComparison (infer.IBase.SqliteUtils.MarshalledNullableDataNOTForComparison)

    Module SqliteUtils.MarshalledNullableDataNOTForComparison

    A default implementation of the Data API that encodes None as a NULL SQLite value

    Parameters

    module D : sig ... end

    Signature

    type t = D.t option
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/index.html index 037542817cc..d1add65e94a 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/index.html @@ -1,42 +1,42 @@ -SqliteUtils (infer.IBase.SqliteUtils)

    Module IBase.SqliteUtils

    exception Error of string

    The functions in this module tend to raise more often than their counterparts in Sqlite3. In particular, they may raise if the Sqlite3.Rc.t result of certain operations is unexpected.

    exception DataTooBig

    Raised from serializers when final size exceeds Sqlite3 limits (normally 1000_000_000 bytes).

    val check_result_code : Sqlite3.db -> log:string -> Sqlite3.Rc.t -> unit

    Assert that the result is either Sqlite3.Rc.OK or Sqlite3.Rc.ROW. If the result is not valid, raise Error.

    val exec : Sqlite3.db -> log:string -> stmt:string -> unit

    Execute the given Sqlite stmt and check the result with check_result_code.

    val finalize : Sqlite3.db -> log:string -> Sqlite3.stmt -> unit

    Finalize the given stmt. Raises Error on failure.

    val result_fold_rows : - ?finalize:bool -> +SqliteUtils (infer.IBase.SqliteUtils)

    Module IBase.SqliteUtils

    exception Error of string

    The functions in this module tend to raise more often than their counterparts in Sqlite3. In particular, they may raise if the Sqlite3.Rc.t result of certain operations is unexpected.

    exception DataTooBig

    Raised from serializers when final size exceeds Sqlite3 limits (normally 1000_000_000 bytes).

    val check_result_code : Sqlite3.db -> log:string -> Sqlite3.Rc.t -> unit

    Assert that the result is either Sqlite3.Rc.OK or Sqlite3.Rc.ROW. If the result is not valid, raise Error.

    val exec : Sqlite3.db -> log:string -> stmt:string -> unit

    Execute the given Sqlite stmt and check the result with check_result_code.

    val finalize : Sqlite3.db -> log:string -> Sqlite3.stmt -> unit

    Finalize the given stmt. Raises Error on failure.

    val result_fold_rows : + ?finalize:bool -> Sqlite3.db -> - log:string -> + log:string -> Sqlite3.stmt -> - init:'a -> - f:('a -> Sqlite3.stmt -> 'a) -> + init:'a -> + f:('a -> Sqlite3.stmt -> 'a) -> 'a

    Fold f over each row of the result. f must not access the database.

    val result_fold_single_column_rows : - ?finalize:bool -> + ?finalize:bool -> Sqlite3.db -> - log:string -> + log:string -> Sqlite3.stmt -> - init:'b -> - f:('b -> Sqlite3.Data.t -> 'b) -> + init:'b -> + f:('b -> Sqlite3.Data.t -> 'b) -> 'b

    Like result_fold_rows but pass column 0 of each row in the results to f.

    val result_option : - ?finalize:bool -> + ?finalize:bool -> Sqlite3.db -> - log:string -> - read_row:(Sqlite3.stmt -> 'a) -> + log:string -> + read_row:(Sqlite3.stmt -> 'a) -> Sqlite3.stmt -> 'a option

    Same as result_fold_rows but asserts that at most one row is returned.

    val result_single_column_option : - ?finalize:bool -> + ?finalize:bool -> Sqlite3.db -> - log:string -> + log:string -> Sqlite3.stmt -> Sqlite3.Data.t option

    Same as result_fold_single_column_rows but asserts that at most one row is returned.

    val result_unit : - ?finalize:bool -> + ?finalize:bool -> Sqlite3.db -> - log:string -> + log:string -> Sqlite3.stmt -> unit

    Same as result_fold_rows but asserts that no row is returned.

    val db_close : Sqlite3.db -> unit

    Close the given database and asserts that it was effective. Raises Error if not.

    val with_attached_db : - db_file:string -> - db_name:string -> - ?immutable:bool -> - f:(unit -> 'a) -> + db_file:string -> + db_name:string -> + ?immutable:bool -> + f:(unit -> 'a) -> Sqlite3.db -> - 'a

    Attach the given db_file as db_name, execute f, then detach. If immutable=true, attach the database with the immutable Sqlite flag. See https://www.sqlite.org/uri.html for more info.

    val transaction : ?immediate:bool -> Sqlite3.db -> f:(unit -> 'a) -> 'a

    Run f as a transaction.

    module type Data = sig ... end

    An API commonly needed to store and retrieve objects from the database

    Attach the given db_file as db_name, execute f, then detach. If immutable=true, attach the database with the immutable Sqlite flag. See https://www.sqlite.org/uri.html for more info.

    val transaction : ?immediate:bool -> Sqlite3.db -> f:(unit -> 'a) -> 'a

    Run f as a transaction.

    module type Data = sig ... end

    An API commonly needed to store and retrieve objects from the database

    module MarshalledDataNOTForComparison (D : sig ... end) : Data with type t = D.t

    A default implementation of the Data API that encodes every objects as marshalled blobs

    module MarshalledNullableDataNOTForComparison (D : sig ... end) : - Data with type t = D.t option

    A default implementation of the Data API that encodes None as a NULL SQLite value

    \ No newline at end of file + Data with type t = D.t option

    A default implementation of the Data API that encodes None as a NULL SQLite value

    diff --git a/website/static/odoc/next/infer/IBase/SqliteUtils/module-type-Data/index.html b/website/static/odoc/next/infer/IBase/SqliteUtils/module-type-Data/index.html index ce267b44959..0e2cb554a99 100644 --- a/website/static/odoc/next/infer/IBase/SqliteUtils/module-type-Data/index.html +++ b/website/static/odoc/next/infer/IBase/SqliteUtils/module-type-Data/index.html @@ -1,2 +1,2 @@ -Data (infer.IBase.SqliteUtils.Data)

    Module type SqliteUtils.Data

    An API commonly needed to store and retrieve objects from the database

    type t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +Data (infer.IBase.SqliteUtils.Data)

    Module type SqliteUtils.Data

    An API commonly needed to store and retrieve objects from the database

    type t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IBase/Stats/index.html b/website/static/odoc/next/infer/IBase/Stats/index.html index 04c05150ed8..a85b33a46c6 100644 --- a/website/static/odoc/next/infer/IBase/Stats/index.html +++ b/website/static/odoc/next/infer/IBase/Stats/index.html @@ -1,2 +1,2 @@ -Stats (infer.IBase.Stats)

    Module IBase.Stats

    collect statistics about backend/analysis operations

    type t
    val incr_summary_file_try_load : unit -> unit

    a query to the filesystem attempting to load a summary file

    val incr_summary_read_from_disk : unit -> unit

    a summary file is deserialized from disk

    val incr_summary_cache_hits : unit -> unit
    val incr_summary_cache_misses : unit -> unit
    val incr_ondemand_procs_analyzed : unit -> unit
    val add_to_proc_locker_lock_time : ExecutionDuration.t -> unit
    val add_to_proc_locker_unlock_time : ExecutionDuration.t -> unit
    val add_to_restart_scheduler_total_time : ExecutionDuration.t -> unit
    val add_to_restart_scheduler_useful_time : ExecutionDuration.t -> unit
    val incr_pulse_aliasing_contradictions : unit -> unit
    val incr_pulse_args_length_contradictions : unit -> unit
    val incr_pulse_captured_vars_length_contradictions : unit -> unit
    val add_pulse_disjuncts_dropped : int -> unit
    val add_pulse_interrupted_loops : int -> unit
    val incr_pulse_summaries_contradictions : unit -> unit
    val add_pulse_summaries_count : int -> unit
    val add_proc_duration_us : string -> string -> int -> unit
    val incr_topl_reachable_calls : unit -> unit
    val incr_timeouts : unit -> unit
    val add_timing : Timeable.t -> float -> unit
    val set_process_times : ExecutionDuration.t -> unit
    val set_useful_times : ExecutionDuration.t -> unit
    val incr_spec_store_times : ExecutionDuration.counter -> unit
    val reset : unit -> unit

    reset all stats

    val get : unit -> t

    get the stats so far

    val log_aggregate : t list -> unit

    log aggregated stats to infer's log file and to Scuba

    \ No newline at end of file +Stats (infer.IBase.Stats)

    Module IBase.Stats

    collect statistics about backend/analysis operations

    type t
    val incr_summary_file_try_load : unit -> unit

    a query to the filesystem attempting to load a summary file

    val incr_summary_read_from_disk : unit -> unit

    a summary file is deserialized from disk

    val incr_summary_cache_hits : unit -> unit
    val incr_summary_cache_misses : unit -> unit
    val incr_ondemand_procs_analyzed : unit -> unit
    val add_to_proc_locker_lock_time : ExecutionDuration.t -> unit
    val add_to_proc_locker_unlock_time : ExecutionDuration.t -> unit
    val add_to_restart_scheduler_total_time : ExecutionDuration.t -> unit
    val add_to_restart_scheduler_useful_time : ExecutionDuration.t -> unit
    val incr_pulse_aliasing_contradictions : unit -> unit
    val incr_pulse_args_length_contradictions : unit -> unit
    val incr_pulse_captured_vars_length_contradictions : unit -> unit
    val add_pulse_disjuncts_dropped : int -> unit
    val add_pulse_interrupted_loops : int -> unit
    val incr_pulse_summaries_contradictions : unit -> unit
    val incr_pulse_summaries_unsat_for_caller : unit -> unit
    val incr_pulse_summaries_with_some_unreachable_nodes : unit -> unit
    val incr_pulse_summaries_with_some_unreachable_returns : unit -> unit
    val incr_pulse_summaries_count_0_continue_program : unit -> unit
    val add_pulse_summaries_count : int -> unit
    val add_proc_duration_us : string -> string -> int -> unit
    val incr_topl_reachable_calls : unit -> unit
    val incr_timeouts : unit -> unit
    val add_timing : Timeable.t -> float -> unit
    val set_process_times : ExecutionDuration.t -> unit
    val set_useful_times : ExecutionDuration.t -> unit
    val incr_spec_store_times : ExecutionDuration.counter -> unit
    val reset : unit -> unit

    reset all stats

    val get : unit -> t

    get the stats so far

    val log_aggregate : t list -> unit

    log aggregated stats to infer's log file and to Scuba

    diff --git a/website/static/odoc/next/infer/IBase/TaskBar/index.html b/website/static/odoc/next/infer/IBase/TaskBar/index.html index fc34b4fa567..faabfa29c61 100644 --- a/website/static/odoc/next/infer/IBase/TaskBar/index.html +++ b/website/static/odoc/next/infer/IBase/TaskBar/index.html @@ -1,8 +1,8 @@ -TaskBar (infer.IBase.TaskBar)

    Module IBase.TaskBar

    type t
    val refresh : t -> unit

    draw the taskbar

    val create : jobs:int -> t

    creates a task bar for running jobs jobs in parallel

    val update_status : +TaskBar (infer.IBase.TaskBar)

    Module IBase.TaskBar

    type t
    val refresh : t -> unit

    draw the taskbar

    val create : jobs:int -> t

    creates a task bar for running jobs jobs in parallel

    val update_status : t -> - slot:int -> + slot:int -> Mtime.t -> - ?heap_words:int -> + ?heap_words:int -> string -> - unit

    update_status task_bar ~slot t ?heap_words status records an event described by status on slot slot started at time t with total size of the major heap heap_words

    val update_heap_words : t -> slot:int -> int -> unit

    update_heap_words task_bar ~slot heap_words records heap_words on slot slot

    val set_tasks_total : t -> int -> unit

    set the total number of tasks to do

    val tasks_done_reset : t -> unit

    record that 0 tasks have been completed so far

    val set_remaining_tasks : t -> int -> unit

    set the number of tasks remaining to complete

    val finish : t -> unit

    tear down the task bar and ready the terminal for more output

    \ No newline at end of file + unit

    update_status task_bar ~slot t ?heap_words status records an event described by status on slot slot started at time t with total size of the major heap heap_words

    val update_heap_words : t -> slot:int -> int -> unit

    update_heap_words task_bar ~slot heap_words records heap_words on slot slot

    val set_tasks_total : t -> int -> unit

    set the total number of tasks to do

    val tasks_done_reset : t -> unit

    record that 0 tasks have been completed so far

    val set_remaining_tasks : t -> int -> unit

    set the number of tasks remaining to complete

    val finish : t -> unit

    tear down the task bar and ready the terminal for more output

    diff --git a/website/static/odoc/next/infer/IBase/Timeable/index.html b/website/static/odoc/next/infer/IBase/Timeable/index.html index 2c675b18b34..610d41c959f 100644 --- a/website/static/odoc/next/infer/IBase/Timeable/index.html +++ b/website/static/odoc/next/infer/IBase/Timeable/index.html @@ -1,2 +1,2 @@ -Timeable (infer.IBase.Timeable)

    Module IBase.Timeable

    type t =
    1. | Checker of Checker.t
    2. | Preanalysis
      (*

      the "pre-analysis" phase of a procedure, before we run the checkers

      *)

    types of everything we might possibly want to time

    val to_string : t -> string
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    val mk_map_of_all : init:'a -> 'a Map.t

    mk_map_of_all ~init is a map timeable -> init for all timeable keys

    \ No newline at end of file +Timeable (infer.IBase.Timeable)

    Module IBase.Timeable

    type t =
    1. | Checker of Checker.t
    2. | Preanalysis
      (*

      the "pre-analysis" phase of a procedure, before we run the checkers

      *)

    types of everything we might possibly want to time

    val to_string : t -> string
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    val mk_map_of_all : init:'a -> 'a Map.t

    mk_map_of_all ~init is a map timeable -> init for all timeable keys

    diff --git a/website/static/odoc/next/infer/IBase/Timer/index.html b/website/static/odoc/next/infer/IBase/Timer/index.html index 29eff42d037..38610928e73 100644 --- a/website/static/odoc/next/infer/IBase/Timer/index.html +++ b/website/static/odoc/next/infer/IBase/Timer/index.html @@ -1,2 +1,2 @@ -Timer (infer.IBase.Timer)

    Module IBase.Timer

    Time long-running operations listed in Timeable under a timeout

    type state
    exception Timeout of float
    val check_timeout : unit -> unit

    check if the timer has been running for more than Config.timeout seconds

    val time : Timeable.t -> on_timeout:(float -> 'a) -> f:(unit -> 'a) -> 'a
    val suspend : unit -> state
    val resume : state -> unit
    \ No newline at end of file +Timer (infer.IBase.Timer)

    Module IBase.Timer

    Time long-running operations listed in Timeable under a timeout

    type state
    exception Timeout of float
    val check_timeout : unit -> unit

    check if the timer has been running for more than Config.timeout seconds

    val time : Timeable.t -> on_timeout:(float -> 'a) -> f:(unit -> 'a) -> 'a
    val suspend : unit -> state
    val resume : state -> unit
    diff --git a/website/static/odoc/next/infer/IBase/Timings/index.html b/website/static/odoc/next/infer/IBase/Timings/index.html index 8eade67913c..35f70c6e38f 100644 --- a/website/static/odoc/next/infer/IBase/Timings/index.html +++ b/website/static/odoc/next/infer/IBase/Timings/index.html @@ -1,2 +1,2 @@ -Timings (infer.IBase.Timings)

    Module IBase.Timings

    Data structure to collect timing percentile informations on all Timeable.t elements

    type t
    val init : t
    val add : Timeable.t -> float -> t -> t

    register a new timing measurement

    val merge : t -> t -> t
    type serialized
    val serialize : t -> serialized
    val deserialize : serialized -> t
    val to_scuba : t -> LogEntry.t list
    \ No newline at end of file +Timings (infer.IBase.Timings)

    Module IBase.Timings

    Data structure to collect timing percentile informations on all Timeable.t elements

    type t
    val init : t
    val add : Timeable.t -> float -> t -> t

    register a new timing measurement

    val merge : t -> t -> t
    type serialized
    val serialize : t -> serialized
    val deserialize : serialized -> t
    val to_scuba : t -> LogEntry.t list
    diff --git a/website/static/odoc/next/infer/IBase/ToplAst/index.html b/website/static/odoc/next/infer/IBase/ToplAst/index.html index e67f083d509..48af2632ff9 100644 --- a/website/static/odoc/next/infer/IBase/ToplAst/index.html +++ b/website/static/odoc/next/infer/IBase/ToplAst/index.html @@ -1,5 +1,5 @@ -ToplAst (infer.IBase.ToplAst)

    Module IBase.ToplAst

    type property_name = string
    val compare_property_name : property_name -> property_name -> int
    val hash_fold_property_name : +ToplAst (infer.IBase.ToplAst)

    Module IBase.ToplAst

    type property_name = string
    val compare_property_name : property_name -> property_name -> int
    val hash_fold_property_name : Ppx_hash_lib.Std.Hash.state -> property_name -> Ppx_hash_lib.Std.Hash.state
    val hash_property_name : property_name -> Ppx_hash_lib.Std.Hash.hash_value
    val property_name_of_sexp : Sexplib0.Sexp.t -> property_name
    val sexp_of_property_name : property_name -> Sexplib0.Sexp.t
    val pp_property_name : @@ -11,10 +11,10 @@ unit
    val show_register_name : register_name -> string
    type variable_name = string
    val pp_variable_name : Ppx_show_runtime.Format.formatter -> variable_name -> - unit
    val show_variable_name : variable_name -> string
    type field_name = string
    val pp_field_name : Ppx_show_runtime.Format.formatter -> field_name -> unit
    val show_field_name : field_name -> string
    type class_name = string
    val pp_class_name : Ppx_show_runtime.Format.formatter -> class_name -> unit
    val show_class_name : class_name -> string
    type constant =
    1. | LiteralInt of int
    2. | LiteralStr of string
    val pp_constant : Ppx_show_runtime.Format.formatter -> constant -> unit
    val show_constant : constant -> string
    type value =
    1. | Constant of constant
    2. | Register of register_name
    3. | Binding of variable_name
    4. | FieldAccess of {
      1. value : value;
      2. class_name : class_name;
      3. field_name : field_name;
      }
    val pp_value : Ppx_show_runtime.Format.formatter -> value -> unit
    val show_value : value -> string
    type binop =
    1. | LeadsTo
    2. | OpEq
    3. | OpNe
    4. | OpGe
    5. | OpGt
    6. | OpLe
    7. | OpLt
    val pp_binop : Ppx_show_runtime.Format.formatter -> binop -> unit
    val show_binop : binop -> string
    type predicate =
    1. | Binop of binop * value * value
    2. | Value of value
    val pp_predicate : Ppx_show_runtime.Format.formatter -> predicate -> unit
    val show_predicate : predicate -> string
    type condition = predicate list
    val pp_condition : Ppx_show_runtime.Format.formatter -> condition -> unit
    val show_condition : condition -> string
    type assignment = register_name * variable_name
    val pp_assignment : Ppx_show_runtime.Format.formatter -> assignment -> unit
    val show_assignment : assignment -> string
    type call_pattern = {
    1. procedure_name_regex : string;
    2. type_regexes : string option list option;
    }
    val pp_call_pattern : Ppx_show_runtime.Format.formatter -> call_pattern -> unit
    val show_call_pattern : call_pattern -> string
    type label_pattern =
    1. | ArrayWritePattern
    2. | CallPattern of call_pattern
    val pp_label_pattern : + unit
    val show_variable_name : variable_name -> string
    type field_name = string
    val pp_field_name : Ppx_show_runtime.Format.formatter -> field_name -> unit
    val show_field_name : field_name -> string
    type class_name = string
    val pp_class_name : Ppx_show_runtime.Format.formatter -> class_name -> unit
    val show_class_name : class_name -> string
    type constant =
    1. | LiteralInt of int
    2. | LiteralStr of string
    val pp_constant : Ppx_show_runtime.Format.formatter -> constant -> unit
    val show_constant : constant -> string
    type value =
    1. | Constant of constant
    2. | Register of register_name
    3. | Binding of variable_name
    4. | FieldAccess of {
      1. value : value;
      2. class_name : class_name;
      3. field_name : field_name;
      }
    val pp_value : Ppx_show_runtime.Format.formatter -> value -> unit
    val show_value : value -> string
    type binop =
    1. | LeadsTo
    2. | OpEq
    3. | OpNe
    4. | OpGe
    5. | OpGt
    6. | OpLe
    7. | OpLt
    val pp_binop : Ppx_show_runtime.Format.formatter -> binop -> unit
    val show_binop : binop -> string
    type predicate =
    1. | Binop of binop * value * value
    2. | Value of value
    val pp_predicate : Ppx_show_runtime.Format.formatter -> predicate -> unit
    val show_predicate : predicate -> string
    type condition = predicate list
    val pp_condition : Ppx_show_runtime.Format.formatter -> condition -> unit
    val show_condition : condition -> string
    type assignment = register_name * variable_name
    val pp_assignment : Ppx_show_runtime.Format.formatter -> assignment -> unit
    val show_assignment : assignment -> string
    type regex = {
    1. re_text : string;
    2. re : IStdlib.IStd.Str.regexp;
    }
    val pp_regex : Ppx_show_runtime.Format.formatter -> regex -> unit
    val show_regex : regex -> string
    val mk_regex : string -> regex
    type call_pattern = {
    1. procedure_name_regex : regex;
    2. type_regexes : regex option list option;
    }
    val pp_call_pattern : Ppx_show_runtime.Format.formatter -> call_pattern -> unit
    val show_call_pattern : call_pattern -> string
    type label_pattern =
    1. | ArrayWritePattern
    2. | CallPattern of call_pattern
    val pp_label_pattern : Ppx_show_runtime.Format.formatter -> label_pattern -> unit
    val show_label_pattern : label_pattern -> string
    type label = {
    1. arguments : variable_name list option;
    2. condition : condition;
    3. action : assignment list;
    4. pattern : label_pattern;
    }
    val pp_label : Ppx_show_runtime.Format.formatter -> label -> unit
    val show_label : label -> string
    type vertex = string
    val compare_vertex : vertex -> vertex -> int
    val hash_fold_vertex : Ppx_hash_lib.Std.Hash.state -> vertex -> - Ppx_hash_lib.Std.Hash.state
    val hash_vertex : vertex -> Ppx_hash_lib.Std.Hash.hash_value
    val vertex_of_sexp : Sexplib0.Sexp.t -> vertex
    val sexp_of_vertex : vertex -> Sexplib0.Sexp.t
    val pp_vertex : Ppx_show_runtime.Format.formatter -> vertex -> unit
    val show_vertex : vertex -> string
    type transition = {
    1. source : vertex;
    2. target : vertex;
    3. label : label option;
    }
    val pp_transition : Ppx_show_runtime.Format.formatter -> transition -> unit
    val show_transition : transition -> string
    type t = {
    1. name : property_name;
    2. message : string option;
    3. prefixes : string list;
    4. transitions : transition list;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    \ No newline at end of file + Ppx_hash_lib.Std.Hash.state
    val hash_vertex : vertex -> Ppx_hash_lib.Std.Hash.hash_value
    val vertex_of_sexp : Sexplib0.Sexp.t -> vertex
    val sexp_of_vertex : vertex -> Sexplib0.Sexp.t
    val pp_vertex : Ppx_show_runtime.Format.formatter -> vertex -> unit
    val show_vertex : vertex -> string
    type transition = {
    1. source : vertex;
    2. target : vertex;
    3. label : label option;
    }
    val pp_transition : Ppx_show_runtime.Format.formatter -> transition -> unit
    val show_transition : transition -> string
    type t = {
    1. name : property_name;
    2. message : string option;
    3. prefixes : string list;
    4. transitions : transition list;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    diff --git a/website/static/odoc/next/infer/IBase/ToplLexer/index.html b/website/static/odoc/next/infer/IBase/ToplLexer/index.html index 6f76148b39f..39ddc1d492c 100644 --- a/website/static/odoc/next/infer/IBase/ToplLexer/index.html +++ b/website/static/odoc/next/infer/IBase/ToplLexer/index.html @@ -1,5 +1,5 @@ -ToplLexer (infer.IBase.ToplLexer)

    Module IBase.ToplLexer

    exception ToplLexerBug
    val new_line : string -> string -> Stdlib.Lexing.lexbuf -> ToplParser.token
    val quoted : Re.Str.regexp
    val unquote : string -> string
    val __ocaml_lex_tables : IStdlib.IStd.Caml.Lexing.lex_tables
    val raw_token : IStdlib.IStd.Caml.Lexing.lexbuf -> ToplParser.token
    val __ocaml_lex_raw_token_rec : +ToplLexer (infer.IBase.ToplLexer)

    Module IBase.ToplLexer

    exception ToplLexerBug
    val new_line : string -> string -> Stdlib.Lexing.lexbuf -> ToplParser.token
    val quoted : IStdlib.IStd.Str.regexp
    val unquote : string -> string
    val __ocaml_lex_tables : IStdlib.IStd.Caml.Lexing.lex_tables
    val raw_token : IStdlib.IStd.Caml.Lexing.lexbuf -> ToplParser.token
    val __ocaml_lex_raw_token_rec : IStdlib.IStd.Caml.Lexing.lexbuf -> int -> - ToplParser.token
    val token : unit -> IStdlib.IStd.Caml.Lexing.lexbuf -> ToplParser.token
    \ No newline at end of file + ToplParser.token
    val token : unit -> IStdlib.IStd.Caml.Lexing.lexbuf -> ToplParser.token
    diff --git a/website/static/odoc/next/infer/IBase/ToplParser/index.html b/website/static/odoc/next/infer/IBase/ToplParser/index.html index 5ce651c39e6..d07c662771a 100644 --- a/website/static/odoc/next/infer/IBase/ToplParser/index.html +++ b/website/static/odoc/next/infer/IBase/ToplParser/index.html @@ -1,5 +1,5 @@ -ToplParser (infer.IBase.ToplParser)

    Module IBase.ToplParser

    type token =
    1. | WHEN
    2. | UID of string
    3. | STRING of string
    4. | STAR
    5. | SEMI
    6. | RP
    7. | RC
    8. | PROPERTY
    9. | PREFIX
    10. | NE
    11. | MESSAGE
    12. | LT
    13. | LP
    14. | LID of string
    15. | LEADSTO
    16. | LE
    17. | LC
    18. | INTEGER of int
    19. | INDENT of int
    20. | GT
    21. | GE
    22. | EQ
    23. | EOF
    24. | DOT
    25. | COMMA
    26. | COLONEQ
    27. | COLON
    28. | ARROWARROW
    29. | ARROW
    30. | ARRAYWRITE
    31. | AND
    exception Error
    val properties : +ToplParser (infer.IBase.ToplParser)

    Module IBase.ToplParser

    type token =
    1. | WHEN
    2. | UID of string
    3. | STRING of string
    4. | STAR
    5. | SEMI
    6. | RP
    7. | RC
    8. | PROPERTY
    9. | PREFIX
    10. | NE
    11. | MESSAGE
    12. | LT
    13. | LP
    14. | LID of string
    15. | LEADSTO
    16. | LE
    17. | LC
    18. | INTEGER of int
    19. | INDENT of int
    20. | GT
    21. | GE
    22. | EQ
    23. | EOF
    24. | DOT
    25. | COMMA
    26. | COLONEQ
    27. | COLON
    28. | ARROWARROW
    29. | ARROW
    30. | ARRAYWRITE
    31. | AND
    exception Error
    val properties : (Stdlib.Lexing.lexbuf -> token) -> Stdlib.Lexing.lexbuf -> - ToplAst.t list
    \ No newline at end of file + ToplAst.t list
    diff --git a/website/static/odoc/next/infer/IBase/Utils/index.html b/website/static/odoc/next/infer/IBase/Utils/index.html index 44c89454e92..1c6eac83130 100644 --- a/website/static/odoc/next/infer/IBase/Utils/index.html +++ b/website/static/odoc/next/infer/IBase/Utils/index.html @@ -1,42 +1,42 @@ -Utils (infer.IBase.Utils)

    Module IBase.Utils

    val fold_folders : - init:'acc -> - f:('acc -> string -> 'acc) -> - path:string -> - 'acc

    recursively traverse a path for folders, returning results by a given fold function

    val fold_files : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

    recursively traverse a path for files, returning results by a given fold function

    val find_files : path:string -> extension:string -> string list

    recursively find all files in path with names ending in extension

    val string_crc_hex32 : string -> string

    Compute a 32-character hexadecimal crc using the Digest module

    val read_file : string -> (string list, string) IStdlib.IStd.Result.t

    read a source file and return a list of lines

    val normalize_path_from : root:string -> string -> string * string

    normalize_path_from ~root path removes ".." and "." parts of root/path when possible and returns the new root and path, eg if root = "r" and path = "a/../../../foo/./bar" then the result is ("../foo/bar", ".") (in particular "r/a/../../../foo/./bar" and "./../foo/bar" represent the same file)

    val normalize_path : string -> string

    Normalize a path without a root

    val flatten_path : ?sep:string -> string -> string

    Flatten a/b/c as a-b-c. Special dirs .. and . are abbreviated. The separator - can be customized.

    val filename_to_absolute : root:string -> string -> string

    Convert a filename to an absolute one if it is relative, and normalize "." and ".."

    val filename_to_relative : - ?force_full_backtrack:bool -> - ?backtrack:int -> - root:string -> +Utils (infer.IBase.Utils)

    Module IBase.Utils

    val fold_folders : + init:'acc -> + f:('acc -> string -> 'acc) -> + path:string -> + 'acc

    recursively traverse a path for folders, returning results by a given fold function

    val fold_files : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

    recursively traverse a path for files, returning results by a given fold function

    val find_files : path:string -> extension:string -> string list

    recursively find all files in path with names ending in extension

    val string_crc_hex32 : string -> string

    Compute a 32-character hexadecimal crc using the Digest module

    val read_file : string -> (string list, string) IStdlib.IStd.Result.t

    read a source file and return a list of lines

    val normalize_path_from : root:string -> string -> string * string

    normalize_path_from ~root path removes ".." and "." parts of root/path when possible and returns the new root and path, eg if root = "r" and path = "a/../../../foo/./bar" then the result is ("../foo/bar", ".") (in particular "r/a/../../../foo/./bar" and "./../foo/bar" represent the same file)

    val normalize_path : string -> string

    Normalize a path without a root

    val flatten_path : ?sep:string -> string -> string

    Flatten a/b/c as a-b-c. Special dirs .. and . are abbreviated. The separator - can be customized.

    val filename_to_absolute : root:string -> string -> string

    Convert a filename to an absolute one if it is relative, and normalize "." and ".."

    val filename_to_relative : + ?force_full_backtrack:bool -> + ?backtrack:int -> + root:string -> string -> - string option

    Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

    type outfile = {
    1. fname : string;
      (*

      name of the file

      *)
    2. out_c : IStdlib.IStd.Out_channel.t;
      (*

      output channel

      *)
    3. fmt : Stdlib.Format.formatter;
      (*

      formatter for printing

      *)
    }

    type for files used for printing

    val create_outfile : string -> outfile option

    create an outfile for the command line

    val close_outf : outfile -> unit

    close an outfile

    val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

    Functional fold function over all the files of a directory

    val directory_iter : (string -> unit) -> string -> unit

    Functional iter function over all the files of a directory

    val read_json_file : string -> (Yojson.Safe.t, string) IStdlib.IStd.Result.t
    val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
    val with_file_out : - ?append:bool -> + string option

    Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

    type outfile = {
    1. fname : string;
      (*

      name of the file

      *)
    2. out_c : IStdlib.IStd.Out_channel.t;
      (*

      output channel

      *)
    3. fmt : Stdlib.Format.formatter;
      (*

      formatter for printing

      *)
    }

    type for files used for printing

    val create_outfile : string -> outfile option

    create an outfile for the command line

    val close_outf : outfile -> unit

    close an outfile

    val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

    Functional fold function over all the files of a directory

    val directory_iter : (string -> unit) -> string -> unit

    Functional iter function over all the files of a directory

    val read_json_file : string -> (Yojson.Safe.t, string) IStdlib.IStd.Result.t
    val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
    val with_file_out : + ?append:bool -> string -> - f:(IStdlib.IStd.Out_channel.t -> 'a) -> + f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a
    val with_intermediate_temp_file_out : - ?retry:bool -> + ?retry:bool -> string -> - f:(IStdlib.IStd.Out_channel.t -> 'a) -> - 'a

    like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

    val write_json_to_file : string -> Yojson.Safe.t -> unit
    val consume_in : IStdlib.IStd.In_channel.t -> unit

    consume and ignore all the lines from the channel until End_of_file is reached

    val echo_in : IStdlib.IStd.In_channel.t -> unit

    echo the lines we get to stdout until End_of_file is reached

    val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
    val with_process_in : + f:(IStdlib.IStd.Out_channel.t -> 'a) -> + 'a

    like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

    val write_json_to_file : string -> Yojson.Safe.t -> unit
    val consume_in : IStdlib.IStd.In_channel.t -> unit

    consume and ignore all the lines from the channel until End_of_file is reached

    val echo_in : IStdlib.IStd.In_channel.t -> unit

    echo the lines we get to stdout until End_of_file is reached

    val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
    val with_process_in : string -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a * IStdlib.IStd.Unix.Exit_or_signal.t
    val create_dir : string -> unit

    recursively create a directory if it does not exist already

    val out_channel_create_with_dir : IStdlib.IStd.Filename.t -> - IStdlib.IStd.Out_channel.t

    create an out channel with creating missing directories

    val realpath : ?warn_on_error:bool -> string -> string

    realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

    val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

    wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

    val rmtree : ?except:string list -> string -> unit

    rmtree path removes path and, if path is a directory, recursively removes its contents. Files whose name matches the absolute paths in except are not removed. If except is specified then path will only be spared if path appears literally in except (whereas files that are deeper will match if their absolute path is in except).

    val rm_all_in_dir : ?except:string list -> string -> unit

    rm_all_in_dir ?except path removes all entries in path/* except for the (absolute) paths in except

    val iter_dir : string -> f:(string -> unit) -> unit

    iterate on each entry in the directory except for "." and ".."

    val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

    Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

    delete temporary file on exit

    val strip_balanced_once : drop:(char -> bool) -> string -> string

    drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

    val assoc_of_yojson : + IStdlib.IStd.Out_channel.t

    create an out channel with creating missing directories

    val realpath : ?warn_on_error:bool -> string -> string

    realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

    val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

    wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

    val rmtree : ?except:string list -> string -> unit

    rmtree path removes path and, if path is a directory, recursively removes its contents. Files whose name matches the absolute paths in except are not removed. If except is specified then path will only be spared if path appears literally in except (whereas files that are deeper will match if their absolute path is in except).

    val rm_all_in_dir : ?except:string list -> string -> unit

    rm_all_in_dir ?except path removes all entries in path/* except for the (absolute) paths in except

    val iter_dir : string -> f:(string -> unit) -> unit

    iterate on each entry in the directory except for "." and ".."

    val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

    Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

    delete temporary file on exit

    val strip_balanced_once : drop:(char -> bool) -> string -> string

    drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

    val assoc_of_yojson : Yojson.Safe.t -> - src:string -> - (string, Yojson.Safe.t) IStdlib.IStd.List.Assoc.t

    Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

    val string_of_yojson : Yojson.Safe.t -> src:string -> string

    Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

    val string_list_of_yojson : Yojson.Safe.t -> src:string -> string list

    Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

    val yojson_lookup : + src:string -> + (string, Yojson.Safe.t) IStdlib.IStd.List.Assoc.t

    Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

    val string_of_yojson : Yojson.Safe.t -> src:string -> string

    Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

    val string_list_of_yojson : Yojson.Safe.t -> src:string -> string list

    Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

    val yojson_lookup : (string, Yojson.Safe.t) IStdlib.IStd.List.Assoc.t -> string -> - src:string -> - f:(Yojson.Safe.t -> src:string -> 'a) -> - default:'a -> - 'a

    Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

    val timeit : f:(unit -> 'a) -> 'a * Mtime.Span.t

    Returns the execution time of f together with its result

    val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

    executes f after cding into dir and then restores original cwd

    val get_available_memory_MB : unit -> int option

    On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

    val fold_infer_deps : - root:string -> + src:string -> + f:(Yojson.Safe.t -> src:string -> 'a) -> + default:'a -> + 'a

    Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

    val timeit : f:(unit -> 'a) -> 'a * Mtime.Span.t

    Returns the execution time of f together with its result

    val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

    executes f after cding into dir and then restores original cwd

    val get_available_memory_MB : unit -> int option

    On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

    val fold_infer_deps : + root:string -> string -> - init:'a -> - f:('a -> string -> 'a) -> - 'a
    val iter_infer_deps : root:string -> string -> f:(string -> unit) -> unit

    Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. root is used to interpret relative paths in the file.

    val inline_argument_files : string list -> string list

    Given a list of arguments return the extended list of arguments where the args in a file have been extracted

    val cpus : int

    Number of CPUs as computed by Setcore.numcores.

    val zip_fold : - init:'a -> - f:('a -> Zip.in_file -> Zip.entry -> 'a) -> - zip_filename:string -> - 'a

    fold over each file in the given zip_filename.

    val is_term_dumb : unit -> bool

    Check if the terminal is "dumb" or otherwise has very limited functionality. For example, Emacs' eshell reports itself as a dumb terminal.

    \ No newline at end of file + init:'a -> + f:('a -> string -> 'a) -> + 'a
    val iter_infer_deps : root:string -> string -> f:(string -> unit) -> unit

    Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. root is used to interpret relative paths in the file.

    val inline_argument_files : string list -> string list

    Given a list of arguments return the extended list of arguments where the args in a file have been extracted

    val cpus : int

    Number of CPUs as computed by Setcore.numcores.

    val zip_fold : + init:'a -> + f:('a -> Zip.in_file -> Zip.entry -> 'a) -> + zip_filename:string -> + 'a

    fold over each file in the given zip_filename.

    val is_term_dumb : unit -> bool

    Check if the terminal is "dumb" or otherwise has very limited functionality. For example, Emacs' eshell reports itself as a dumb terminal.

    diff --git a/website/static/odoc/next/infer/IBase/Version/index.html b/website/static/odoc/next/infer/IBase/Version/index.html index 4d0fe2599f0..3e1a2f8b35e 100644 --- a/website/static/odoc/next/infer/IBase/Version/index.html +++ b/website/static/odoc/next/infer/IBase/Version/index.html @@ -1,2 +1,2 @@ -Version (infer.IBase.Version)

    Module IBase.Version

    val major : int
    val minor : int
    val patch : int
    val commit : string
    type build_platform =
    1. | Linux
    2. | Darwin
    3. | Windows
    val build_platform : build_platform
    val versionString : string
    val versionJson : string
    val clang_enabled : bool
    val erlang_enabled : bool
    val hack_enabled : bool
    val java_enabled : bool
    val java_version : int option
    val xcode_enabled : bool
    val man_pages_last_modify_date : string
    val python_exe : string
    val python_enabled : bool
    \ No newline at end of file +Version (infer.IBase.Version)

    Module IBase.Version

    val major : int
    val minor : int
    val patch : int
    val commit : string
    type build_platform =
    1. | Linux
    2. | Darwin
    3. | Windows
    val build_platform : build_platform
    val versionString : string
    val versionJson : string
    val clang_enabled : bool
    val erlang_enabled : bool
    val hack_enabled : bool
    val java_enabled : bool
    val java_version : int option
    val xcode_enabled : bool
    val man_pages_last_modify_date : string
    val python_exe : string
    val python_enabled : bool
    diff --git a/website/static/odoc/next/infer/IBase/index.html b/website/static/odoc/next/infer/IBase/index.html index 9752bce1394..e747d854314 100644 --- a/website/static/odoc/next/infer/IBase/index.html +++ b/website/static/odoc/next/infer/IBase/index.html @@ -1,2 +1,2 @@ -IBase (infer.IBase)

    Module IBase

    module BuckMode : sig ... end
    module Checker : sig ... end
    module ClangProc : sig ... end
    module CommandDoc : sig ... end
    module CommandLineOption : sig ... end

    Definition and parsing of command line arguments

    module Config : sig ... end

    Configuration values: either constant, determined at compile time, or set at startup time by system calls, environment variables, or command line options

    module CostIssues : sig ... end
    module CostIssuesTestField : sig ... end
    module CostKind : sig ... end
    module DB : sig ... end

    Database of analysis results

    module DBWriter : sig ... end
    module Database : sig ... end
    module Die : sig ... end
    module Epilogues : sig ... end
    module Exception : sig ... end

    The restart scheduler and biabduction use exceptions for control flow (restarts/timeouts respectively). Functions here abstract away the semantics of when an exception can be ignored.

    module ExecutionDuration : sig ... end
    module FileDiff : sig ... end
    module ForkUtils : sig ... end
    module IssueType : sig ... end
    module IssuesTestField : sig ... end
    module Language : sig ... end
    module LineReader : sig ... end

    Module to read specific lines from files. The data from any file will stay in memory until the handle is collected by the gc

    module Location : sig ... end
    module LogEntry : sig ... end

    Log entry data model, global log entry store and functions to manipulate it. Direct access to the store is not exposed.

    module Logging : sig ... end

    log messages at different levels of verbosity

    module MarkupFormatter : sig ... end
    module MissingDependencyException : sig ... end
    module PayloadId : sig ... end
    module PerfEvent : sig ... end
    module Process : sig ... end
    module ProcessPool : sig ... end
    module ProcessPoolState : sig ... end
    module RestartSchedulerException : sig ... end
    module ResultsDir : sig ... end
    module ResultsDirEntryName : sig ... end

    Entries in the results directory (infer-out/).

    module Scuba : sig ... end

    Low-level Scuba logging functionality. Provides functionality to log anything to any scuba table. (Note that Scuba is a schema-free storage, so it won't require any changes). Don't use this module directly for logging to tables with known structure. Use high-level functions that are aware of the table structure.

    module ScubaLogging : sig ... end

    Functionality for logging into "infer_events" Scuba table. The table is organized in form of key-value pairs. Two most important fields are "event" and "value". Other fields in the table correspond to things common for this particular run of Infer.

    module Serialization : sig ... end

    Serialization of data stuctures

    module SourceFile : sig ... end
    module SqliteUtils : sig ... end
    module Stats : sig ... end

    collect statistics about backend/analysis operations

    module TaskBar : sig ... end
    module Timeable : sig ... end
    module Timer : sig ... end

    Time long-running operations listed in Timeable under a timeout

    module Timings : sig ... end

    Data structure to collect timing percentile informations on all Timeable.t elements

    module ToplAst : sig ... end
    module ToplLexer : sig ... end
    module ToplParser : sig ... end
    module Utils : sig ... end
    module Version : sig ... end
    \ No newline at end of file +IBase (infer.IBase)

    Module IBase

    module BuckMode : sig ... end
    module Checker : sig ... end
    module ClangProc : sig ... end
    module CommandDoc : sig ... end
    module CommandLineOption : sig ... end

    Definition and parsing of command line arguments

    module Config : sig ... end

    Configuration values: either constant, determined at compile time, or set at startup time by system calls, environment variables, or command line options

    module CostIssues : sig ... end
    module CostIssuesTestField : sig ... end
    module CostKind : sig ... end
    module DB : sig ... end

    Database of analysis results

    module DBWriter : sig ... end
    module Database : sig ... end
    module Die : sig ... end
    module Epilogues : sig ... end
    module Exception : sig ... end

    The restart scheduler and biabduction use exceptions for control flow (restarts/timeouts respectively). Functions here abstract away the semantics of when an exception can be ignored.

    module ExecutionDuration : sig ... end
    module FileDiff : sig ... end
    module ForkUtils : sig ... end
    module IssueType : sig ... end
    module IssuesTestField : sig ... end
    module Language : sig ... end
    module LineReader : sig ... end

    Module to read specific lines from files. The data from any file will stay in memory until the handle is collected by the gc

    module Location : sig ... end
    module LogEntry : sig ... end

    Log entry data model, global log entry store and functions to manipulate it. Direct access to the store is not exposed.

    module Logging : sig ... end

    log messages at different levels of verbosity

    module MarkupFormatter : sig ... end
    module MissingDependencyException : sig ... end
    module PayloadId : sig ... end
    module PerfEvent : sig ... end
    module Process : sig ... end
    module ProcessPool : sig ... end
    module ProcessPoolState : sig ... end
    module RestartSchedulerException : sig ... end
    module ResultsDir : sig ... end
    module ResultsDirEntryName : sig ... end

    Entries in the results directory (infer-out/).

    module Scuba : sig ... end

    Low-level Scuba logging functionality. Provides functionality to log anything to any scuba table. (Note that Scuba is a schema-free storage, so it won't require any changes). Don't use this module directly for logging to tables with known structure. Use high-level functions that are aware of the table structure.

    module ScubaLogging : sig ... end

    Functionality for logging into "infer_events" Scuba table. The table is organized in form of key-value pairs. Two most important fields are "event" and "value". Other fields in the table correspond to things common for this particular run of Infer.

    module Serialization : sig ... end

    Serialization of data stuctures

    module SourceFile : sig ... end
    module SqliteUtils : sig ... end
    module Stats : sig ... end

    collect statistics about backend/analysis operations

    module TaskBar : sig ... end
    module Timeable : sig ... end
    module Timer : sig ... end

    Time long-running operations listed in Timeable under a timeout

    module Timings : sig ... end

    Data structure to collect timing percentile informations on all Timeable.t elements

    module ToplAst : sig ... end
    module ToplLexer : sig ... end
    module ToplParser : sig ... end
    module Utils : sig ... end
    module Version : sig ... end
    diff --git a/website/static/odoc/next/infer/IR.html b/website/static/odoc/next/infer/IR.html index 8acd30a1880..9e5b8df841f 100644 --- a/website/static/odoc/next/infer/IR.html +++ b/website/static/odoc/next/infer/IR.html @@ -1,2 +1,2 @@ -IR (infer.IR)

    Library IR: Intermediate Representation

    The Intermediate Representation, called SIL, is a format used by the back-end for analysis. It is produced by the front-ends.

    The entry point of this library is the module IR.

    The main entry point is the intermediate language in IR.Sil.

    The control flow graph module is IR.Cfg.

    The type environment module is IR.Tenv.

    \ No newline at end of file +IR (infer.IR)

    Library IR: Intermediate Representation

    The Intermediate Representation, called SIL, is a format used by the back-end for analysis. It is produced by the front-ends.

    The entry point of this library is the module IR.

    The main entry point is the intermediate language in IR.Sil.

    The control flow graph module is IR.Cfg.

    The type environment module is IR.Tenv.

    diff --git a/website/static/odoc/next/infer/IR/AnalysisGlobalState/index.html b/website/static/odoc/next/infer/IR/AnalysisGlobalState/index.html index cc19bf059cb..5fa8cd3bc98 100644 --- a/website/static/odoc/next/infer/IR/AnalysisGlobalState/index.html +++ b/website/static/odoc/next/infer/IR/AnalysisGlobalState/index.html @@ -1,9 +1,9 @@ -AnalysisGlobalState (infer.IR.AnalysisGlobalState)

    Module IR.AnalysisGlobalState

    Global state for the backend analyses

    While global state should be kept under control at possible (so try to introduce as little of it as possible!), it is sometimes too convenient to ignore. This module lets us do it safely, at least until infer becomes multicore. In particular, global state is appropriately and safely stashed away and restored when the analysis of a procedure is suspended to go analyze another procedure with ondemand (see the Backend.Ondemand module).

    type t
    val save : unit -> t
    val restore : t -> unit
    val initialize : Procdesc.t -> Tenv.t -> unit
    val register : - init:(unit -> unit) -> - save:(unit -> 'a) -> - restore:('a -> unit) -> - unit

    Register pieces of global state from other analysis modules:

    • save and restore are called when suspending/resuming the analysis of the procedure when we need to go analyze a dependency
    • init is called when the analysis of a procedure starts
    val register_ref : init:(unit -> 'a) -> 'a IStdlib.IStd.ref -> unit

    special case of a value stored in a reference; init sets the ref to init ()

    val register_ref_with_proc_desc_and_tenv : - init:(Procdesc.t -> Tenv.t -> 'a) -> +AnalysisGlobalState (infer.IR.AnalysisGlobalState)

    Module IR.AnalysisGlobalState

    Global state for the backend analyses

    While global state should be kept under control at possible (so try to introduce as little of it as possible!), it is sometimes too convenient to ignore. This module lets us do it safely, at least until infer becomes multicore. In particular, global state is appropriately and safely stashed away and restored when the analysis of a procedure is suspended to go analyze another procedure with ondemand (see the Backend.Ondemand module).

    type t
    val save : unit -> t
    val restore : t -> unit
    val initialize : Procdesc.t -> Tenv.t -> unit
    val register : + init:(unit -> unit) -> + save:(unit -> 'a) -> + restore:('a -> unit) -> + unit

    Register pieces of global state from other analysis modules:

    • save and restore are called when suspending/resuming the analysis of the procedure when we need to go analyze a dependency
    • init is called when the analysis of a procedure starts
    val register_ref : init:(unit -> 'a) -> 'a IStdlib.IStd.ref -> unit

    special case of a value stored in a reference; init sets the ref to init ()

    val register_ref_with_proc_desc_and_tenv : + init:(Procdesc.t -> Tenv.t -> 'a) -> 'a IStdlib.IStd.ref -> - unit

    same as register_ref but init takes a proc desc and a tenv

    \ No newline at end of file + unit

    same as register_ref but init takes a proc desc and a tenv

    diff --git a/website/static/odoc/next/infer/IR/Annot/Class/index.html b/website/static/odoc/next/infer/IR/Annot/Class/index.html index 02a6ed3450c..f8b8e8c9023 100644 --- a/website/static/odoc/next/infer/IR/Annot/Class/index.html +++ b/website/static/odoc/next/infer/IR/Annot/Class/index.html @@ -1,2 +1,2 @@ -Class (infer.IR.Annot.Class)

    Module Annot.Class

    val objc : Item.t
    val cpp : Item.t
    \ No newline at end of file +Class (infer.IR.Annot.Class)

    Module Annot.Class

    val objc : Item.t
    val cpp : Item.t
    diff --git a/website/static/odoc/next/infer/IR/Annot/Item/index.html b/website/static/odoc/next/infer/IR/Annot/Item/index.html index 67b8086e693..ceece237c26 100644 --- a/website/static/odoc/next/infer/IR/Annot/Item/index.html +++ b/website/static/odoc/next/infer/IR/Annot/Item/index.html @@ -1,2 +1,2 @@ -Item (infer.IR.Annot.Item)

    Module Annot.Item

    type nonrec t = t list

    Annotation for one item: a list of annotations with visibility.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit

    Pretty print an item annotation.

    val empty : t

    Empty item annotation.

    val is_empty : t -> bool
    val is_final : t -> bool

    Check if final annotation is included in.

    val is_notnull : t -> bool

    Check if notnull annotation is included in.

    \ No newline at end of file +Item (infer.IR.Annot.Item)

    Module Annot.Item

    type nonrec t = t list

    Annotation for one item: a list of annotations with visibility.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit

    Pretty print an item annotation.

    val empty : t

    Empty item annotation.

    val is_empty : t -> bool
    val is_final : t -> bool

    Check if final annotation is included in.

    val is_notnull : t -> bool

    Check if notnull annotation is included in.

    diff --git a/website/static/odoc/next/infer/IR/Annot/index.html b/website/static/odoc/next/infer/IR/Annot/index.html index 9c39cf8b6c7..8c1a79e206a 100644 --- a/website/static/odoc/next/infer/IR/Annot/index.html +++ b/website/static/odoc/next/infer/IR/Annot/index.html @@ -1,2 +1,2 @@ -Annot (infer.IR.Annot)

    Module IR.Annot

    The Smallfoot Intermediate Language: Annotations

    module F = Stdlib.Format
    type t = {
    1. class_name : string;
      (*

      name of the annotation

      *)
    2. parameters : parameter list;
    }

    Type to represent an @Annotation with potentially complex parameter values such as arrays or other annotations.

    and parameter = {
    1. name : string option;
    2. value : value;
    }
    and value =
    1. | Str of string
    2. | Bool of bool
    3. | Enum of {
      1. class_typ : Typ.t;
      2. value : string;
      }
    4. | Array of value list
    5. | Class of Typ.t
    6. | Annot of t

    Type to represent possible annotation parameter values. Note that support for numeric parameters is missing for now due to an issue with MaximumSharing and int64.

    val equal : t -> t -> bool
    val equal_parameter : parameter -> parameter -> bool
    val equal_value : value -> value -> bool
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val hash_normalize_parameter : parameter -> parameter
    val hash_normalize_parameter_opt : parameter option -> parameter option
    val hash_normalize_parameter_list : parameter list -> parameter list
    val hash_normalize_value : value -> value
    val hash_normalize_value_opt : value option -> value option
    val hash_normalize_value_list : value list -> value list
    val compare : t -> t -> int
    val compare_parameter : parameter -> parameter -> int
    val compare_value : value -> value -> int
    val volatile : t

    annotation for fields marked with the "volatile" keyword

    val final : t

    annotation for fields marked with the "final" keyword

    val notnull : t

    annotation for fields/params marked as "never null"

    val has_matching_str_value : pred:(string -> bool) -> value -> bool

    Check if annotation parameter value contains a string satisfying a predicate. For convenience it works both with raw Str, Str inside Array and Enum values.

    val find_parameter : t -> name:string -> value option
    val pp : F.formatter -> t -> unit

    Pretty print an annotation.

    module Item : sig ... end
    module Class : sig ... end
    \ No newline at end of file +Annot (infer.IR.Annot)

    Module IR.Annot

    The Smallfoot Intermediate Language: Annotations

    module F = Stdlib.Format
    type t = {
    1. class_name : string;
      (*

      name of the annotation

      *)
    2. parameters : parameter list;
    }

    Type to represent an @Annotation with potentially complex parameter values such as arrays or other annotations.

    and parameter = {
    1. name : string option;
    2. value : value;
    }
    and value =
    1. | Str of string
    2. | Bool of bool
    3. | Enum of {
      1. class_typ : Typ.t;
      2. value : string;
      }
    4. | Array of value list
    5. | Class of Typ.t
    6. | Annot of t

    Type to represent possible annotation parameter values. Note that support for numeric parameters is missing for now due to an issue with MaximumSharing and int64.

    val equal : t -> t -> bool
    val equal_parameter : parameter -> parameter -> bool
    val equal_value : value -> value -> bool
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val hash_normalize_parameter : parameter -> parameter
    val hash_normalize_parameter_opt : parameter option -> parameter option
    val hash_normalize_parameter_list : parameter list -> parameter list
    val hash_normalize_value : value -> value
    val hash_normalize_value_opt : value option -> value option
    val hash_normalize_value_list : value list -> value list
    val compare : t -> t -> int
    val compare_parameter : parameter -> parameter -> int
    val compare_value : value -> value -> int
    val volatile : t

    annotation for fields marked with the "volatile" keyword

    val final : t

    annotation for fields marked with the "final" keyword

    val notnull : t

    annotation for fields/params marked as "never null"

    val has_matching_str_value : pred:(string -> bool) -> value -> bool

    Check if annotation parameter value contains a string satisfying a predicate. For convenience it works both with raw Str, Str inside Array and Enum values.

    val find_parameter : t -> name:string -> value option
    val pp : F.formatter -> t -> unit

    Pretty print an annotation.

    module Item : sig ... end
    module Class : sig ... end
    diff --git a/website/static/odoc/next/infer/IR/Attributes/index.html b/website/static/odoc/next/infer/IR/Attributes/index.html index 54851cad7f5..b3ddbdccea7 100644 --- a/website/static/odoc/next/infer/IR/Attributes/index.html +++ b/website/static/odoc/next/infer/IR/Attributes/index.html @@ -1,6 +1,6 @@ -Attributes (infer.IR.Attributes)

    Module IR.Attributes

    Module to manage the table of attributes.

    val store : - proc_desc:Procdesc.t option -> +Attributes (infer.IR.Attributes)

    Module IR.Attributes

    Module to manage the table of attributes.

    val store : + proc_desc:Procdesc.t option -> ProcAttributes.t -> - analysis:bool -> - unit

    Save .attr file for the procedure into the attributes database.

    val load_from_uid : string -> ProcAttributes.t option

    Load the attributes for the unique procedure id from the attributes database.

    val load : Procname.t -> ProcAttributes.t option

    Load the attributes for the procedure from the attributes database.

    val load_exn : Procname.t -> ProcAttributes.t

    like load, but raises an exception if no attributes are found.

    val is_no_return : Procname.t -> bool
    val load_formal_types : Procname.t -> Typ.t list

    Returns all the formal types of a given procedure.

    val clear_cache : unit -> unit

    clear attribute cache

    \ No newline at end of file + analysis:bool -> + unit

    Save .attr file for the procedure into the attributes database.

    val load_from_uid : string -> ProcAttributes.t option

    Load the attributes for the unique procedure id from the attributes database.

    val load : Procname.t -> ProcAttributes.t option

    Load the attributes for the procedure from the attributes database.

    val load_exn : Procname.t -> ProcAttributes.t

    like load, but raises an exception if no attributes are found.

    val is_no_return : Procname.t -> bool
    val load_formal_types : Procname.t -> Typ.t list

    Returns all the formal types of a given procedure.

    val clear_cache : unit -> unit

    clear attribute cache

    diff --git a/website/static/odoc/next/infer/IR/BUILTINS/index.html b/website/static/odoc/next/infer/IR/BUILTINS/index.html index 074c6653980..817494a5b01 100644 --- a/website/static/odoc/next/infer/IR/BUILTINS/index.html +++ b/website/static/odoc/next/infer/IR/BUILTINS/index.html @@ -1,2 +1,2 @@ -BUILTINS (infer.IR.BUILTINS)

    Module IR.BUILTINS

    module type S = sig ... end

    List of all builtins that are interpreted specially by the backend

    \ No newline at end of file +BUILTINS (infer.IR.BUILTINS)

    Module IR.BUILTINS

    module type S = sig ... end

    List of all builtins that are interpreted specially by the backend

    diff --git a/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html b/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html index b71852c1b92..d4f95c3c634 100644 --- a/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html +++ b/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IR.BUILTINS.S)

    Module type BUILTINS.S

    List of all builtins that are interpreted specially by the backend

    type t
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    \ No newline at end of file +S (infer.IR.BUILTINS.S)

    Module type BUILTINS.S

    List of all builtins that are interpreted specially by the backend

    type t
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    diff --git a/website/static/odoc/next/infer/IR/BiabductionModels/index.html b/website/static/odoc/next/infer/IR/BiabductionModels/index.html index 78f23e6d2b0..1ecd1a4a431 100644 --- a/website/static/odoc/next/infer/IR/BiabductionModels/index.html +++ b/website/static/odoc/next/infer/IR/BiabductionModels/index.html @@ -1,2 +1,2 @@ -BiabductionModels (infer.IR.BiabductionModels)

    Module IR.BiabductionModels

    val mem : Procname.t -> bool

    Check if a summary for a given procedure exists in the models directory

    \ No newline at end of file +BiabductionModels (infer.IR.BiabductionModels)

    Module IR.BiabductionModels

    val mem : Procname.t -> bool

    Check if a summary for a given procedure exists in the models directory

    diff --git a/website/static/odoc/next/infer/IR/Binop/index.html b/website/static/odoc/next/infer/IR/Binop/index.html index 028726fa778..5b0053e9b10 100644 --- a/website/static/odoc/next/infer/IR/Binop/index.html +++ b/website/static/odoc/next/infer/IR/Binop/index.html @@ -1,2 +1,2 @@ -Binop (infer.IR.Binop)

    Module IR.Binop

    The Smallfoot Intermediate Language: Binary Operators

    type t =
    1. | PlusA of Typ.ikind option
      (*

      arithmetic +

      *)
    2. | PlusPI
      (*

      pointer + integer

      *)
    3. | MinusA of Typ.ikind option
      (*

      arithmetic -

      *)
    4. | MinusPI
      (*

      pointer - integer

      *)
    5. | MinusPP
      (*

      pointer - pointer

      *)
    6. | Mult of Typ.ikind option
      (*

      *

      *)
    7. | DivI
      (*

      / for integers

      *)
    8. | DivF
      (*

      / for floats

      *)
    9. | Mod
      (*

      %

      *)
    10. | Shiftlt
      (*

      shift left

      *)
    11. | Shiftrt
      (*

      shift right

      *)
    12. | Lt
      (*

      < (arithmetic comparison)

      *)
    13. | Gt
      (*

      > (arithmetic comparison)

      *)
    14. | Le
      (*

      <= (arithmetic comparison)

      *)
    15. | Ge
      (*

      >= (arithmetic comparison)

      *)
    16. | Eq
      (*

      == (arithmetic comparison)

      *)
    17. | Ne
      (*

      != (arithmetic comparison)

      *)
    18. | BAnd
      (*

      bitwise and

      *)
    19. | BXor
      (*

      exclusive-or

      *)
    20. | BOr
      (*

      inclusive-or

      *)
    21. | LAnd
      (*

      logical and. Does not always evaluate both operands.

      *)
    22. | LOr
      (*

      logical or. Does not always evaluate both operands.

      *)

    Binary operations

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val str : IStdlib.Pp.env -> t -> string
    val pp : IStdlib.IStd.Formatter.t -> t -> unit
    val equal : t -> t -> bool
    val injective : t -> bool

    This function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".

    val is_zero_runit : t -> bool

    This function returns true if 0 is the right unit of binop. The return value false means "don't know".

    \ No newline at end of file +Binop (infer.IR.Binop)

    Module IR.Binop

    The Smallfoot Intermediate Language: Binary Operators

    type t =
    1. | PlusA of Typ.ikind option
      (*

      arithmetic +

      *)
    2. | PlusPI
      (*

      pointer + integer

      *)
    3. | MinusA of Typ.ikind option
      (*

      arithmetic -

      *)
    4. | MinusPI
      (*

      pointer - integer

      *)
    5. | MinusPP
      (*

      pointer - pointer

      *)
    6. | Mult of Typ.ikind option
      (*

      *

      *)
    7. | DivI
      (*

      / for integers

      *)
    8. | DivF
      (*

      / for floats

      *)
    9. | Mod
      (*

      %

      *)
    10. | Shiftlt
      (*

      shift left

      *)
    11. | Shiftrt
      (*

      shift right

      *)
    12. | Lt
      (*

      < (arithmetic comparison)

      *)
    13. | Gt
      (*

      > (arithmetic comparison)

      *)
    14. | Le
      (*

      <= (arithmetic comparison)

      *)
    15. | Ge
      (*

      >= (arithmetic comparison)

      *)
    16. | Eq
      (*

      == (arithmetic comparison)

      *)
    17. | Ne
      (*

      != (arithmetic comparison)

      *)
    18. | BAnd
      (*

      bitwise and

      *)
    19. | BXor
      (*

      exclusive-or

      *)
    20. | BOr
      (*

      inclusive-or

      *)
    21. | LAnd
      (*

      logical and. Does not always evaluate both operands.

      *)
    22. | LOr
      (*

      logical or. Does not always evaluate both operands.

      *)

    Binary operations

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val str : IStdlib.Pp.env -> t -> string
    val pp : IStdlib.IStd.Formatter.t -> t -> unit
    val equal : t -> t -> bool
    val injective : t -> bool

    This function returns true if the operation is injective wrt. each argument: op(e,-) and op(-, e) is injective for all e. The return value false means "don't know".

    val is_zero_runit : t -> bool

    This function returns true if 0 is the right unit of binop. The return value false means "don't know".

    diff --git a/website/static/odoc/next/infer/IR/BuiltinDecl/index.html b/website/static/odoc/next/infer/IR/BuiltinDecl/index.html index 60b7ddb33d4..f2be151860a 100644 --- a/website/static/odoc/next/infer/IR/BuiltinDecl/index.html +++ b/website/static/odoc/next/infer/IR/BuiltinDecl/index.html @@ -1,2 +1,2 @@ -BuiltinDecl (infer.IR.BuiltinDecl)

    Module IR.BuiltinDecl

    Procnames for the builtin functions supported

    include BUILTINS.S with type t = Procname.t
    type t = Procname.t
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    val is_declared : Procname.t -> bool
    val __erlang_equal : Procname.t
    val __erlang_exactly_equal : Procname.t
    val __erlang_not_equal : Procname.t
    val __erlang_exactly_not_equal : Procname.t
    val __erlang_lesser : Procname.t
    val __erlang_lesser_or_equal : Procname.t
    val __erlang_greater : Procname.t
    val __erlang_greater_or_equal : Procname.t
    val __erlang_error_badkey : Procname.t
    val __erlang_error_badmatch : Procname.t
    val __erlang_error_badmap : Procname.t
    val __erlang_error_badrecord : Procname.t
    val __erlang_error_badreturn : Procname.t

    Not a runtime error in Erlang. It means that the actual type disagrees with the spec.

    val __erlang_error_case_clause : Procname.t
    val __erlang_error_function_clause : Procname.t
    val __erlang_error_if_clause : Procname.t
    val __erlang_error_try_clause : Procname.t
    val __erlang_make_atom : Procname.t
    val __erlang_make_integer : Procname.t
    val __erlang_make_cons : Procname.t
    val __erlang_make_nil : Procname.t
    val __erlang_make_tuple : Procname.t
    val __erlang_make_map : Procname.t
    val __erlang_make_str_const : Procname.t
    val __erlang_make_bitstring : Procname.t
    val __erlang_receive : Procname.t
    val __erlang_str_equal : Procname.t
    val __infer_initializer_list : Procname.t
    val __infer_skip_function : Procname.t
    val __infer_skip_gcc_asm_stmt : Procname.t
    val __infer_structured_binding : Procname.t
    val __infer_generic_selection_expr : Procname.t
    val __atomic_fetch_max : Procname.t
    val __atomic_fetch_min : Procname.t
    val __atomic_fetch_nand : Procname.t
    val __atomic_max_fetch : Procname.t
    val __atomic_min_fetch : Procname.t
    val __atomic_nand_fetch : Procname.t
    val __c11_atomic_fetch_max : Procname.t
    val __c11_atomic_fetch_min : Procname.t
    val __call_objc_block : Procname.t
    val __call_c_function_ptr : Procname.t
    val __opencl_atomic_fetch_max : Procname.t
    val __opencl_atomic_fetch_min : Procname.t
    val __builtin_cxx_co_return : Procname.t
    val __builtin_cxx_co_await : Procname.t
    val __get_lazy_class : t

    returns the a LazyClass representation of its arguement (a type name). A LazyClass represents a class that we know the name of but don't necessarily know if the class has been defined somewhere.

    val __lazy_class_initialize : t

    returns the singleton object associated with a given type, and performs lazily its initialization (only generated by the Hack frontend currently)

    val dispatch_sync : Procname.t
    val match_builtin : t -> 'a -> string -> bool
    \ No newline at end of file +BuiltinDecl (infer.IR.BuiltinDecl)

    Module IR.BuiltinDecl

    Procnames for the builtin functions supported

    include BUILTINS.S with type t = Procname.t
    type t = Procname.t
    val __array_access : t
    val __assert_fail : t
    val __builtin_add_overflow : t
    val __builtin_mul_overflow : t
    val __builtin_sub_overflow : t
    val __builtin_va_arg : t
    val __builtin_va_copy : t
    val __builtin_va_end : t
    val __builtin_va_start : t
    val __builtin_offsetof : t
    val __cast : t

    __cast(val,typ) implements java's typ(val)

    val __cxx_typeid : t
    val __delete : t
    val __delete_array : t
    val __delete_locked_attribute : t
    val __exit : t
    val __objc_bridge_transfer : t
    val __get_array_length : t
    val __get_type_of : t
    val __global_access : t
    val __infer_assume : t
    val __infer_fail : t
    val __infer_skip : t

    used to represent behavior that is not modeled in infer

    val __instanceof : t

    __instanceof(val,typ) implements java's val instanceof typ

    val __java_throw : t

    __java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

    val __hack_throw : t
    val __method_set_ignore_attribute : t
    val __new : t
    val __new_array : t
    val __objc_alloc_no_fail : t
    val __objc_dictionary_literal : t
    val __objc_get_ref_count : t
    val __objc_set_ref_count : t
    val __placement_delete : t
    val __placement_new : t
    val __print_value : t
    val __require_allocated_array : t
    val __set_array_length : t
    val __set_file_attribute : t
    val __set_locked_attribute : t
    val __set_mem_attribute : t
    val __set_observer_attribute : t
    val __set_unsubscribed_observer_attribute : t
    val __set_wont_leak_attribute : t
    val __split_get_nth : t
    val __throw : t
    val __unwrap_exception : t
    val abort : t
    val exit : t
    val free : t
    val fscanf : t
    val fwscanf : t
    val malloc : t
    val malloc_no_fail : t
    val nsArray_arrayWithObjects : t
    val nsArray_arrayWithObjectsCount : t
    val objc_insert_key : t
    val objc_insert_value : t
    val objc_autorelease_pool_pop : t
    val objc_autorelease_pool_push : t
    val objc_cpp_throw : t
    val pthread_create : t
    val scanf : t
    val sscanf : t
    val swscanf : t
    val vfscanf : t
    val vfwscanf : t
    val vscanf : t
    val vsscanf : t
    val vswscanf : t
    val vwscanf : t
    val wscanf : t
    val zero_initialization : t
    val is_declared : Procname.t -> bool
    val __erlang_equal : Procname.t
    val __erlang_exactly_equal : Procname.t
    val __erlang_not_equal : Procname.t
    val __erlang_exactly_not_equal : Procname.t
    val __erlang_lesser : Procname.t
    val __erlang_lesser_or_equal : Procname.t
    val __erlang_greater : Procname.t
    val __erlang_greater_or_equal : Procname.t
    val __erlang_error_badkey : Procname.t
    val __erlang_error_badmatch : Procname.t
    val __erlang_error_badmap : Procname.t
    val __erlang_error_badrecord : Procname.t
    val __erlang_error_badreturn : Procname.t

    Not a runtime error in Erlang. It means that the actual type disagrees with the spec.

    val __erlang_error_case_clause : Procname.t
    val __erlang_error_function_clause : Procname.t
    val __erlang_error_if_clause : Procname.t
    val __erlang_error_try_clause : Procname.t
    val __erlang_make_atom : Procname.t
    val __erlang_make_integer : Procname.t
    val __erlang_make_cons : Procname.t
    val __erlang_make_nil : Procname.t
    val __erlang_make_tuple : Procname.t
    val __erlang_make_map : Procname.t
    val __erlang_make_str_const : Procname.t
    val __erlang_make_bitstring : Procname.t
    val __erlang_receive : Procname.t
    val __erlang_str_equal : Procname.t
    val __infer_initializer_list : Procname.t
    val __infer_skip_function : Procname.t
    val __infer_skip_gcc_asm_stmt : Procname.t
    val __infer_structured_binding : Procname.t
    val __infer_generic_selection_expr : Procname.t
    val __atomic_fetch_max : Procname.t
    val __atomic_fetch_min : Procname.t
    val __atomic_fetch_nand : Procname.t
    val __atomic_max_fetch : Procname.t
    val __atomic_min_fetch : Procname.t
    val __atomic_nand_fetch : Procname.t
    val __c11_atomic_fetch_max : Procname.t
    val __c11_atomic_fetch_min : Procname.t
    val __call_objc_block : Procname.t
    val __call_c_function_ptr : Procname.t
    val __opencl_atomic_fetch_max : Procname.t
    val __opencl_atomic_fetch_min : Procname.t
    val __builtin_cxx_co_return : Procname.t
    val __builtin_cxx_co_await : Procname.t
    val __get_lazy_class : t

    returns the a LazyClass representation of its arguement (a type name). A LazyClass represents a class that we know the name of but don't necessarily know if the class has been defined somewhere.

    val __lazy_class_initialize : t

    returns the singleton object associated with a given type, and performs lazily its initialization (only generated by the Hack frontend currently)

    val dispatch_sync : Procname.t
    val match_builtin : t -> 'a -> string -> bool
    diff --git a/website/static/odoc/next/infer/IR/CSharpClassName/index.html b/website/static/odoc/next/infer/IR/CSharpClassName/index.html index 8adea12d5ad..1565311d746 100644 --- a/website/static/odoc/next/infer/IR/CSharpClassName/index.html +++ b/website/static/odoc/next/infer/IR/CSharpClassName/index.html @@ -1,2 +1,2 @@ -CSharpClassName (infer.IR.CSharpClassName)

    Module IR.CSharpClassName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : namespace:string option -> classname:string -> t
    val from_string : string -> t
    val to_string : t -> string

    to_string (from_string "X.Y.Z") = "X.Y.Z"

    val pp : Stdlib.Format.formatter -> t -> unit

    pp includes namespace if any

    val pp_with_verbosity : verbose:bool -> Stdlib.Format.formatter -> t -> unit

    if verbose then print namespace if present, otherwise only print class

    val classname : t -> string
    \ No newline at end of file +CSharpClassName (infer.IR.CSharpClassName)

    Module IR.CSharpClassName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : namespace:string option -> classname:string -> t
    val from_string : string -> t
    val to_string : t -> string

    to_string (from_string "X.Y.Z") = "X.Y.Z"

    val pp : Stdlib.Format.formatter -> t -> unit

    pp includes namespace if any

    val pp_with_verbosity : verbose:bool -> Stdlib.Format.formatter -> t -> unit

    if verbose then print namespace if present, otherwise only print class

    val classname : t -> string
    diff --git a/website/static/odoc/next/infer/IR/CallFlags/index.html b/website/static/odoc/next/infer/IR/CallFlags/index.html index 79d12048091..0a8d24d451e 100644 --- a/website/static/odoc/next/infer/IR/CallFlags/index.html +++ b/website/static/odoc/next/infer/IR/CallFlags/index.html @@ -1,2 +1,2 @@ -CallFlags (infer.IR.CallFlags)

    Module IR.CallFlags

    The Smallfoot Intermediate Language: Call Flags

    module F = Stdlib.Format
    type t = {
    1. cf_assign_last_arg : bool;
    2. cf_injected_destructor : bool;
      (*

      true if this is an implicit C++ destructor call injected by the clang frontend

      *)
    3. cf_interface : bool;
    4. cf_is_objc_block : bool;
    5. cf_is_c_function_ptr : bool;
    6. cf_virtual : bool;
    }

    Flags for a procedure call

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit
    val default : t

    Default value where all fields are set to false

    \ No newline at end of file +CallFlags (infer.IR.CallFlags)

    Module IR.CallFlags

    The Smallfoot Intermediate Language: Call Flags

    module F = Stdlib.Format
    type t = {
    1. cf_assign_last_arg : bool;
    2. cf_injected_destructor : bool;
      (*

      true if this is an implicit C++ destructor call injected by the clang frontend

      *)
    3. cf_interface : bool;
    4. cf_is_objc_block : bool;
    5. cf_is_c_function_ptr : bool;
    6. cf_virtual : bool;
    }

    Flags for a procedure call

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit
    val default : t

    Default value where all fields are set to false

    diff --git a/website/static/odoc/next/infer/IR/CapturedVar/index.html b/website/static/odoc/next/infer/IR/CapturedVar/index.html index a201aa1fb8c..1bf1cda7d9a 100644 --- a/website/static/odoc/next/infer/IR/CapturedVar/index.html +++ b/website/static/odoc/next/infer/IR/CapturedVar/index.html @@ -1,7 +1,7 @@ -CapturedVar (infer.IR.CapturedVar)

    Module IR.CapturedVar

    type capture_mode =
    1. | ByReference
    2. | ByValue
    val compare_capture_mode : capture_mode -> capture_mode -> int
    val equal_capture_mode : capture_mode -> capture_mode -> bool
    val yojson_of_capture_mode : capture_mode -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val sexp_of_capture_mode : capture_mode -> Sexplib0.Sexp.t
    val capture_mode_of_sexp : Sexplib0.Sexp.t -> capture_mode
    val hash_fold_capture_mode : +CapturedVar (infer.IR.CapturedVar)

    Module IR.CapturedVar

    type capture_mode =
    1. | ByReference
    2. | ByValue
    val compare_capture_mode : capture_mode -> capture_mode -> int
    val equal_capture_mode : capture_mode -> capture_mode -> bool
    val yojson_of_capture_mode : capture_mode -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val sexp_of_capture_mode : capture_mode -> Sexplib0.Sexp.t
    val capture_mode_of_sexp : Sexplib0.Sexp.t -> capture_mode
    val hash_fold_capture_mode : Ppx_hash_lib.Std.Hash.state -> capture_mode -> Ppx_hash_lib.Std.Hash.state
    val hash_capture_mode : capture_mode -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize_capture_mode : capture_mode -> capture_mode
    val hash_normalize_capture_mode_opt : capture_mode option -> - capture_mode option
    val hash_normalize_capture_mode_list : capture_mode list -> capture_mode list
    val string_of_capture_mode : capture_mode -> string
    val is_captured_by_ref : capture_mode -> bool
    type t = {
    1. pvar : Pvar.t;
    2. typ : Typ.t;
    3. capture_mode : capture_mode;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file + capture_mode option
    val hash_normalize_capture_mode_list : capture_mode list -> capture_mode list
    val string_of_capture_mode : capture_mode -> string
    val is_captured_by_ref : capture_mode -> bool
    type t = {
    1. pvar : Pvar.t;
    2. typ : Typ.t;
    3. capture_mode : capture_mode;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IR/Cfg/index.html b/website/static/odoc/next/infer/IR/Cfg/index.html index d9b7315308f..12738854271 100644 --- a/website/static/odoc/next/infer/IR/Cfg/index.html +++ b/website/static/odoc/next/infer/IR/Cfg/index.html @@ -1,2 +1,2 @@ -Cfg (infer.IR.Cfg)

    Module IR.Cfg

    Control Flow Graph for Interprocedural Analysis

    type t = Procdesc.t IR.Procname.Hash.t

    A control-flow graph is a collection of all the CFGs for the procedure names in a file

    val get_all_defined_proc_names : t -> Procname.t list

    get all the procedure names that are defined in the current file

    val store : IBase.SourceFile.t -> t -> unit

    Save the individual Procdesc.t and ProcAttributes.t to the database for the procedures in the cfg.

    Functions for manipulating an interprocedural CFG

    val create : unit -> t

    create a new empty cfg

    val create_proc_desc : t -> ProcAttributes.t -> Procdesc.t

    Create a new procdesc. If the procedure is defined, you need to create and set the start/exit nodes after creating the procedure.

    val iter_sorted : t -> f:(Procdesc.t -> unit) -> unit

    Iterate over all the proc descs in the cfg in ascending order

    val fold_sorted : t -> init:'a -> f:('a -> Procdesc.t -> 'a) -> 'a

    Fold over all the proc descs in the cfg in ascending order

    val pp_proc_signatures : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Cfg (infer.IR.Cfg)

    Module IR.Cfg

    Control Flow Graph for Interprocedural Analysis

    type t = Procdesc.t IR.Procname.Hash.t

    A control-flow graph is a collection of all the CFGs for the procedure names in a file

    val get_all_defined_proc_names : t -> Procname.t list

    get all the procedure names that are defined in the current file

    val store : IBase.SourceFile.t -> t -> unit

    Save the individual Procdesc.t and ProcAttributes.t to the database for the procedures in the cfg.

    Functions for manipulating an interprocedural CFG

    val create : unit -> t

    create a new empty cfg

    val create_proc_desc : t -> ProcAttributes.t -> Procdesc.t

    Create a new procdesc. If the procedure is defined, you need to create and set the start/exit nodes after creating the procedure.

    val iter_sorted : t -> f:(Procdesc.t -> unit) -> unit

    Iterate over all the proc descs in the cfg in ascending order

    val fold_sorted : t -> init:'a -> f:('a -> Procdesc.t -> 'a) -> 'a

    Fold over all the proc descs in the cfg in ascending order

    val pp_proc_signatures : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IR/ClangMethodKind/index.html b/website/static/odoc/next/infer/IR/ClangMethodKind/index.html index 1a2d3f7175d..41ac43ca719 100644 --- a/website/static/odoc/next/infer/IR/ClangMethodKind/index.html +++ b/website/static/odoc/next/infer/IR/ClangMethodKind/index.html @@ -1,2 +1,2 @@ -ClangMethodKind (infer.IR.ClangMethodKind)

    Module IR.ClangMethodKind

    type t =
    1. | CPP_INSTANCE
    2. | OBJC_INSTANCE
    3. | CPP_CLASS
    4. | OBJC_CLASS
    5. | BLOCK
    6. | C_FUNCTION
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val to_string : t -> string
    \ No newline at end of file +ClangMethodKind (infer.IR.ClangMethodKind)

    Module IR.ClangMethodKind

    type t =
    1. | CPP_INSTANCE
    2. | OBJC_INSTANCE
    3. | CPP_CLASS
    4. | OBJC_CLASS
    5. | BLOCK
    6. | C_FUNCTION
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val to_string : t -> string
    diff --git a/website/static/odoc/next/infer/IR/Const/index.html b/website/static/odoc/next/infer/IR/Const/index.html index 43faa27035b..16c17cf95b9 100644 --- a/website/static/odoc/next/infer/IR/Const/index.html +++ b/website/static/odoc/next/infer/IR/Const/index.html @@ -1,2 +1,2 @@ -Const (infer.IR.Const)

    Module IR.Const

    The Smallfoot Intermediate Language: Constants

    module F = Stdlib.Format
    type t =
    1. | Cint of IntLit.t
      (*

      integer constants

      *)
    2. | Cfun of Procname.t
      (*

      function names

      *)
    3. | Cstr of string
      (*

      string constants

      *)
    4. | Cfloat of float
      (*

      float constants

      *)
    5. | Cclass of Ident.name
      (*

      class constant

      *)

    Constants

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val kind_equal : t -> t -> bool

    Return true if the constants have the same kind (both integers, ...)

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a const

    val iszero_int_float : t -> bool
    val isone_int_float : t -> bool
    val isminusone_int_float : t -> bool
    \ No newline at end of file +Const (infer.IR.Const)

    Module IR.Const

    The Smallfoot Intermediate Language: Constants

    module F = Stdlib.Format
    type t =
    1. | Cint of IntLit.t
      (*

      integer constants

      *)
    2. | Cfun of Procname.t
      (*

      function names

      *)
    3. | Cstr of string
      (*

      string constants

      *)
    4. | Cfloat of float
      (*

      float constants

      *)
    5. | Cclass of Ident.name
      (*

      class constant

      *)

    Constants

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val kind_equal : t -> t -> bool

    Return true if the constants have the same kind (both integers, ...)

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a const

    val iszero_int_float : t -> bool
    val isone_int_float : t -> bool
    val isminusone_int_float : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/DecompiledExp/index.html b/website/static/odoc/next/infer/IR/DecompiledExp/index.html index ee1516ebca1..a6c2d011924 100644 --- a/website/static/odoc/next/infer/IR/DecompiledExp/index.html +++ b/website/static/odoc/next/infer/IR/DecompiledExp/index.html @@ -1,2 +1,2 @@ -DecompiledExp (infer.IR.DecompiledExp)

    Module IR.DecompiledExp

    The Smallfoot Intermediate Language: Decompiled Expressions

    module F = Stdlib.Format
    type t =
    1. | Darray of t * t
    2. | Dbinop of Binop.t * t * t
    3. | Dconst of Const.t
    4. | Dsizeof of Typ.t * t option * Subtype.t
    5. | Dderef of t
    6. | Dfcall of t * t list * IBase.Location.t * CallFlags.t
    7. | Darrow of t * Fieldname.t
    8. | Ddot of t * Fieldname.t
    9. | Dpvar of Pvar.t
    10. | Dpvaraddr of Pvar.t
    11. | Dunop of Unop.t * t
    12. | Dunknown
    13. | Dretcall of t * t list * IBase.Location.t * CallFlags.t

    expression representing the result of decompilation

    type vpath = t option

    Value paths: identify an occurrence of a value in a symbolic heap each expression represents a path, with Dpvar being the simplest one

    val pp : F.formatter -> t -> unit
    val to_string : t -> string

    convert to a string

    val pp_vpath : IStdlib.Pp.env -> F.formatter -> vpath -> unit

    Pretty print a value path

    val has_tmp_var : t -> bool

    return true if dexp contains a temporary pvar

    \ No newline at end of file +DecompiledExp (infer.IR.DecompiledExp)

    Module IR.DecompiledExp

    The Smallfoot Intermediate Language: Decompiled Expressions

    module F = Stdlib.Format
    type t =
    1. | Darray of t * t
    2. | Dbinop of Binop.t * t * t
    3. | Dconst of Const.t
    4. | Dsizeof of Typ.t * t option * Subtype.t
    5. | Dderef of t
    6. | Dfcall of t * t list * IBase.Location.t * CallFlags.t
    7. | Darrow of t * Fieldname.t
    8. | Ddot of t * Fieldname.t
    9. | Dpvar of Pvar.t
    10. | Dpvaraddr of Pvar.t
    11. | Dunop of Unop.t * t
    12. | Dunknown
    13. | Dretcall of t * t list * IBase.Location.t * CallFlags.t

    expression representing the result of decompilation

    type vpath = t option

    Value paths: identify an occurrence of a value in a symbolic heap each expression represents a path, with Dpvar being the simplest one

    val pp : F.formatter -> t -> unit
    val to_string : t -> string

    convert to a string

    val pp_vpath : IStdlib.Pp.env -> F.formatter -> vpath -> unit

    Pretty print a value path

    val has_tmp_var : t -> bool

    return true if dexp contains a temporary pvar

    diff --git a/website/static/odoc/next/infer/IR/Dependencies/index.html b/website/static/odoc/next/infer/IR/Dependencies/index.html index 5747103f9c6..b767c6aa21a 100644 --- a/website/static/odoc/next/infer/IR/Dependencies/index.html +++ b/website/static/odoc/next/infer/IR/Dependencies/index.html @@ -1,2 +1,2 @@ -Dependencies (infer.IR.Dependencies)

    Module IR.Dependencies

    module F = Stdlib.Format
    type complete = {
    1. summary_loads : Procname.t list;
    2. recursion_edges : Procname.Set.t;
    3. other_proc_names : Procname.t list;
    4. used_tenv_sources : IBase.SourceFile.t list;
    }
    type t =
    1. | Partial
    2. | Complete of complete
      (*

      Dependencies are partial and mutable while the summary to which they belong is being computed, then made complete and immutable once the summary is fully analyzed.

      *)
    val pp : F.formatter -> t -> unit

    Mutable state keeping track during on-demand interprocedural analysis of (1) which procedure is currently being analyzed and (2) which procedures type environments were used to compute summaries.

    Located here in the IR module to avoid adding parameters threading the currently-under-analysis procedure throughout various analysis engine and checker code. These dependencies are then used in the Backend module to conservatively invalidate procedure summaries that were computed using out-of-date type environment information.

    val currently_under_analysis : Procname.t option IStdlib.IStd.ref
    val reset : Procname.t -> t
    val freeze : Procname.t -> t -> complete
    val complete_exn : t -> complete
    type kind =
    1. | SummaryLoad
      (*

      the summary of a procedure was queried

      *)
    2. | RecursionEdge
      (*

      ondemand returned an empty summary because a mutual recursion cycle was detected

      *)
    3. | Other
      (*

      anything else, eg the attributes of the function were loaded

      *)
    val record_pname_dep : ?caller:Procname.t -> kind -> Procname.t -> unit
    val record_srcfile_dep : IBase.SourceFile.t -> unit
    val clear : unit -> unit

    drop all currently-recorded dependency edges to reclaim memory

    val merge : complete -> complete -> complete
    \ No newline at end of file +Dependencies (infer.IR.Dependencies)

    Module IR.Dependencies

    module F = Stdlib.Format
    type complete = {
    1. summary_loads : Procname.t list;
    2. recursion_edges : Procname.Set.t;
    3. other_proc_names : Procname.t list;
    4. used_tenv_sources : IBase.SourceFile.t list;
    }
    type t =
    1. | Partial
    2. | Complete of complete
      (*

      Dependencies are partial and mutable while the summary to which they belong is being computed, then made complete and immutable once the summary is fully analyzed.

      *)
    val pp : F.formatter -> t -> unit

    Mutable state keeping track during on-demand interprocedural analysis of (1) which procedure is currently being analyzed and (2) which procedures type environments were used to compute summaries.

    Located here in the IR module to avoid adding parameters threading the currently-under-analysis procedure throughout various analysis engine and checker code. These dependencies are then used in the Backend module to conservatively invalidate procedure summaries that were computed using out-of-date type environment information.

    val currently_under_analysis : Procname.t option IStdlib.IStd.ref
    val reset : Procname.t -> t
    val freeze : Procname.t -> t -> complete
    val complete_exn : t -> complete
    type kind =
    1. | SummaryLoad
      (*

      the summary of a procedure was queried

      *)
    2. | RecursionEdge
      (*

      ondemand returned an empty summary because a mutual recursion cycle was detected

      *)
    3. | Other
      (*

      anything else, eg the attributes of the function were loaded

      *)
    val record_pname_dep : ?caller:Procname.t -> kind -> Procname.t -> unit
    val record_srcfile_dep : IBase.SourceFile.t -> unit
    val clear : unit -> unit

    drop all currently-recorded dependency edges to reclaim memory

    val merge : complete -> complete -> complete
    diff --git a/website/static/odoc/next/infer/IR/DotCfg/index.html b/website/static/odoc/next/infer/IR/DotCfg/index.html index 95d40b60910..abb63c19a29 100644 --- a/website/static/odoc/next/infer/IR/DotCfg/index.html +++ b/website/static/odoc/next/infer/IR/DotCfg/index.html @@ -1,2 +1,2 @@ -DotCfg (infer.IR.DotCfg)

    Module IR.DotCfg

    val emit_frontend_cfg : IBase.SourceFile.t -> Cfg.t -> unit

    emit the given Cfg.t in the "dot" format to a file determined by IBase.Config values

    val emit_proc_desc : IBase.SourceFile.t -> Procdesc.t -> string

    emit the given Procdesc.t in the "dot" format to a file in infer-out/captured/ and return the path to that file

    \ No newline at end of file +DotCfg (infer.IR.DotCfg)

    Module IR.DotCfg

    val emit_frontend_cfg : IBase.SourceFile.t -> Cfg.t -> unit

    emit the given Cfg.t in the "dot" format to a file determined by IBase.Config values

    val emit_proc_desc : IBase.SourceFile.t -> Procdesc.t -> string

    emit the given Procdesc.t in the "dot" format to a file in infer-out/captured/ and return the path to that file

    diff --git a/website/static/odoc/next/infer/IR/ErlangTypeName/index.html b/website/static/odoc/next/infer/IR/ErlangTypeName/index.html index fae69e24f6c..e5f45fc7989 100644 --- a/website/static/odoc/next/infer/IR/ErlangTypeName/index.html +++ b/website/static/odoc/next/infer/IR/ErlangTypeName/index.html @@ -1,2 +1,2 @@ -ErlangTypeName (infer.IR.ErlangTypeName)

    Module IR.ErlangTypeName

    type t =
    1. | Any
    2. | Atom
    3. | Integer
    4. | Cons
    5. | Nil
    6. | Tuple of int
    7. | Map
    8. | GenServerPid of {
      1. module_name : string option;
      }
    9. | ModuleInfo
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    val to_string : t -> string
    val from_string : string -> t option
    val atom_name : string
    val atom_hash : string
    val atom_true : string
    val atom_false : string
    val module_info_field_name : string
    val module_info_attributes_class_name : string
    val calculate_hash : string -> int
    val integer_value : string
    val cons_head : string
    val cons_tail : string
    val tuple_elem : int -> string
    val tuple_field_names : int -> string list
    val erlang_namespace : string
    val unsupported : string
    val infer_erlang_namespace : string
    \ No newline at end of file +ErlangTypeName (infer.IR.ErlangTypeName)

    Module IR.ErlangTypeName

    type t =
    1. | Any
    2. | Atom
    3. | Integer
    4. | Cons
    5. | Nil
    6. | Tuple of int
    7. | Map
    8. | GenServerPid of {
      1. module_name : string option;
      }
    9. | ModuleInfo
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : Stdlib.Format.formatter -> t -> unit
    val to_string : t -> string
    val from_string : string -> t option
    val atom_name : string
    val atom_hash : string
    val atom_true : string
    val atom_false : string
    val module_info_field_name : string
    val module_info_attributes_class_name : string
    val calculate_hash : string -> int
    val integer_value : string
    val cons_head : string
    val cons_tail : string
    val tuple_elem : int -> string
    val tuple_field_names : int -> string list
    val erlang_namespace : string
    val unsupported : string
    val infer_erlang_namespace : string
    diff --git a/website/static/odoc/next/infer/IR/Exp/index.html b/website/static/odoc/next/infer/IR/Exp/index.html index d19fcd4b6ba..2dce341ddbc 100644 --- a/website/static/odoc/next/infer/IR/Exp/index.html +++ b/website/static/odoc/next/infer/IR/Exp/index.html @@ -1,5 +1,5 @@ -Exp (infer.IR.Exp)

    Module IR.Exp

    The Smallfoot Intermediate Language: Expressions

    NOTE: For doing substitutionson expressions, there are some functions in Sil.

    module F = Stdlib.Format
    type closure = {
    1. name : Procname.t;
    2. captured_vars : (t * Pvar.t * Typ.t * CapturedVar.capture_mode) list;
    }
    and sizeof_data = {
    1. typ : Typ.t;
    2. nbytes : int option;
    3. dynamic_length : t option;
    4. subtype : Subtype.t;
    }

    This records information about a sizeof(typ) expression.

    nbytes represents the result of the evaluation of sizeof(typ) if it is statically known.

    If typ is of the form Tarray elt (Some static_length), then dynamic_length is the number of elements of type elt in the array. The dynamic_length, tracked by symbolic execution, may differ from the static_length obtained from the type definition, e.g. when an array is over-allocated.

    If typ is a struct type, the dynamic_length is that of the final extensible array, if any.

    and t =
    1. | Var of Ident.t
      (*

      Pure variable: it is not an lvalue

      *)
    2. | UnOp of Unop.t * t * Typ.t option
      (*

      Unary operator with type of the result if known

      *)
    3. | BinOp of Binop.t * t * t
      (*

      Binary operator

      *)
    4. | Exn of t
      (*

      Exception

      *)
    5. | Closure of closure
      (*

      Anonymous function

      *)
    6. | Const of Const.t
      (*

      Constants

      *)
    7. | Cast of Typ.t * t
      (*

      Type cast

      *)
    8. | Lvar of Pvar.t
      (*

      The address of a program variable

      *)
    9. | Lfield of t * Fieldname.t * Typ.t
      (*

      A field offset, the type is the surrounding struct type

      *)
    10. | Lindex of t * t
      (*

      An array index offset: exp1[exp2]

      *)
    11. | Sizeof of sizeof_data

    Program expressions.

    val compare_closure : closure -> closure -> int
    val compare_sizeof_data : sizeof_data -> sizeof_data -> int
    val compare : t -> t -> int
    val hash_fold_closure : +Exp (infer.IR.Exp)

    Module IR.Exp

    The Smallfoot Intermediate Language: Expressions

    NOTE: For doing substitutionson expressions, there are some functions in Sil.

    module F = Stdlib.Format
    type closure = {
    1. name : Procname.t;
    2. captured_vars : (t * Pvar.t * Typ.t * CapturedVar.capture_mode) list;
    }
    and sizeof_data = {
    1. typ : Typ.t;
    2. nbytes : int option;
    3. dynamic_length : t option;
    4. subtype : Subtype.t;
    5. nullable : bool;
    }

    This records information about a sizeof(typ) expression.

    nbytes represents the result of the evaluation of sizeof(typ) if it is statically known.

    If typ is of the form Tarray elt (Some static_length), then dynamic_length is the number of elements of type elt in the array. The dynamic_length, tracked by symbolic execution, may differ from the static_length obtained from the type definition, e.g. when an array is over-allocated.

    If typ is a struct type, the dynamic_length is that of the final extensible array, if any.

    and t =
    1. | Var of Ident.t
      (*

      Pure variable: it is not an lvalue

      *)
    2. | UnOp of Unop.t * t * Typ.t option
      (*

      Unary operator with type of the result if known

      *)
    3. | BinOp of Binop.t * t * t
      (*

      Binary operator

      *)
    4. | Exn of t
      (*

      Exception

      *)
    5. | Closure of closure
      (*

      Anonymous function

      *)
    6. | Const of Const.t
      (*

      Constants

      *)
    7. | Cast of Typ.t * t
      (*

      Type cast

      *)
    8. | Lvar of Pvar.t
      (*

      The address of a program variable

      *)
    9. | Lfield of t * Fieldname.t * Typ.t
      (*

      A field offset, the type is the surrounding struct type

      *)
    10. | Lindex of t * t
      (*

      An array index offset: exp1[exp2]

      *)
    11. | Sizeof of sizeof_data

    Program expressions.

    val compare_closure : closure -> closure -> int
    val compare_sizeof_data : sizeof_data -> sizeof_data -> int
    val compare : t -> t -> int
    val hash_fold_closure : Ppx_hash_lib.Std.Hash.state -> closure -> Ppx_hash_lib.Std.Hash.state
    val hash_closure : closure -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_fold_sizeof_data : @@ -8,7 +8,7 @@ Ppx_hash_lib.Std.Hash.state
    val hash_sizeof_data : sizeof_data -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_fold_t : Ppx_hash_lib.Std.Hash.state -> t -> - Ppx_hash_lib.Std.Hash.state
    val hash : t -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize_closure : closure -> closure
    val hash_normalize_closure_opt : closure option -> closure option
    val hash_normalize_closure_list : closure list -> closure list
    val hash_normalize_sizeof_data : sizeof_data -> sizeof_data
    val hash_normalize_sizeof_data_opt : sizeof_data option -> sizeof_data option
    val hash_normalize_sizeof_data_list : sizeof_data list -> sizeof_data list
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for expressions.

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set of expressions.

    module Map : IStdlib.IStd.Caml.Map.S with type key = t

    Map with expression keys.

    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Hashtable with expression keys.

    val is_null_literal : t -> bool
    val is_this : t -> bool

    return true if exp is the special this/self expression

    val is_zero : t -> bool
    val is_const : t -> bool

    Utility Functions for Expressions

    val texp_to_typ : Typ.t option -> t -> Typ.t

    Turn an expression representing a type into the type it represents If not a sizeof, return the default type if given, otherwise raise an exception

    val root_of_lexp : t -> t

    Return the root of lexp.

    val get_undefined : bool -> t

    Get an expression "undefined", the boolean indicates whether the undefined value goest into the footprint

    val pointer_arith : t -> bool

    Checks whether an expression denotes a location using pointer arithmetic. Currently, catches array - indexing expressions such as ai only.

    val has_local_addr : t -> bool

    returns true if the expression operates on address of local variable

    val zero : t

    Integer constant 0

    val null : t

    Null constant

    val one : t

    Integer constant 1

    val minus_one : t

    Integer constant -1

    val int : IntLit.t -> t

    Create integer constant

    val float : float -> t

    Create float constant

    val bool : bool -> t

    Create integer constant corresponding to the boolean value

    val eq : t -> t -> t

    Create expression e1 == e2

    val ne : t -> t -> t

    Create expression e1 != e2

    val le : t -> t -> t

    Create expression e1 <= e2

    val lt : t -> t -> t

    Create expression e1 < e2

    val free_vars : t -> Ident.t IStdlib.IStd.Sequence.t

    all the idents appearing in the expression

    val gen_free_vars : t -> (unit, Ident.t) IStdlib.IStd.Sequence.Generator.t
    val ident_mem : t -> Ident.t -> bool

    true if the identifier appears in the expression

    val program_vars : t -> Pvar.t IStdlib.IStd.Sequence.t

    all the program variables appearing in the expression

    val closures : t -> closure IStdlib.IStd.Sequence.t

    all closures appearing in the expression

    val fold_captured : f:('a -> t -> 'a) -> t -> 'a -> 'a

    Fold over the expressions captured by this expression.

    val pp_diff : ?print_types:bool -> IStdlib.Pp.env -> F.formatter -> t -> unit
    val pp : F.formatter -> t -> unit
    val pp_closure : F.formatter -> closure -> unit
    val to_string : t -> string
    val d_exp : t -> unit

    dump an expression.

    val pp_texp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type.

    val pp_texp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type with all the details.

    val d_texp_full : t -> unit

    Dump a type expression with all the details.

    val d_list : t list -> unit

    Dump a list of expressions.

    val is_cpp_closure : t -> bool
    val zero_of_type : Typ.t -> t option

    Returns the zero value of a type, for int, float and ptr types

    val zero_of_type_exn : Typ.t -> t
    val ignore_cast : t -> t
    val ignore_integer_cast : t -> t
    val get_java_class_initializer : + Ppx_hash_lib.Std.Hash.state
    val hash : t -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize_closure : closure -> closure
    val hash_normalize_closure_opt : closure option -> closure option
    val hash_normalize_closure_list : closure list -> closure list
    val hash_normalize_sizeof_data : sizeof_data -> sizeof_data
    val hash_normalize_sizeof_data_opt : sizeof_data option -> sizeof_data option
    val hash_normalize_sizeof_data_list : sizeof_data list -> sizeof_data list
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for expressions.

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set of expressions.

    module Map : IStdlib.IStd.Caml.Map.S with type key = t

    Map with expression keys.

    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Hashtable with expression keys.

    val is_null_literal : t -> bool
    val is_this : t -> bool

    return true if exp is the special this/self expression

    val is_zero : t -> bool
    val is_const : t -> bool

    Utility Functions for Expressions

    val texp_to_typ : Typ.t option -> t -> Typ.t

    Turn an expression representing a type into the type it represents If not a sizeof, return the default type if given, otherwise raise an exception

    val root_of_lexp : t -> t

    Return the root of lexp.

    val get_undefined : bool -> t

    Get an expression "undefined", the boolean indicates whether the undefined value goest into the footprint

    val pointer_arith : t -> bool

    Checks whether an expression denotes a location using pointer arithmetic. Currently, catches array - indexing expressions such as ai only.

    val has_local_addr : t -> bool

    returns true if the expression operates on address of local variable

    val zero : t

    Integer constant 0

    val null : t

    Null constant

    val one : t

    Integer constant 1

    val minus_one : t

    Integer constant -1

    val int : IntLit.t -> t

    Create integer constant

    val float : float -> t

    Create float constant

    val bool : bool -> t

    Create integer constant corresponding to the boolean value

    val eq : t -> t -> t

    Create expression e1 == e2

    val ne : t -> t -> t

    Create expression e1 != e2

    val le : t -> t -> t

    Create expression e1 <= e2

    val lt : t -> t -> t

    Create expression e1 < e2

    val free_vars : t -> Ident.t IStdlib.IStd.Sequence.t

    all the idents appearing in the expression

    val gen_free_vars : t -> (unit, Ident.t) IStdlib.IStd.Sequence.Generator.t
    val ident_mem : t -> Ident.t -> bool

    true if the identifier appears in the expression

    val program_vars : t -> Pvar.t IStdlib.IStd.Sequence.t

    all the program variables appearing in the expression

    val closures : t -> closure IStdlib.IStd.Sequence.t

    all closures appearing in the expression

    val fold_captured : f:('a -> t -> 'a) -> t -> 'a -> 'a

    Fold over the expressions captured by this expression.

    val pp_diff : ?print_types:bool -> IStdlib.Pp.env -> F.formatter -> t -> unit
    val pp : F.formatter -> t -> unit
    val pp_closure : F.formatter -> closure -> unit
    val to_string : t -> string
    val d_exp : t -> unit

    dump an expression.

    val pp_texp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type.

    val pp_texp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type with all the details.

    val d_texp_full : t -> unit

    Dump a type expression with all the details.

    val d_list : t list -> unit

    Dump a list of expressions.

    val is_cpp_closure : t -> bool
    val zero_of_type : Typ.t -> t option

    Returns the zero value of a type, for int, float and ptr types

    val zero_of_type_exn : Typ.t -> t
    val ignore_cast : t -> t
    val ignore_integer_cast : t -> t
    val get_java_class_initializer : Tenv.t -> t -> - (Procname.t * Pvar.t * Fieldname.t * Typ.t) option

    Returns the class initializer of the given expression in Java

    \ No newline at end of file + (Procname.t * Pvar.t * Fieldname.t * Typ.t) option

    Returns the class initializer of the given expression in Java

    diff --git a/website/static/odoc/next/infer/IR/Fieldname/Map/index.html b/website/static/odoc/next/infer/IR/Fieldname/Map/index.html index 20afd9ba9fe..0df23813329 100644 --- a/website/static/odoc/next/infer/IR/Fieldname/Map/index.html +++ b/website/static/odoc/next/infer/IR/Fieldname/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Fieldname.Map)

    Module Fieldname.Map

    Map for fieldnames

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Fieldname.Map)

    Module Fieldname.Map

    Map for fieldnames

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Fieldname/Set/index.html b/website/static/odoc/next/infer/IR/Fieldname/Set/index.html index fdf7b55ed1d..29fd5bbb12c 100644 --- a/website/static/odoc/next/infer/IR/Fieldname/Set/index.html +++ b/website/static/odoc/next/infer/IR/Fieldname/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Fieldname.Set)

    Module Fieldname.Set

    Set for fieldnames

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Fieldname.Set)

    Module Fieldname.Set

    Set for fieldnames

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Fieldname/index.html b/website/static/odoc/next/infer/IR/Fieldname/index.html index a20c7c1c4aa..68a24dd783d 100644 --- a/website/static/odoc/next/infer/IR/Fieldname/index.html +++ b/website/static/odoc/next/infer/IR/Fieldname/index.html @@ -1,5 +1,5 @@ -Fieldname (infer.IR.Fieldname)

    Module IR.Fieldname

    module F = Stdlib.Format
    type captured_data = {
    1. capture_mode : CapturedVar.capture_mode;
    2. is_weak : bool;
    }
    val compare_captured_data : captured_data -> captured_data -> int
    val equal_captured_data : captured_data -> captured_data -> bool
    val yojson_of_captured_data : +Fieldname (infer.IR.Fieldname)

    Module IR.Fieldname

    module F = Stdlib.Format
    type captured_data = {
    1. capture_mode : CapturedVar.capture_mode;
    2. is_weak : bool;
    3. is_function_pointer : bool;
    }
    val compare_captured_data : captured_data -> captured_data -> int
    val equal_captured_data : captured_data -> captured_data -> bool
    val yojson_of_captured_data : captured_data -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val sexp_of_captured_data : captured_data -> Sexplib0.Sexp.t
    val captured_data_of_sexp : Sexplib0.Sexp.t -> captured_data
    val hash_fold_captured_data : Ppx_hash_lib.Std.Hash.state -> @@ -8,4 +8,4 @@ captured_data option -> captured_data option
    val hash_normalize_captured_data_list : captured_data list -> - captured_data list
    type t

    Names for fields of class/struct/union

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except template arguments.

    val make : ?captured_data:captured_data -> Typ.Name.t -> string -> t

    create a field of the given class and fieldname

    val get_class_name : t -> Typ.Name.t
    val get_field_name : t -> string
    val mk_capture_field_in_closure : Mangled.t -> captured_data -> t
    val is_capture_field_in_closure : t -> bool
    val is_weak_capture_field_in_closure : t -> bool
    val is_capture_field_in_closure_by_ref : t -> bool
    val is_java : t -> bool
    val is_java_synthetic : t -> bool

    Check if the field is autogenerated/synthetic *

    val is_internal : t -> bool

    Check if the field has the prefix "__" or "_M_" (internal field of std::thread::id)

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Set for fieldnames

    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Map for fieldnames

    val is_java_outer_instance : t -> bool

    Check if the field is the synthetic this$n of a nested class, used to access the n-th outer instance.

    val to_string : t -> string

    Convert a field name to a string.

    val to_full_string : t -> string
    val to_simplified_string : t -> string

    Convert a fieldname to a simplified string with at most one-level path. For example,

    • In C++: "<ClassName>::<FieldName>"
    • In Java, ObjC, C#: "<ClassName>.<FieldName>"
    • In C: "<StructName>.<FieldName>" or "<UnionName>.<FieldName>"
    • In Erlang: "<FieldName>"
    val patterns_match : Re.Str.regexp list -> t -> bool

    Test whether a field full string matches to one of the regular expressions.

    val pp : F.formatter -> t -> unit

    Pretty print a field name.

    \ No newline at end of file + captured_data list
    type t

    Names for fields of class/struct/union

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except template arguments.

    val make : ?captured_data:captured_data -> Typ.Name.t -> string -> t

    create a field of the given class and fieldname

    val get_class_name : t -> Typ.Name.t
    val get_field_name : t -> string
    val mk_capture_field_in_closure : Mangled.t -> captured_data -> t
    val is_capture_field_in_closure : t -> bool
    val is_weak_capture_field_in_closure : t -> bool
    val is_capture_field_in_closure_by_ref : t -> bool
    val is_capture_field_function_pointer : t -> bool
    val is_java : t -> bool
    val is_java_synthetic : t -> bool

    Check if the field is autogenerated/synthetic *

    val is_internal : t -> bool

    Check if the field has the prefix "__" or "_M_" (internal field of std::thread::id)

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Set for fieldnames

    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Map for fieldnames

    val is_java_outer_instance : t -> bool

    Check if the field is the synthetic this$n of a nested class, used to access the n-th outer instance.

    val to_string : t -> string

    Convert a field name to a string.

    val to_full_string : t -> string
    val to_simplified_string : t -> string

    Convert a fieldname to a simplified string with at most one-level path. For example,

    • In C++: "<ClassName>::<FieldName>"
    • In Java, ObjC, C#: "<ClassName>.<FieldName>"
    • In C: "<StructName>.<FieldName>" or "<UnionName>.<FieldName>"
    • In Erlang: "<FieldName>"
    val patterns_match : IStdlib.IStd.Str.regexp list -> t -> bool

    Test whether a field full string matches to one of the regular expressions.

    val pp : F.formatter -> t -> unit

    Pretty print a field name.

    val add_underscore : t -> t
    diff --git a/website/static/odoc/next/infer/IR/Filtering/index.html b/website/static/odoc/next/infer/IR/Filtering/index.html index cd712a18731..d754b921ff9 100644 --- a/website/static/odoc/next/infer/IR/Filtering/index.html +++ b/website/static/odoc/next/infer/IR/Filtering/index.html @@ -1,2 +1,2 @@ -Filtering (infer.IR.Filtering)

    Module IR.Filtering

    type source_files_filter = IBase.SourceFile.t -> bool
    type procedures_filter = IBase.SourceFile.t -> Procname.t -> bool
    val source_files_filter : source_files_filter IStdlib.IStd.Lazy.t

    filter corresponding to `--source-files-filter`

    val procedures_filter : procedures_filter IStdlib.IStd.Lazy.t

    filter corresponding to `--procedures-filter`

    \ No newline at end of file +Filtering (infer.IR.Filtering)

    Module IR.Filtering

    type source_files_filter = IBase.SourceFile.t -> bool
    type procedures_filter = IBase.SourceFile.t -> Procname.t -> bool
    val source_files_filter : source_files_filter IStdlib.IStd.Lazy.t

    filter corresponding to `--source-files-filter`

    val procedures_filter : procedures_filter IStdlib.IStd.Lazy.t

    filter corresponding to `--procedures-filter`

    diff --git a/website/static/odoc/next/infer/IR/HackClassName/index.html b/website/static/odoc/next/infer/IR/HackClassName/index.html index c3db0773d30..d5be8442498 100644 --- a/website/static/odoc/next/infer/IR/HackClassName/index.html +++ b/website/static/odoc/next/infer/IR/HackClassName/index.html @@ -1,2 +1,2 @@ -HackClassName (infer.IR.HackClassName)

    Module IR.HackClassName

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : ?namespace:string -> string -> t
    val classname : t -> string
    val components : t -> string list
    val wildcard : t
    val pp : F.formatter -> t -> unit
    val to_string : t -> string
    val static_companion : t -> t

    return the class of the companion class object of this class eg: Foo -> Foo$static

    val static_companion_origin : t -> t

    return the origin class of a companion class object eg: Foo$static -> Foo. the result is not specified if is the name is not a valid static class name

    val is_static_companion : t -> bool

    tests if the name is a valid static class name (ie. ends with "$static")

    val is_builtins : t -> bool

    tests if the name of the class is $builtins where hhbc functions and models belong to

    val is_generated_curry : t -> bool

    tests if the name of the class if of the special form used by HackC for function references

    val extract_curry_info : t -> (t * string) option

    returns a pair (classname, short_method_name) from a generated curry type:

    • classname is the enclosing type of the corresponding function reference
    • short_method_name is the short name of the corresponding function reference
    \ No newline at end of file +HackClassName (infer.IR.HackClassName)

    Module IR.HackClassName

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : ?namespace:string -> string -> t
    val classname : t -> string
    val components : t -> string list
    val wildcard : t
    val pp : F.formatter -> t -> unit
    val to_string : t -> string
    val static_companion : t -> t

    return the class of the companion class object of this class eg: Foo -> Foo$static

    val static_companion_origin : t -> t

    return the origin class of a companion class object eg: Foo$static -> Foo. the result is not specified if is the name is not a valid static class name

    val is_static_companion : t -> bool

    tests if the name is a valid static class name (ie. ends with "$static")

    val is_builtins : t -> bool

    tests if the name of the class is $builtins where hhbc functions and models belong to

    val is_generated_curry : t -> bool

    tests if the name of the class if of the special form used by HackC for function references

    val extract_curry_info : t -> (t * string) option

    returns a pair (classname, short_method_name) from a generated curry type:

    • classname is the enclosing type of the corresponding function reference
    • short_method_name is the short name of the corresponding function reference
    diff --git a/website/static/odoc/next/infer/IR/Ident/NameGenerator/index.html b/website/static/odoc/next/infer/IR/Ident/NameGenerator/index.html index d3ba80fdb0e..25f08f86d73 100644 --- a/website/static/odoc/next/infer/IR/Ident/NameGenerator/index.html +++ b/website/static/odoc/next/infer/IR/Ident/NameGenerator/index.html @@ -1,2 +1,2 @@ -NameGenerator (infer.IR.Ident.NameGenerator)

    Module Ident.NameGenerator

    type t
    val get_current : unit -> t

    Get the current name generator.

    val reset : unit -> unit

    Reset the name generator.

    val set_current : t -> unit

    Set the current name generator.

    \ No newline at end of file +NameGenerator (infer.IR.Ident.NameGenerator)

    Module Ident.NameGenerator

    type t
    val get_current : unit -> t

    Get the current name generator.

    val reset : unit -> unit

    Reset the name generator.

    val set_current : t -> unit

    Set the current name generator.

    diff --git a/website/static/odoc/next/infer/IR/Ident/index.html b/website/static/odoc/next/infer/IR/Ident/index.html index dca228142bc..7978ef2b996 100644 --- a/website/static/odoc/next/infer/IR/Ident/index.html +++ b/website/static/odoc/next/infer/IR/Ident/index.html @@ -1,8 +1,8 @@ -Ident (infer.IR.Ident)

    Module IR.Ident

    Identifiers: program variables and logical variables

    type t

    Program and logical variables.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for identifiers.

    type name

    Names used to replace strings.

    val compare_name : name -> name -> int
    val hash_fold_name : +Ident (infer.IR.Ident)

    Module IR.Ident

    Identifiers: program variables and logical variables

    type t

    Program and logical variables.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for identifiers.

    type name

    Names used to replace strings.

    val compare_name : name -> name -> int
    val hash_fold_name : Ppx_hash_lib.Std.Hash.state -> name -> Ppx_hash_lib.Std.Hash.state
    val hash_name : name -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize_name : name -> name
    val hash_normalize_name_opt : name option -> name option
    val hash_normalize_name_list : name list -> name list
    val equal_name : name -> name -> bool

    Equality for names.

    type kind

    Kind of identifiers.

    val compare_kind : kind -> kind -> int
    val equal_kind : kind -> kind -> bool

    Equality for kind.

    module Set : IStdlib.IStd.Caml.Set.S with type elt = t

    Set for identifiers.

    module Map : IStdlib.IStd.Caml.Map.S with type key = t

    Map with ident as key.

    module HashQueue : IStdlib.IStd.Hash_queue.S with type key = t
    module NameGenerator : sig ... end
    val idlist_to_idset : t list -> Set.t

    Convert an identifier list to an identifier set

    val kprimed : kind
    val knormal : kind
    val kfootprint : kind
    val knone : kind
    val name_spec : name

    Name used for spec variables

    val name_return : Mangled.t

    Name used for the return variable

    val string_to_name : string -> name

    Convert a string to a name.

    val name_to_string : name -> string

    Convert a name to a string.

    val get_name : t -> name

    Name of the identifier.

    val create_with_stamp : kind -> name -> int -> t
    val create : kind -> int -> t

    Create an identifier with default name for the given kind

    val create_normal : name -> int -> t

    Generate a normal identifier with the given name and stamp.

    val create_none : unit -> t

    Create a "null" identifier for situations where the IR requires an id that will never be read

    val create_footprint : name -> int -> t

    Generate a footprint identifier with the given name and stamp.

    val update_name_generator : t list -> unit

    Update the name generator so that the given id's are not generated again

    val create_fresh : kind -> t

    Create a fresh identifier with default name for the given kind.

    val create_path : string -> t

    Generate a normal identifier whose name encodes a path given as a string.

    val is_primed : t -> bool

    Check whether an identifier is primed or not.

    val is_normal : t -> bool

    Check whether an identifier is normal or not.

    val is_footprint : t -> bool

    Check whether an identifier is footprint or not.

    val is_path : t -> bool

    Check whether an identifier represents a path or not.

    val is_none : t -> bool

    Check whether an identifier is the special "none" identifier

    val get_stamp : t -> int

    Get the stamp of the identifier

    val set_stamp : t -> int -> t

    Set the stamp of the identifier

    Pretty Printing

    val pp_name : Stdlib.Format.formatter -> name -> unit

    Pretty print a name.

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print an identifier.

    val to_string : t -> string

    Convert an identifier to a string.

    val hashqueue_of_sequence : - ?init:unit HashQueue.t -> + ?init:unit HashQueue.t -> t IStdlib.IStd.Sequence.t -> - unit HashQueue.t
    val set_of_sequence : ?init:Set.t -> t IStdlib.IStd.Sequence.t -> Set.t
    val counts_of_sequence : t IStdlib.IStd.Sequence.t -> t -> int
    \ No newline at end of file + unit HashQueue.t
    val set_of_sequence : ?init:Set.t -> t IStdlib.IStd.Sequence.t -> Set.t
    val counts_of_sequence : t IStdlib.IStd.Sequence.t -> t -> int
    diff --git a/website/static/odoc/next/infer/IR/Inferconfig/index.html b/website/static/odoc/next/infer/IR/Inferconfig/index.html index 548d929e2a9..7079f8c7c7b 100644 --- a/website/static/odoc/next/infer/IR/Inferconfig/index.html +++ b/website/static/odoc/next/infer/IR/Inferconfig/index.html @@ -1,2 +1,2 @@ -Inferconfig (infer.IR.Inferconfig)

    Module IR.Inferconfig

    type path_filter = IBase.SourceFile.t -> bool

    Filter type for a source file

    type error_filter = IBase.IssueType.t -> bool

    Filter type for an error name.

    type proc_filter = Procname.t -> bool

    Filter type for a procedure name

    type filters = {
    1. path_filter : path_filter;
    2. error_filter : error_filter;
    3. proc_filter : proc_filter;
    }
    val create_filters : unit -> filters

    Create filters based on the config file

    val never_return_null_matcher : IBase.SourceFile.t -> Procname.t -> bool
    val capture_block_list_file_matcher : IBase.SourceFile.t -> bool
    val modeled_expensive_matcher : (string -> bool) -> Procname.t -> bool
    \ No newline at end of file +Inferconfig (infer.IR.Inferconfig)

    Module IR.Inferconfig

    type path_filter = IBase.SourceFile.t -> bool

    Filter type for a source file

    type error_filter = IBase.IssueType.t -> bool

    Filter type for an error name.

    type proc_filter = Procname.t -> bool

    Filter type for a procedure name

    type filters = {
    1. path_filter : path_filter;
    2. error_filter : error_filter;
    3. proc_filter : proc_filter;
    }
    val create_filters : unit -> filters

    Create filters based on the config file

    val never_return_null_matcher : IBase.SourceFile.t -> Procname.t -> bool
    val capture_block_list_file_matcher : IBase.SourceFile.t -> bool
    val modeled_expensive_matcher : (string -> bool) -> Procname.t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Instrs/index.html b/website/static/odoc/next/infer/IR/Instrs/index.html index 4d429903020..4bc5c5ffbdc 100644 --- a/website/static/odoc/next/infer/IR/Instrs/index.html +++ b/website/static/odoc/next/infer/IR/Instrs/index.html @@ -1,22 +1,22 @@ -Instrs (infer.IR.Instrs)

    Module IR.Instrs

    Manipulate possibly-reversed lists of instructions efficiently

    type reversed
    type not_reversed
    type _ t
    type not_reversed_t = not_reversed t

    defined for convenience: we can write Instrs.not_reversed_t in other modules instead of Instrs.not_reversed Instrs.t

    val empty : _ t
    val singleton : Sil.instr -> _ t
    val append_list : not_reversed t -> Sil.instr list -> not_reversed t
    val prepend_list : not_reversed t -> Sil.instr list -> not_reversed t
    val of_list : Sil.instr list -> not_reversed t
    val filter_map : +Instrs (infer.IR.Instrs)

    Module IR.Instrs

    Manipulate possibly-reversed lists of instructions efficiently

    type reversed
    type not_reversed
    type _ t
    type not_reversed_t = not_reversed t

    defined for convenience: we can write Instrs.not_reversed_t in other modules instead of Instrs.not_reversed Instrs.t

    val empty : _ t
    val singleton : Sil.instr -> _ t
    val append_list : not_reversed t -> Sil.instr list -> not_reversed t
    val prepend_list : not_reversed t -> Sil.instr list -> not_reversed t
    val of_list : Sil.instr list -> not_reversed t
    val filter_map : not_reversed t -> - f:(Sil.instr -> Sil.instr option) -> - not_reversed t

    replace every instruction instr with f instr. Preserve physical equality. *

    val map_and_fold : + f:(Sil.instr -> Sil.instr option) -> + not_reversed t

    replace every instruction instr with f instr. Preserve physical equality. *

    val map_and_fold : not_reversed t -> - f:('a -> Sil.instr -> 'a * Sil.instr) -> - init:'a -> + f:('a -> Sil.instr -> 'a * Sil.instr) -> + init:'a -> not_reversed t

    replace every instruction instr with snd (f context instr). The context is computed by folding f on init and previous instructions (before instr) in the collection. Preserve physical equality. *

    val concat_map_and_fold : not_reversed t -> - f:('a -> Sil.instr -> 'a * Sil.instr array) -> - init:'a -> + f:('a -> Sil.instr -> 'a * Sil.instr array) -> + init:'a -> not_reversed t

    Like map_and_fold but replace every instruction instr with the list snd (f context instr) by threading an accumulator. Preserve physical equality. *

    val concat_map : not_reversed t -> - f:(Sil.instr -> Sil.instr array) -> - not_reversed t

    replace every instruction instr with the list f instr. Preserve physical equality. *

    val reverse_order : not_reversed t -> reversed t
    val is_empty : _ t -> bool
    val count : _ t -> int
    val exists : _ t -> f:(Sil.instr -> bool) -> bool
    val for_all : _ t -> f:(Sil.instr -> bool) -> bool
    val nth_exists : _ t -> int -> bool
    val nth_exn : _ t -> int -> Sil.instr
    val last : _ t -> Sil.instr option
    val find_map : _ t -> f:(Sil.instr -> 'a option) -> 'a option
    val pp : - ?indent:bool -> - ?print_types:bool -> + f:(Sil.instr -> Sil.instr array) -> + not_reversed t

    replace every instruction instr with the list f instr. Preserve physical equality. *

    val reverse_order : not_reversed t -> reversed t
    val is_empty : _ t -> bool
    val count : _ t -> int
    val exists : _ t -> f:(Sil.instr -> bool) -> bool
    val for_all : _ t -> f:(Sil.instr -> bool) -> bool
    val nth_exists : _ t -> int -> bool
    val nth_exn : _ t -> int -> Sil.instr
    val last : _ t -> Sil.instr option
    val find_map : _ t -> f:(Sil.instr -> 'a option) -> 'a option
    val pp : + ?indent:bool -> + ?print_types:bool -> IStdlib.Pp.env -> Stdlib.Format.formatter -> _ t -> - unit
    val fold : (_ t, Sil.instr, 'a) IStdlib.IStd.Container.fold
    val foldi : _ t -> init:'a -> f:(int -> 'a -> Sil.instr -> 'a) -> 'a
    val iter : (_ t, Sil.instr) IStdlib.IStd.Container.iter
    val get_underlying_not_reversed : not_reversed t -> Sil.instr array
    val instrs_get_normal_vars : not_reversed t -> Ident.t list
    \ No newline at end of file + unit
    val fold : (_ t, Sil.instr, 'a) IStdlib.IStd.Container.fold
    val foldi : _ t -> init:'a -> f:(int -> 'a -> Sil.instr -> 'a) -> 'a
    val iter : (_ t, Sil.instr) IStdlib.IStd.Container.iter
    val get_underlying_not_reversed : not_reversed t -> Sil.instr array
    val instrs_get_normal_vars : not_reversed t -> Ident.t list
    diff --git a/website/static/odoc/next/infer/IR/IntLit/index.html b/website/static/odoc/next/infer/IR/IntLit/index.html index 828418c62e9..bce2ad00163 100644 --- a/website/static/odoc/next/infer/IR/IntLit/index.html +++ b/website/static/odoc/next/infer/IR/IntLit/index.html @@ -1,2 +1,2 @@ -IntLit (infer.IR.IntLit)

    Module IR.IntLit

    module F = Stdlib.Format
    type t

    signed and unsigned integer literals

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    exception OversizedShift
    val add : t -> t -> t
    val compare : t -> t -> int

    compare integers ignoring the distinction between pointers and non-pointers

    val compare_value : t -> t -> int

    compare the value of the integers, notice this is different from const compare, which distinguished between signed and unsigned +1

    val div : t -> t -> t
    val eq : t -> t -> bool
    val equal : t -> t -> bool

    an alias for eq, for convenience

    val of_int : int -> t
    val of_big_int : Z.t -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_string : string -> t
    val geq : t -> t -> bool
    val gt : t -> t -> bool
    val isminusone : t -> bool
    val isnegative : t -> bool
    val isnull : t -> bool
    val isone : t -> bool
    val iszero : t -> bool
    val leq : t -> t -> bool
    val logand : t -> t -> t
    val lognot : t -> t
    val logor : t -> t -> t
    val logxor : t -> t -> t
    val lt : t -> t -> bool
    val minus_one : t
    val mul : t -> t -> t
    val neg : t -> t
    val neq : t -> t -> bool
    val null : t

    null behaves like zero except for the function isnull

    val one : t
    val pp : F.formatter -> t -> unit
    val rem : t -> t -> t
    val shift_left : t -> t -> t
    val shift_right : t -> t -> t
    val sub : t -> t -> t
    val max : t -> t -> t
    val min : t -> t -> t
    val to_int : t -> int option
    val to_int_exn : t -> int
    val to_big_int : t -> Z.t
    val to_float : t -> float
    val to_signed : t -> t option
    val to_string : t -> string

    convert to signed if the value is representable

    val two : t
    val zero : t
    \ No newline at end of file +IntLit (infer.IR.IntLit)

    Module IR.IntLit

    module F = Stdlib.Format
    type t

    signed and unsigned integer literals

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    exception OversizedShift
    val add : t -> t -> t
    val compare : t -> t -> int

    compare integers ignoring the distinction between pointers and non-pointers

    val compare_value : t -> t -> int

    compare the value of the integers, notice this is different from const compare, which distinguished between signed and unsigned +1

    val div : t -> t -> t
    val eq : t -> t -> bool
    val equal : t -> t -> bool

    an alias for eq, for convenience

    val of_int : int -> t
    val of_big_int : Z.t -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_string : string -> t
    val geq : t -> t -> bool
    val gt : t -> t -> bool
    val isminusone : t -> bool
    val isnegative : t -> bool
    val isnull : t -> bool
    val isone : t -> bool
    val iszero : t -> bool
    val leq : t -> t -> bool
    val logand : t -> t -> t
    val lognot : t -> t
    val logor : t -> t -> t
    val logxor : t -> t -> t
    val lt : t -> t -> bool
    val minus_one : t
    val mul : t -> t -> t
    val neg : t -> t
    val neq : t -> t -> bool
    val null : t

    null behaves like zero except for the function isnull

    val one : t
    val pp : F.formatter -> t -> unit
    val rem : t -> t -> t
    val shift_left : t -> t -> t
    val shift_right : t -> t -> t
    val sub : t -> t -> t
    val max : t -> t -> t
    val min : t -> t -> t
    val to_int : t -> int option
    val to_int_exn : t -> int
    val to_big_int : t -> Z.t
    val to_float : t -> float
    val to_signed : t -> t option
    val to_string : t -> string

    convert to signed if the value is representable

    val two : t
    val zero : t
    diff --git a/website/static/odoc/next/infer/IR/IntegerWidths/SQLite/index.html b/website/static/odoc/next/infer/IR/IntegerWidths/SQLite/index.html index ea5baed5829..003791392cd 100644 --- a/website/static/odoc/next/infer/IR/IntegerWidths/SQLite/index.html +++ b/website/static/odoc/next/infer/IR/IntegerWidths/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IR.IntegerWidths.SQLite)

    Module IntegerWidths.SQLite

    val serialize : t option -> Sqlite3.Data.t
    \ No newline at end of file +SQLite (infer.IR.IntegerWidths.SQLite)

    Module IntegerWidths.SQLite

    val serialize : t option -> Sqlite3.Data.t
    diff --git a/website/static/odoc/next/infer/IR/IntegerWidths/index.html b/website/static/odoc/next/infer/IR/IntegerWidths/index.html index 87fb72f2766..420913a4976 100644 --- a/website/static/odoc/next/infer/IR/IntegerWidths/index.html +++ b/website/static/odoc/next/infer/IR/IntegerWidths/index.html @@ -1,2 +1,2 @@ -IntegerWidths (infer.IR.IntegerWidths)

    Module IR.IntegerWidths

    The Smallfoot Intermediate Language: Types

    type t = {
    1. char_width : int;
    2. short_width : int;
    3. int_width : int;
    4. long_width : int;
    5. longlong_width : int;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val java : t
    val load : IBase.SourceFile.t -> t option
    module SQLite : sig ... end
    val width_of_ikind : t -> Typ.ikind -> int
    val range_of_ikind : t -> Typ.ikind -> Z.t * Z.t
    \ No newline at end of file +IntegerWidths (infer.IR.IntegerWidths)

    Module IR.IntegerWidths

    The Smallfoot Intermediate Language: Types

    type t = {
    1. char_width : int;
    2. short_width : int;
    3. int_width : int;
    4. long_width : int;
    5. longlong_width : int;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val java : t
    val load : IBase.SourceFile.t -> t option
    module SQLite : sig ... end
    val width_of_ikind : t -> Typ.ikind -> int
    val range_of_ikind : t -> Typ.ikind -> Z.t * Z.t
    diff --git a/website/static/odoc/next/infer/IR/Io_infer/Html/index.html b/website/static/odoc/next/infer/IR/Io_infer/Html/index.html index 283ab864d8a..30849b46079 100644 --- a/website/static/odoc/next/infer/IR/Io_infer/Html/index.html +++ b/website/static/odoc/next/infer/IR/Io_infer/Html/index.html @@ -1,5 +1,5 @@ -Html (infer.IR.Io_infer.Html)

    Module Io_infer.Html

    val close : (IStdlib.IStd.Unix.File_descr.t * Stdlib.Format.formatter) -> unit

    Close an Html file

    val create : +Html (infer.IR.Io_infer.Html)

    Module Io_infer.Html

    val close : (IStdlib.IStd.Unix.File_descr.t * Stdlib.Format.formatter) -> unit

    Close an Html file

    val create : IBase.SourceFile.t -> IBase.DB.Results_dir.path -> IStdlib.IStd.Unix.File_descr.t * Stdlib.Format.formatter

    Create a new html file

    val modified_during_analysis : @@ -9,8 +9,8 @@ IBase.SourceFile.t -> IBase.DB.Results_dir.path -> IStdlib.IStd.Unix.File_descr.t * Stdlib.Format.formatter

    Open an Html file to append data

    Print an html link to the given line number of the current source file

    val pp_hline : Stdlib.Format.formatter -> unit -> unit

    Print a horizontal line

    Print an html link to the given node. Usage: pp_node_link path_to_root ... fmt id. path_to_root is the path to the dir for the procedure in the spec db. id is the node identifier.

    Print an html link to the given proc

    Print an html link given node id and session

    \ No newline at end of file + unit

    Print an html link given node id and session

    diff --git a/website/static/odoc/next/infer/IR/Io_infer/index.html b/website/static/odoc/next/infer/IR/Io_infer/index.html index ada23a18349..2e201ebc044 100644 --- a/website/static/odoc/next/infer/IR/Io_infer/index.html +++ b/website/static/odoc/next/infer/IR/Io_infer/index.html @@ -1,2 +1,2 @@ -Io_infer (infer.IR.Io_infer)

    Module IR.Io_infer

    Module to handle IO. Includes html and xml modules.

    module Html : sig ... end
    \ No newline at end of file +Io_infer (infer.IR.Io_infer)

    Module IR.Io_infer

    Module to handle IO. Includes html and xml modules.

    module Html : sig ... end
    diff --git a/website/static/odoc/next/infer/IR/JConfig/index.html b/website/static/odoc/next/infer/IR/JConfig/index.html index b93f8ee0c10..982824485db 100644 --- a/website/static/odoc/next/infer/IR/JConfig/index.html +++ b/website/static/odoc/next/infer/IR/JConfig/index.html @@ -1,2 +1,2 @@ -JConfig (infer.IR.JConfig)

    Module IR.JConfig

    val boolean_code : string
    val byte_code : string
    val char_code : string
    val double_code : string
    val float_code : string
    val int_code : string
    val long_code : string
    val short_code : string
    val class_code : string -> string
    val boolean_st : string
    val byte_st : string
    val char_st : string
    val double_st : string
    val float_st : string
    val int_st : string
    val long_st : string
    val short_st : string
    val constructor_name : string
    val void : string
    val this : Mangled.t
    val clone_name : string
    val field_cst : string
    val field_st : Mangled.t
    val infer_builtins_cl : string
    val is_synthetic_name : string -> bool
    \ No newline at end of file +JConfig (infer.IR.JConfig)

    Module IR.JConfig

    val boolean_code : string
    val byte_code : string
    val char_code : string
    val double_code : string
    val float_code : string
    val int_code : string
    val long_code : string
    val short_code : string
    val class_code : string -> string
    val boolean_st : string
    val byte_st : string
    val char_st : string
    val double_st : string
    val float_st : string
    val int_st : string
    val long_st : string
    val short_st : string
    val constructor_name : string
    val void : string
    val this : Mangled.t
    val clone_name : string
    val field_cst : string
    val field_st : Mangled.t
    val infer_builtins_cl : string
    val is_synthetic_name : string -> bool
    diff --git a/website/static/odoc/next/infer/IR/JavaClassName/index.html b/website/static/odoc/next/infer/IR/JavaClassName/index.html index 09c1715061d..87fe7485e6d 100644 --- a/website/static/odoc/next/infer/IR/JavaClassName/index.html +++ b/website/static/odoc/next/infer/IR/JavaClassName/index.html @@ -1,2 +1,2 @@ -JavaClassName (infer.IR.JavaClassName)

    Module IR.JavaClassName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : package:string option -> classname:string -> t

    make ~package:(Some "java.lang") "Object" creates a value representing java.lang.Object

    val from_string : string -> t

    from_string "java.lang.Object" is same as make ~package:(Some "java.lang") "Object"

    val to_string : t -> string

    to_string (from_string "X.Y.Z") = "X.Y.Z"

    val pp : Stdlib.Format.formatter -> t -> unit

    pp includes package if any

    val pp_with_verbosity : verbose:bool -> Stdlib.Format.formatter -> t -> unit

    if verbose then print package if present, otherwise only print class

    val package : t -> string option
    val classname : t -> string
    val get_outer_class_name : t -> t option

    If this is an inner class, return the closest outer, e.g. A$B for A$B$C. None if the class is outermost

    val is_anonymous_inner_class_name : t -> bool

    True if it is either "classic" anonymous Java class: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html, or a synthetic Java class corresponding to a lambda expression.

    val get_user_defined_class_if_anonymous_inner : t -> t option

    If the current class is anonymous (is_anonymous_inner_class_name is true), return the corresponding user defined (not anonymous) class this anonymous class belongs to.

    In general case, BOTH anonymous classes and user-defined classes can be nested: SomeClass$NestedClass$1$17$5. In this example, we should return SomeClass$NestedClass.

    If this is not an anonymous class, returns None.

    \ No newline at end of file +JavaClassName (infer.IR.JavaClassName)

    Module IR.JavaClassName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : package:string option -> classname:string -> t

    make ~package:(Some "java.lang") "Object" creates a value representing java.lang.Object

    val from_string : string -> t

    from_string "java.lang.Object" is same as make ~package:(Some "java.lang") "Object"

    val to_string : t -> string

    to_string (from_string "X.Y.Z") = "X.Y.Z"

    val pp : Stdlib.Format.formatter -> t -> unit

    pp includes package if any

    val pp_with_verbosity : verbose:bool -> Stdlib.Format.formatter -> t -> unit

    if verbose then print package if present, otherwise only print class

    val package : t -> string option
    val classname : t -> string
    val get_outer_class_name : t -> t option

    If this is an inner class, return the closest outer, e.g. A$B for A$B$C. None if the class is outermost

    val is_anonymous_inner_class_name : t -> bool

    True if it is either "classic" anonymous Java class: https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html, or a synthetic Java class corresponding to a lambda expression.

    val get_user_defined_class_if_anonymous_inner : t -> t option

    If the current class is anonymous (is_anonymous_inner_class_name is true), return the corresponding user defined (not anonymous) class this anonymous class belongs to.

    In general case, BOTH anonymous classes and user-defined classes can be nested: SomeClass$NestedClass$1$17$5. In this example, we should return SomeClass$NestedClass.

    If this is not an anonymous class, returns None.

    diff --git a/website/static/odoc/next/infer/IR/Mangled/Map/index.html b/website/static/odoc/next/infer/IR/Mangled/Map/index.html index e2cd4f63648..d2848aff554 100644 --- a/website/static/odoc/next/infer/IR/Mangled/Map/index.html +++ b/website/static/odoc/next/infer/IR/Mangled/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Mangled.Map)

    Module Mangled.Map

    Map with Mangled as key

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Mangled.Map)

    Module Mangled.Map

    Map with Mangled as key

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Mangled/Set/index.html b/website/static/odoc/next/infer/IR/Mangled/Set/index.html index c90597ebb9f..3cc159b70d1 100644 --- a/website/static/odoc/next/infer/IR/Mangled/Set/index.html +++ b/website/static/odoc/next/infer/IR/Mangled/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Mangled.Set)

    Module Mangled.Set

    Set of Mangled.

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Mangled.Set)

    Module Mangled.Set

    Set of Mangled.

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Mangled/index.html b/website/static/odoc/next/infer/IR/Mangled/index.html index 4bd273bd9ae..cae2d5cf1f2 100644 --- a/website/static/odoc/next/infer/IR/Mangled/index.html +++ b/website/static/odoc/next/infer/IR/Mangled/index.html @@ -1,2 +1,2 @@ -Mangled (infer.IR.Mangled)

    Module IR.Mangled

    Module for Mangled Names

    type t

    Type of mangled names

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for mangled names

    val from_string : string -> t

    Convert a string to a mangled name

    val mangled : string -> string -> t

    Create a mangled name from a plain and mangled string

    val to_string : t -> string

    Convert a mangled name to a string

    val to_string_full : t -> string

    Convert a full mangled name to a string

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a mangled name

    val this : t
    val is_this : t -> bool
    val self : t
    val is_self : t -> bool
    val is_artificial : t -> bool
    val return_param : t
    val is_return_param : t -> bool
    val is_underscore : t -> bool
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Set of Mangled.

    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Map with Mangled as key

    \ No newline at end of file +Mangled (infer.IR.Mangled)

    Module IR.Mangled

    Module for Mangled Names

    type t

    Type of mangled names

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool

    Equality for mangled names

    val from_string : string -> t

    Convert a string to a mangled name

    val mangled : string -> string -> t

    Create a mangled name from a plain and mangled string

    val to_string : t -> string

    Convert a mangled name to a string

    val to_string_full : t -> string

    Convert a full mangled name to a string

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a mangled name

    val this : t
    val is_this : t -> bool
    val self : t
    val is_self : t -> bool
    val is_artificial : t -> bool
    val return_param : t
    val is_return_param : t -> bool
    val is_underscore : t -> bool
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Set of Mangled.

    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Map with Mangled as key

    diff --git a/website/static/odoc/next/infer/IR/MissingDependencies/ProcUidSet/index.html b/website/static/odoc/next/infer/IR/MissingDependencies/ProcUidSet/index.html index 002494b7659..b50dbb4c608 100644 --- a/website/static/odoc/next/infer/IR/MissingDependencies/ProcUidSet/index.html +++ b/website/static/odoc/next/infer/IR/MissingDependencies/ProcUidSet/index.html @@ -1,2 +1,2 @@ -ProcUidSet (infer.IR.MissingDependencies.ProcUidSet)

    Module MissingDependencies.ProcUidSet

    type elt = string
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +ProcUidSet (infer.IR.MissingDependencies.ProcUidSet)

    Module MissingDependencies.ProcUidSet

    type elt = string
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/MissingDependencies/index.html b/website/static/odoc/next/infer/IR/MissingDependencies/index.html index 65098f7720c..97f5cc2d5b3 100644 --- a/website/static/odoc/next/infer/IR/MissingDependencies/index.html +++ b/website/static/odoc/next/infer/IR/MissingDependencies/index.html @@ -1,2 +1,2 @@ -MissingDependencies (infer.IR.MissingDependencies)

    Module IR.MissingDependencies

    Stateful store of procedure and sourcefile dependencies found to be missing from the capture database during analysis.

    module ProcUidSet : IStdlib.HashSet.S with type elt = string
    type t = {
    1. procedures : ProcUidSet.t;
    2. sources : IBase.SourceFile.HashSet.t;
    }
    val record_procname : Procname.t -> unit
    val record_sourcefile : IBase.SourceFile.t -> unit
    val get : unit -> t

    get recorded missing dependencies

    val save : t list -> unit

    destructively merge missing dependencies and store into the results directory

    val load : unit -> t

    load from results directory

    \ No newline at end of file +MissingDependencies (infer.IR.MissingDependencies)

    Module IR.MissingDependencies

    Stateful store of procedure and sourcefile dependencies found to be missing from the capture database during analysis.

    module ProcUidSet : IStdlib.HashSet.S with type elt = string
    type t = {
    1. procedures : ProcUidSet.t;
    2. sources : IBase.SourceFile.HashSet.t;
    }
    val record_procname : Procname.t -> unit
    val record_sourcefile : IBase.SourceFile.t -> unit
    val get : unit -> t

    get recorded missing dependencies

    val save : t list -> unit

    destructively merge missing dependencies and store into the results directory

    val load : unit -> t

    load from results directory

    diff --git a/website/static/odoc/next/infer/IR/ObjCDispatchModels/index.html b/website/static/odoc/next/infer/IR/ObjCDispatchModels/index.html index 3d9a0ba7aed..2e98b930979 100644 --- a/website/static/odoc/next/infer/IR/ObjCDispatchModels/index.html +++ b/website/static/odoc/next/infer/IR/ObjCDispatchModels/index.html @@ -1,4 +1,4 @@ -ObjCDispatchModels (infer.IR.ObjCDispatchModels)

    Module IR.ObjCDispatchModels

    val is_model : Procname.t -> bool
    val get_dispatch_closure_opt : +ObjCDispatchModels (infer.IR.ObjCDispatchModels)

    Module IR.ObjCDispatchModels

    val is_model : Procname.t -> bool
    val get_dispatch_closure_opt : (Exp.t * Typ.t) list -> - (Procname.t * Exp.t * (Exp.t * Typ.t) list) option
    \ No newline at end of file + (Procname.t * Exp.t * (Exp.t * Typ.t) list) option
    diff --git a/website/static/odoc/next/infer/IR/PredSymb/index.html b/website/static/odoc/next/infer/IR/PredSymb/index.html index 78659502fd1..f90a3b04b72 100644 --- a/website/static/odoc/next/infer/IR/PredSymb/index.html +++ b/website/static/odoc/next/infer/IR/PredSymb/index.html @@ -1,2 +1,2 @@ -PredSymb (infer.IR.PredSymb)

    Module IR.PredSymb

    The Smallfoot Intermediate Language: Predicate Symbols

    Programs and Types

    type mem_kind =
    1. | Mmalloc
      (*

      memory allocated with malloc

      *)
    2. | Mnew
      (*

      memory allocated with new

      *)
    3. | Mnew_array
      (*

      memory allocated with new

      *)
    4. | Mobjc
      (*

      memory allocated with objective-c alloc

      *)
    val compare_mem_kind : mem_kind -> mem_kind -> int
    type resource =
    1. | Rmemory of mem_kind
    2. | Rfile
    3. | Rignore
    4. | Rlock

    resource that can be allocated

    val compare_resource : resource -> resource -> int
    type res_act_kind =
    1. | Racquire
    2. | Rrelease

    kind of resource action

    val compare_res_act_kind : res_act_kind -> res_act_kind -> int
    val equal_res_act_kind : res_act_kind -> res_act_kind -> bool
    type dangling_kind =
    1. | DAuninit
      (*

      pointer is dangling because it is uninitialized

      *)
    2. | DAaddr_stack_var
      (*

      pointer is dangling because it is the address of a stack variable which went out of scope

      *)
    3. | DAminusone
      (*

      pointer is -1

      *)

    kind of dangling pointers

    type path_pos = Procname.t * int

    position in a path: proc name, node id

    val compare_path_pos : path_pos -> path_pos -> int
    val equal_path_pos : path_pos -> path_pos -> bool
    type res_action = {
    1. ra_kind : res_act_kind;
      (*

      kind of action

      *)
    2. ra_res : resource;
      (*

      kind of resource

      *)
    3. ra_pname : Procname.t;
      (*

      name of the procedure used to acquire/release the resource

      *)
    4. ra_loc : IBase.Location.t;
      (*

      location of the acquire/release

      *)
    5. ra_vpath : DecompiledExp.vpath;
      (*

      vpath of the resource value

      *)
    }

    acquire/release action on a resource

    type t =
    1. | Aresource of res_action
      (*

      resource acquire/release

      *)
    2. | Aautorelease
    3. | Adangling of dangling_kind
      (*

      dangling pointer

      *)
    4. | Aundef of Procname.t * Annot.Item.t * IBase.Location.t * path_pos
    5. | Alocked
    6. | Aunlocked
    7. | Adiv0 of path_pos
      (*

      value appeared in second argument of division at given path position

      *)
    8. | Aobjc_null
      (*

      attributed exp is null due to a call to a method with given path as null receiver

      *)
    9. | Aretval of Procname.t * Annot.Item.t
      (*

      value was returned from a call to the given procedure, plus the annots of the return value

      *)
    10. | Aobserver
      (*

      denotes an object registered as an observers to a notification center

      *)
    11. | Aunsubscribed_observer
      (*

      denotes an object unsubscribed from observers of a notification center

      *)
    12. | Awont_leak
      (*

      value do not participate in memory leak analysis

      *)

    Attributes are nary function symbols that are applied to expression arguments in Apred and Anpred atomic formulas. Many operations don't make much sense for nullary predicates, and are generally treated as no-ops. The first argument is treated specially, as the "anchor" of the predicate application. For example, adding or removing an attribute uses the anchor to identify the atom to operate on. Also, abstraction and normalization operations treat the anchor specially and maintain more information on it than other arguments. Therefore when attaching an attribute to an expression, that expression should be the first argument, optionally followed by additional related expressions.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val mem_alloc_pname : mem_kind -> Procname.t

    name of the allocation function for the given memory kind

    val mem_dealloc_pname : mem_kind -> Procname.t

    name of the deallocation function for the given memory kind

    type category =
    1. | ACresource
    2. | ACautorelease
    3. | AClock
    4. | ACdiv0
    5. | ACobjc_null
    6. | ACundef
    7. | ACretval
    8. | ACobserver
    9. | ACwontleak

    Categories of attributes

    val compare_category : category -> category -> int
    val equal_category : category -> category -> bool
    val to_category : t -> category

    Return the category to which the attribute belongs.

    val is_undef : t -> bool
    val to_string : IStdlib.Pp.env -> t -> string

    convert the attribute to a string

    val d_attribute : t -> unit

    Dump an attribute.

    \ No newline at end of file +PredSymb (infer.IR.PredSymb)

    Module IR.PredSymb

    The Smallfoot Intermediate Language: Predicate Symbols

    Programs and Types

    type mem_kind =
    1. | Mmalloc
      (*

      memory allocated with malloc

      *)
    2. | Mnew
      (*

      memory allocated with new

      *)
    3. | Mnew_array
      (*

      memory allocated with new

      *)
    4. | Mobjc
      (*

      memory allocated with objective-c alloc

      *)
    val compare_mem_kind : mem_kind -> mem_kind -> int
    type resource =
    1. | Rmemory of mem_kind
    2. | Rfile
    3. | Rignore
    4. | Rlock

    resource that can be allocated

    val compare_resource : resource -> resource -> int
    type res_act_kind =
    1. | Racquire
    2. | Rrelease

    kind of resource action

    val compare_res_act_kind : res_act_kind -> res_act_kind -> int
    val equal_res_act_kind : res_act_kind -> res_act_kind -> bool
    type dangling_kind =
    1. | DAuninit
      (*

      pointer is dangling because it is uninitialized

      *)
    2. | DAaddr_stack_var
      (*

      pointer is dangling because it is the address of a stack variable which went out of scope

      *)
    3. | DAminusone
      (*

      pointer is -1

      *)

    kind of dangling pointers

    type path_pos = Procname.t * int

    position in a path: proc name, node id

    val compare_path_pos : path_pos -> path_pos -> int
    val equal_path_pos : path_pos -> path_pos -> bool
    type res_action = {
    1. ra_kind : res_act_kind;
      (*

      kind of action

      *)
    2. ra_res : resource;
      (*

      kind of resource

      *)
    3. ra_pname : Procname.t;
      (*

      name of the procedure used to acquire/release the resource

      *)
    4. ra_loc : IBase.Location.t;
      (*

      location of the acquire/release

      *)
    5. ra_vpath : DecompiledExp.vpath;
      (*

      vpath of the resource value

      *)
    }

    acquire/release action on a resource

    type t =
    1. | Aresource of res_action
      (*

      resource acquire/release

      *)
    2. | Aautorelease
    3. | Adangling of dangling_kind
      (*

      dangling pointer

      *)
    4. | Aundef of Procname.t * Annot.Item.t * IBase.Location.t * path_pos
    5. | Alocked
    6. | Aunlocked
    7. | Adiv0 of path_pos
      (*

      value appeared in second argument of division at given path position

      *)
    8. | Aobjc_null
      (*

      attributed exp is null due to a call to a method with given path as null receiver

      *)
    9. | Aretval of Procname.t * Annot.Item.t
      (*

      value was returned from a call to the given procedure, plus the annots of the return value

      *)
    10. | Aobserver
      (*

      denotes an object registered as an observers to a notification center

      *)
    11. | Aunsubscribed_observer
      (*

      denotes an object unsubscribed from observers of a notification center

      *)
    12. | Awont_leak
      (*

      value do not participate in memory leak analysis

      *)

    Attributes are nary function symbols that are applied to expression arguments in Apred and Anpred atomic formulas. Many operations don't make much sense for nullary predicates, and are generally treated as no-ops. The first argument is treated specially, as the "anchor" of the predicate application. For example, adding or removing an attribute uses the anchor to identify the atom to operate on. Also, abstraction and normalization operations treat the anchor specially and maintain more information on it than other arguments. Therefore when attaching an attribute to an expression, that expression should be the first argument, optionally followed by additional related expressions.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val mem_alloc_pname : mem_kind -> Procname.t

    name of the allocation function for the given memory kind

    val mem_dealloc_pname : mem_kind -> Procname.t

    name of the deallocation function for the given memory kind

    type category =
    1. | ACresource
    2. | ACautorelease
    3. | AClock
    4. | ACdiv0
    5. | ACobjc_null
    6. | ACundef
    7. | ACretval
    8. | ACobserver
    9. | ACwontleak

    Categories of attributes

    val compare_category : category -> category -> int
    val equal_category : category -> category -> bool
    val to_category : t -> category

    Return the category to which the attribute belongs.

    val is_undef : t -> bool
    val to_string : IStdlib.Pp.env -> t -> string

    convert the attribute to a string

    val d_attribute : t -> unit

    Dump an attribute.

    diff --git a/website/static/odoc/next/infer/IR/ProcAttributes/SQLite/index.html b/website/static/odoc/next/infer/IR/ProcAttributes/SQLite/index.html index 094fa22c389..53ae42d2280 100644 --- a/website/static/odoc/next/infer/IR/ProcAttributes/SQLite/index.html +++ b/website/static/odoc/next/infer/IR/ProcAttributes/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IR.ProcAttributes.SQLite)

    Module ProcAttributes.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLite (infer.IR.ProcAttributes.SQLite)

    Module ProcAttributes.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IR/ProcAttributes/index.html b/website/static/odoc/next/infer/IR/ProcAttributes/index.html index 0991f5809cb..62d7e8b417d 100644 --- a/website/static/odoc/next/infer/IR/ProcAttributes/index.html +++ b/website/static/odoc/next/infer/IR/ProcAttributes/index.html @@ -1,5 +1,5 @@ -ProcAttributes (infer.IR.ProcAttributes)

    Module IR.ProcAttributes

    module F = Stdlib.Format

    Attributes of a procedure.

    type access =
    1. | Default
    2. | Public
    3. | Private
    4. | Protected

    Visibility modifiers.

    val compare_access : access -> access -> int
    val equal_access : access -> access -> bool
    type objc_accessor_type =
    1. | Objc_getter of Struct.field
    2. | Objc_setter of Struct.field
    type var_data = {
    1. name : Mangled.t;
    2. typ : Typ.t;
    3. modify_in_block : bool;
      (*

      __block attribute of Objective-C variables, means that it will be modified inside a block

      *)
    4. is_constexpr : bool;
    5. is_declared_unused : bool;
      (*

      variable declared with attribute unused

      *)
    6. is_structured_binding : bool;
      (*

      variable declared by structured binding

      *)
    7. has_cleanup_attribute : bool;
      (*

      variable declared with attribute cleanup, only set in clang frontend

      *)
    8. tmp_id : Ident.t option;
      (*

      the tmp id used to build the variable name in case of a temp variable, None otherwise.

      *)
    }
    type specialized_with_aliasing_info = {
    1. orig_proc : Procname.t;
    2. aliases : Pvar.t list list;
      (*

      all the pvars in a same list are aliasing each other. e.g. aliases = [[x; y; z]; [a; b]] indicates that x, y and z alias each other and a and b as well

      *)
    }
    val compare_specialized_with_aliasing_info : +ProcAttributes (infer.IR.ProcAttributes)

    Module IR.ProcAttributes

    module F = Stdlib.Format

    Attributes of a procedure.

    type access =
    1. | Default
    2. | Public
    3. | Private
    4. | Protected

    Visibility modifiers.

    val compare_access : access -> access -> int
    val equal_access : access -> access -> bool
    type objc_accessor_type =
    1. | Objc_getter of Struct.field
    2. | Objc_setter of Struct.field
    type var_data = {
    1. name : Mangled.t;
    2. typ : Typ.t;
    3. modify_in_block : bool;
      (*

      __block attribute of Objective-C variables, means that it will be modified inside a block

      *)
    4. is_constexpr : bool;
    5. is_declared_unused : bool;
      (*

      variable declared with attribute unused

      *)
    6. is_structured_binding : bool;
      (*

      variable declared by structured binding

      *)
    7. has_cleanup_attribute : bool;
      (*

      variable declared with attribute cleanup, only set in clang frontend

      *)
    8. tmp_id : Ident.t option;
      (*

      the tmp id used to build the variable name in case of a temp variable, None otherwise.

      *)
    }
    type specialized_with_aliasing_info = {
    1. orig_proc : Procname.t;
    2. aliases : Pvar.t list list;
      (*

      all the pvars in a same list are aliasing each other. e.g. aliases = [[x; y; z]; [a; b]] indicates that x, y and z alias each other and a and b as well

      *)
    }
    val compare_specialized_with_aliasing_info : specialized_with_aliasing_info -> specialized_with_aliasing_info -> int
    type 'captured_var passed_closure =
    1. | Closure of Procname.t * 'captured_var list
    2. | Fields of (Fieldname.t * 'captured_var passed_closure) list
    val compare_passed_closure : @@ -19,4 +19,4 @@ int
    val equal_block_as_arg_attributes : block_as_arg_attributes -> block_as_arg_attributes -> - bool
    type t = {
    1. access : access;
      (*

      visibility access

      *)
    2. captured : CapturedVar.t list;
      (*

      name, type, and mode of variables captured in blocks and lambdas

      *)
    3. mutable changed : bool;
      (*

      true if proc has changed since last analysis

      *)
    4. exceptions : string list;
      (*

      exceptions thrown by the procedure

      *)
    5. formals : (Mangled.t * Typ.t * Annot.Item.t) list;
      (*

      name, type, and annotation of formal parameters

      *)
    6. const_formals : int list;
      (*

      list of indices of formals that are const-qualified

      *)
    7. reference_formals : int list;
      (*

      list of indices of formals that are passed by reference

      *)
    8. is_abstract : bool;
      (*

      the procedure is abstract

      *)
    9. is_biabduction_model : bool;
      (*

      the procedure is a model for the biabduction analysis

      *)
    10. is_bridge_method : bool;
      (*

      the procedure is a bridge method

      *)
    11. is_cpp_const_member_fun : bool;
      (*

      true if the procedure is a const function

      *)
    12. is_cpp_copy_assignment : bool;
      (*

      true if the procedure is a copy assignment

      *)
    13. is_cpp_copy_ctor : bool;
      (*

      true if the procedure is a copy constructor

      *)
    14. is_cpp_move_ctor : bool;
      (*

      true if the procedure is a move constructor

      *)
    15. is_cpp_deleted : bool;
      (*

      true if the procedure is deleted

      *)
    16. is_cpp_implicit : bool;
      (*

      returns false if the declaration exists in code and true if it was created implicitly by the compiler

      *)
    17. is_defined : bool;
      (*

      true if the procedure is defined, and not just declared

      *)
    18. is_java_synchronized_method : bool;
      (*

      the procedure is a Java synchronized method

      *)
    19. is_csharp_synchronized_method : bool;
      (*

      the procedure is a C# synchronized method

      *)
    20. is_hack_async : bool;
    21. is_hack_wrapper : bool;
      (*

      a generated wrapper for LSB or default parameters

      *)
    22. block_as_arg_attributes : block_as_arg_attributes option;
      (*

      Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

      *)
    23. is_no_return : bool;
      (*

      the procedure is known not to return

      *)
    24. is_objc_arc_on : bool;
      (*

      the ObjC procedure is compiled with ARC

      *)
    25. is_specialized : bool;
      (*

      the procedure is a clone specialized for dynamic dispatch handling

      *)
    26. is_synthetic_method : bool;
      (*

      the procedure is a synthetic method

      *)
    27. is_clang_variadic : bool;
      (*

      the procedure is variadic, only supported for Clang procedures

      *)
    28. hack_variadic_position : int option;
      (*

      the procedure is variadic and Some n means the variadic vector is composed of the arguments n, n+1, ..., length formals -1

      *)
    29. sentinel_attr : (int * int) option;
      (*

      __attribute__((sentinel(int, int)))

      *)
    30. specialized_with_aliasing_info : specialized_with_aliasing_info option;
      (*

      the procedure is a clone specialized with captured variables and paramaters sharing memory, with link to the original procedure, and a list of variables aliasing each other.

      *)
    31. specialized_with_closures_info : specialized_with_closures_info option;
      (*

      the procedure is a clone specialized with calls to concrete closures, with link to the original procedure, and a map that links the original formals to the elements of the closure used to specialize the procedure.

      *)
    32. clang_method_kind : ClangMethodKind.t;
      (*

      the kind of method the procedure is

      *)
    33. loc : IBase.Location.t;
      (*

      location of this procedure in the source code

      *)
    34. loc_instantiated : IBase.Location.t option;
      (*

      location of this procedure is possibly instantiated

      *)
    35. translation_unit : IBase.SourceFile.t;
      (*

      source file where the procedure was captured

      *)
    36. mutable locals : var_data list;
      (*

      name, type and attributes of local variables

      *)
    37. objc_accessor : objc_accessor_type option;
      (*

      type of ObjC accessor, if any

      *)
    38. proc_name : Procname.t;
      (*

      name of the procedure

      *)
    39. ret_type : Typ.t;
      (*

      return type

      *)
    40. ret_annots : Annot.Item.t;
      (*

      annotations of return type

      *)
    41. has_added_return_param : bool;
      (*

      whether or not a return param was added

      *)
    42. is_ret_type_pod : bool;
      (*

      whether or not the return type is POD

      *)
    43. is_ret_constexpr : bool;
      (*

      whether the (C++) function or method is declared as constexpr

      *)
    }
    val default : IBase.SourceFile.t -> Procname.t -> t

    Create a proc_attributes with default values.

    val default_var_data : Pvar.t -> Typ.t -> var_data
    val pp : Stdlib.Format.formatter -> t -> unit
    val get_access : t -> access

    Return the visibility attribute

    val get_loc : t -> IBase.Location.t

    Return loc information for the procedure

    val get_loc_instantiated : t -> IBase.Location.t option

    Return instantiated loc information for the procedure

    val get_proc_name : t -> Procname.t
    val get_pvar_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters

    val get_passed_by_value_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by value

    val get_passed_by_ref_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by reference

    val get_pointer_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed as pointer, i.e. T*

    val to_return_type : t -> Typ.t

    the return type from method signature, taking into account if the procedure has added return parameter

    val get_this : t -> Pvar.t option

    if the procedures is an instance method then this is its self or this variable

    val pp_block_as_arg_attributes : F.formatter -> block_as_arg_attributes -> unit
    module SQLite : IBase.SqliteUtils.Data with type t = t
    \ No newline at end of file + bool
    type t = {
    1. access : access;
      (*

      visibility access

      *)
    2. captured : CapturedVar.t list;
      (*

      name, type, and mode of variables captured in blocks and lambdas

      *)
    3. mutable changed : bool;
      (*

      true if proc has changed since last analysis

      *)
    4. exceptions : string list;
      (*

      exceptions thrown by the procedure

      *)
    5. formals : (Mangled.t * Typ.t * Annot.Item.t) list;
      (*

      name, type, and annotation of formal parameters

      *)
    6. const_formals : int list;
      (*

      list of indices of formals that are const-qualified

      *)
    7. reference_formals : int list;
      (*

      list of indices of formals that are passed by reference

      *)
    8. is_abstract : bool;
      (*

      the procedure is abstract

      *)
    9. is_biabduction_model : bool;
      (*

      the procedure is a model for the biabduction analysis

      *)
    10. is_bridge_method : bool;
      (*

      the procedure is a bridge method

      *)
    11. is_cpp_const_member_fun : bool;
      (*

      true if the procedure is a const function

      *)
    12. is_cpp_copy_assignment : bool;
      (*

      true if the procedure is a copy assignment

      *)
    13. is_cpp_copy_ctor : bool;
      (*

      true if the procedure is a copy constructor

      *)
    14. is_cpp_move_ctor : bool;
      (*

      true if the procedure is a move constructor

      *)
    15. is_cpp_deleted : bool;
      (*

      true if the procedure is deleted

      *)
    16. is_cpp_implicit : bool;
      (*

      returns false if the declaration exists in code and true if it was created implicitly by the compiler

      *)
    17. is_defined : bool;
      (*

      true if the procedure is defined, and not just declared

      *)
    18. is_java_synchronized_method : bool;
      (*

      the procedure is a Java synchronized method

      *)
    19. is_csharp_synchronized_method : bool;
      (*

      the procedure is a C# synchronized method

      *)
    20. is_hack_async : bool;
    21. is_hack_wrapper : bool;
      (*

      a generated wrapper for LSB or default parameters

      *)
    22. block_as_arg_attributes : block_as_arg_attributes option;
      (*

      Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

      *)
    23. is_no_return : bool;
      (*

      the procedure is known not to return

      *)
    24. is_objc_arc_on : bool;
      (*

      the ObjC procedure is compiled with ARC

      *)
    25. is_specialized : bool;
      (*

      the procedure is a clone specialized for dynamic dispatch handling

      *)
    26. is_synthetic_method : bool;
      (*

      the procedure is a synthetic method

      *)
    27. is_clang_variadic : bool;
      (*

      the procedure is variadic, only supported for Clang procedures

      *)
    28. hack_variadic_position : int option;
      (*

      the procedure is variadic and Some n means the variadic vector is composed of the arguments n, n+1, ..., length formals -1

      *)
    29. sentinel_attr : (int * int) option;
      (*

      __attribute__((sentinel(int, int)))

      *)
    30. specialized_with_aliasing_info : specialized_with_aliasing_info option;
      (*

      the procedure is a clone specialized with captured variables and paramaters sharing memory, with link to the original procedure, and a list of variables aliasing each other.

      *)
    31. specialized_with_closures_info : specialized_with_closures_info option;
      (*

      the procedure is a clone specialized with calls to concrete closures, with link to the original procedure, and a map that links the original formals to the elements of the closure used to specialize the procedure.

      *)
    32. clang_method_kind : ClangMethodKind.t;
      (*

      the kind of method the procedure is

      *)
    33. loc : IBase.Location.t;
      (*

      location of this procedure in the source code

      *)
    34. loc_instantiated : IBase.Location.t option;
      (*

      location of this procedure is possibly instantiated

      *)
    35. translation_unit : IBase.SourceFile.t;
      (*

      source file where the procedure was captured

      *)
    36. mutable locals : var_data list;
      (*

      name, type and attributes of local variables

      *)
    37. objc_accessor : objc_accessor_type option;
      (*

      type of ObjC accessor, if any

      *)
    38. proc_name : Procname.t;
      (*

      name of the procedure

      *)
    39. ret_type : Typ.t;
      (*

      return type

      *)
    40. ret_annots : Annot.Item.t;
      (*

      annotations of return type

      *)
    41. has_added_return_param : bool;
      (*

      whether or not a return param was added

      *)
    42. is_ret_type_pod : bool;
      (*

      whether or not the return type is POD

      *)
    43. is_ret_constexpr : bool;
      (*

      whether the (C++) function or method is declared as constexpr

      *)
    }
    val default : IBase.SourceFile.t -> Procname.t -> t

    Create a proc_attributes with default values.

    val default_var_data : Pvar.t -> Typ.t -> var_data
    val pp : Stdlib.Format.formatter -> t -> unit
    val get_access : t -> access

    Return the visibility attribute

    val get_loc : t -> IBase.Location.t

    Return loc information for the procedure

    val get_loc_instantiated : t -> IBase.Location.t option

    Return instantiated loc information for the procedure

    val get_proc_name : t -> Procname.t
    val get_pvar_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters

    val get_passed_by_value_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by value

    val get_passed_by_ref_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by reference

    val get_pointer_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed as pointer, i.e. T*

    val to_return_type : t -> Typ.t

    the return type from method signature, taking into account if the procedure has added return parameter

    val get_this : t -> Pvar.t option

    if the procedures is an instance method then this is its self or this variable

    val pp_block_as_arg_attributes : F.formatter -> block_as_arg_attributes -> unit
    module SQLite : IBase.SqliteUtils.Data with type t = t
    diff --git a/website/static/odoc/next/infer/IR/Procdesc/IdMap/index.html b/website/static/odoc/next/infer/IR/Procdesc/IdMap/index.html index 8f54d517cd5..5342a712adc 100644 --- a/website/static/odoc/next/infer/IR/Procdesc/IdMap/index.html +++ b/website/static/odoc/next/infer/IR/Procdesc/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.IR.Procdesc.IdMap)

    Module Procdesc.IdMap

    Map with node id keys.

    include IStdlib.IStd.Caml.Map.S with type key = Node.id
    type key = Node.id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.IR.Procdesc.IdMap)

    Module Procdesc.IdMap

    Map with node id keys.

    include IStdlib.IStd.Caml.Map.S with type key = Node.id
    type key = Node.id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Procdesc/Node/index.html b/website/static/odoc/next/infer/IR/Procdesc/Node/index.html index 8eec0ee9b63..7a5bbb28314 100644 --- a/website/static/odoc/next/infer/IR/Procdesc/Node/index.html +++ b/website/static/odoc/next/infer/IR/Procdesc/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.IR.Procdesc.Node)

    Module Procdesc.Node

    node of the control flow graph

    type t

    type of nodes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id = private int

    node id

    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val hash_fold_id : +Node (infer.IR.Procdesc.Node)

    Module Procdesc.Node

    node of the control flow graph

    type t

    type of nodes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id = private int

    node id

    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val hash_fold_id : Ppx_hash_lib.Std.Hash.state -> id -> - Ppx_hash_lib.Std.Hash.state
    val hash_id : id -> Ppx_hash_lib.Std.Hash.hash_value
    type destruction_kind =
    1. | DestrBreakStmt
    2. | DestrContinueStmt
    3. | DestrFields
    4. | DestrReturnStmt
    5. | DestrScope
    6. | DestrTemporariesCleanup
    7. | DestrVirtualBase
    type stmt_nodekind =
    1. | AssertionFailure
    2. | AtomicCompareExchangeBranch
    3. | AtomicExpr
    4. | BetweenJoinAndExit
    5. | BinaryConditionalStmtInit
    6. | BinaryOperatorStmt of string
    7. | Call of string
    8. | CallObjCNew
    9. | CaseStmt
    10. | ClassCastException
    11. | CompoundStmt
    12. | ConditionalStmtBranch
    13. | ConstructorInit
    14. | CXXDynamicCast
    15. | CXXNewExpr
    16. | CXXStdInitializerListExpr
    17. | CXXTemporaryMarkerSet
    18. | CXXTry
    19. | CXXTypeidExpr
    20. | DeclStmt
    21. | DefineBody
    22. | Destruction of destruction_kind
    23. | Erlang
    24. | ErlangCaseClause
    25. | ErlangExpression
    26. | ExceptionHandler
    27. | ExceptionsSink
    28. | ExprWithCleanups
    29. | FinallyBranch
    30. | GCCAsmStmt
    31. | GenericSelectionExpr
    32. | IfStmtBranch
    33. | InitializeDynamicArrayLength
    34. | InitListExp
    35. | LoopBody
    36. | LoopIterIncr
    37. | LoopIterInit
    38. | MessageCall of string
    39. | MethodBody
    40. | MonitorEnter
    41. | MonitorExit
    42. | ObjCCPPThrow
    43. | ObjCIndirectCopyRestoreExpr
    44. | OutOfBound
    45. | ReturnStmt
    46. | Scope of string
    47. | Skip
    48. | SwitchStmt
    49. | ThisNotNull
    50. | Throw
    51. | ThrowNPE
    52. | UnaryOperator

    kind of statement node

    type prune_node_kind =
    1. | PruneNodeKind_ExceptionHandler
    2. | PruneNodeKind_FalseBranch
    3. | PruneNodeKind_InBound
    4. | PruneNodeKind_IsInstance
    5. | PruneNodeKind_MethodBody
    6. | PruneNodeKind_NotNull
    7. | PruneNodeKind_TrueBranch
    type nodekind =
    1. | Start_node
    2. | Exit_node
    3. | Stmt_node of stmt_nodekind
    4. | Join_node
    5. | Prune_node of bool * Sil.if_kind * prune_node_kind
      (*

      (true/false branch, if_kind, comment)

      *)
    6. | Skip_node of string

    kind of cfg node

    val compare_nodekind : nodekind -> nodekind -> int
    val equal_nodekind : nodekind -> nodekind -> bool
    val exn_handler_kind : nodekind

    kind of Stmt_node for an exception handler.

    val exn_sink_kind : nodekind

    kind of Stmt_node for an exceptions sink.

    val throw_kind : nodekind

    kind of Stmt_node for a throw instruction.

    val append_instrs : t -> Sil.instr list -> unit

    Append the instructions to the list of instructions to execute

    val prepend_instrs : t -> Sil.instr list -> unit

    Prepend the instructions to the list of instructions to execute

    val d_instrs : highlight:Sil.instr option -> t -> unit

    Dump instructions for the node, highlighting the given subinstruction if present

    val dummy : Procname.t -> t

    Create a dummy node

    val equal : t -> t -> bool

    Check if two nodes are equal

    val get_description : IStdlib.Pp.env -> t -> string

    Return a description of the node

    val get_distance_to_exit : t -> int option

    Get the distance to the exit node, if it has been computed

    val get_exn : t -> t list

    Get the exception nodes from the current node

    val get_id : t -> id

    Get the unique id of the node

    val get_instrs : t -> Instrs.not_reversed_t

    Get the instructions to be executed

    val get_kind : t -> nodekind

    Get the kind of the current node

    val get_last_loc : t -> IBase.Location.t

    Get the source location of the last instruction in the node

    val find_in_node_or_preds : t -> f:(t -> Sil.instr -> 'a option) -> 'a option

    Find in the given node or its predecessors

    val get_loc : t -> IBase.Location.t

    Get the source location of the node

    val get_preds : t -> t list

    Get the predecessor nodes of the current node

    val get_siblings : t -> t IStdlib.IStd.Sequence.t

    Get siblings of the current node

    val get_proc_name : t -> Procname.t

    Get the name of the procedure the node belongs to

    val get_succs : t -> t list

    Get the successor nodes of the current node

    val get_wto_index : t -> int
    val set_code_block_exit : t -> code_block_exit:t -> unit

    Set an exit node corresponding to a start node of a code block. Using this, when there is a code block, frontend can keep the correspondence between start/exit nodes of a code block.

    val is_dangling : t -> bool

    Returns true if the node is dangling, i.e. no successors and predecessors

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print the node

    val pp_id : Stdlib.Format.formatter -> id -> unit

    Pretty print a node id

    val pp_stmt : Stdlib.Format.formatter -> stmt_nodekind -> unit
    val pp_with_instrs : ?print_types:bool -> Stdlib.Format.formatter -> t -> unit

    Pretty print the node with instructions

    val compute_key : t -> NodeKey.t
    \ No newline at end of file + Ppx_hash_lib.Std.Hash.state
    val hash_id : id -> Ppx_hash_lib.Std.Hash.hash_value
    type destruction_kind =
    1. | DestrBreakStmt
    2. | DestrContinueStmt
    3. | DestrFields
    4. | DestrReturnStmt
    5. | DestrScope
    6. | DestrTemporariesCleanup
    7. | DestrVirtualBase
    type stmt_nodekind =
    1. | AssertionFailure
    2. | AtomicCompareExchangeBranch
    3. | AtomicExpr
    4. | BetweenJoinAndExit
    5. | BinaryConditionalStmtInit
    6. | BinaryOperatorStmt of string
    7. | Call of string
    8. | CallObjCNew
    9. | CaseStmt
    10. | ClassCastException
    11. | CompoundStmt
    12. | ConditionalStmtBranch
    13. | ConstructorInit
    14. | CXXDynamicCast
    15. | CXXNewExpr
    16. | CXXStdInitializerListExpr
    17. | CXXTemporaryMarkerSet
    18. | CXXTry
    19. | CXXTypeidExpr
    20. | DeclStmt
    21. | DefineBody
    22. | Destruction of destruction_kind
    23. | Erlang
    24. | ErlangCaseClause
    25. | ErlangExpression
    26. | ExceptionHandler
    27. | ExceptionsSink
    28. | ExprWithCleanups
    29. | FinallyBranch
    30. | GCCAsmStmt
    31. | GenericSelectionExpr
    32. | IfStmtBranch
    33. | InitializeDynamicArrayLength
    34. | InitListExp
    35. | LoopBody
    36. | LoopIterIncr
    37. | LoopIterInit
    38. | MessageCall of string
    39. | MethodBody
    40. | MonitorEnter
    41. | MonitorExit
    42. | ObjCCPPThrow
    43. | ObjCIndirectCopyRestoreExpr
    44. | OutOfBound
    45. | ReturnStmt
    46. | Scope of string
    47. | Skip
    48. | SwitchStmt
    49. | ThisNotNull
    50. | Throw
    51. | ThrowNPE
    52. | UnaryOperator

    kind of statement node

    type prune_node_kind =
    1. | PruneNodeKind_ExceptionHandler
    2. | PruneNodeKind_FalseBranch
    3. | PruneNodeKind_InBound
    4. | PruneNodeKind_IsInstance
    5. | PruneNodeKind_MethodBody
    6. | PruneNodeKind_NotNull
    7. | PruneNodeKind_TrueBranch
    type nodekind =
    1. | Start_node
    2. | Exit_node
    3. | Stmt_node of stmt_nodekind
    4. | Join_node
    5. | Prune_node of bool * Sil.if_kind * prune_node_kind
      (*

      (true/false branch, if_kind, comment)

      *)
    6. | Skip_node of string

    kind of cfg node

    val compare_nodekind : nodekind -> nodekind -> int
    val equal_nodekind : nodekind -> nodekind -> bool
    val exn_handler_kind : nodekind

    kind of Stmt_node for an exception handler.

    val exn_sink_kind : nodekind

    kind of Stmt_node for an exceptions sink.

    val throw_kind : nodekind

    kind of Stmt_node for a throw instruction.

    val append_instrs : t -> Sil.instr list -> unit

    Append the instructions to the list of instructions to execute

    val prepend_instrs : t -> Sil.instr list -> unit

    Prepend the instructions to the list of instructions to execute

    val d_instrs : highlight:Sil.instr option -> t -> unit

    Dump instructions for the node, highlighting the given subinstruction if present

    val dummy : Procname.t -> t

    Create a dummy node

    val equal : t -> t -> bool

    Check if two nodes are equal

    val get_description : IStdlib.Pp.env -> t -> string

    Return a description of the node

    val get_distance_to_exit : t -> int option

    Get the distance to the exit node, if it has been computed

    val get_exn : t -> t list

    Get the exception nodes from the current node

    val get_id : t -> id

    Get the unique id of the node

    val get_instrs : t -> Instrs.not_reversed_t

    Get the instructions to be executed

    val get_kind : t -> nodekind

    Get the kind of the current node

    val get_last_loc : t -> IBase.Location.t

    Get the source location of the last instruction in the node

    val find_in_node_or_preds : t -> f:(t -> Sil.instr -> 'a option) -> 'a option

    Find in the given node or its predecessors

    val get_loc : t -> IBase.Location.t

    Get the source location of the node

    val get_preds : t -> t list

    Get the predecessor nodes of the current node

    val get_siblings : t -> t IStdlib.IStd.Sequence.t

    Get siblings of the current node

    val get_proc_name : t -> Procname.t

    Get the name of the procedure the node belongs to

    val get_succs : t -> t list

    Get the successor nodes of the current node

    val get_wto_index : t -> int
    val set_code_block_exit : t -> code_block_exit:t -> unit

    Set an exit node corresponding to a start node of a code block. Using this, when there is a code block, frontend can keep the correspondence between start/exit nodes of a code block.

    val is_dangling : t -> bool

    Returns true if the node is dangling, i.e. no successors and predecessors

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print the node

    val pp_id : Stdlib.Format.formatter -> id -> unit

    Pretty print a node id

    val pp_stmt : Stdlib.Format.formatter -> stmt_nodekind -> unit
    val pp_with_instrs : ?print_types:bool -> Stdlib.Format.formatter -> t -> unit

    Pretty print the node with instructions

    val compute_key : t -> NodeKey.t
    diff --git a/website/static/odoc/next/infer/IR/Procdesc/NodeHashSet/index.html b/website/static/odoc/next/infer/IR/Procdesc/NodeHashSet/index.html new file mode 100644 index 00000000000..409050a97a6 --- /dev/null +++ b/website/static/odoc/next/infer/IR/Procdesc/NodeHashSet/index.html @@ -0,0 +1,2 @@ + +NodeHashSet (infer.IR.Procdesc.NodeHashSet)

    Module Procdesc.NodeHashSet

    Hash set with nodes as keys.

    type elt = Node.t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Procdesc/NodeKey/index.html b/website/static/odoc/next/infer/IR/Procdesc/NodeKey/index.html index 93aa171df39..4de7bbc21d2 100644 --- a/website/static/odoc/next/infer/IR/Procdesc/NodeKey/index.html +++ b/website/static/odoc/next/infer/IR/Procdesc/NodeKey/index.html @@ -1,2 +1,2 @@ -NodeKey (infer.IR.Procdesc.NodeKey)

    Module Procdesc.NodeKey

    type t
    val to_string : t -> string
    \ No newline at end of file +NodeKey (infer.IR.Procdesc.NodeKey)

    Module Procdesc.NodeKey

    type t
    val to_string : t -> string
    diff --git a/website/static/odoc/next/infer/IR/Procdesc/SQLite/index.html b/website/static/odoc/next/infer/IR/Procdesc/SQLite/index.html index 86a1b7a978f..f1075d119aa 100644 --- a/website/static/odoc/next/infer/IR/Procdesc/SQLite/index.html +++ b/website/static/odoc/next/infer/IR/Procdesc/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IR.Procdesc.SQLite)

    Module Procdesc.SQLite

    per-procedure CFGs are stored in the SQLite "procedures" table as NULL if the procedure has no CFG

    type t = t option
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLite (infer.IR.Procdesc.SQLite)

    Module Procdesc.SQLite

    per-procedure CFGs are stored in the SQLite "procedures" table as NULL if the procedure has no CFG

    type t = t option
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Procdesc/index.html b/website/static/odoc/next/infer/IR/Procdesc/index.html index bf0342732a3..43528a89c96 100644 --- a/website/static/odoc/next/infer/IR/Procdesc/index.html +++ b/website/static/odoc/next/infer/IR/Procdesc/index.html @@ -1,5 +1,5 @@ -Procdesc (infer.IR.Procdesc)

    Module IR.Procdesc

    Per-procedure CFG

    module NodeKey : sig ... end
    module Node : sig ... end

    node of the control flow graph

    Map with node id keys.

    module NodeHash : IStdlib.IStd.Caml.Hashtbl.S with type key = Node.t

    Hash table with nodes as keys.

    module NodeMap : IStdlib.IStd.Caml.Map.S with type key = Node.t

    Map over nodes.

    module NodeSet : IStdlib.IStd.Caml.Set.S with type elt = Node.t

    Set of nodes.

    procedure descriptions

    type t

    proc description

    val append_locals : t -> ProcAttributes.var_data list -> unit

    append a list of new local variables to the existing list of local variables

    val compute_distance_to_exit_node : t -> unit

    Compute the distance of each node to the exit node, if not computed already

    val create_node : +Procdesc (infer.IR.Procdesc)

    Module IR.Procdesc

    Per-procedure CFG

    module NodeKey : sig ... end
    module Node : sig ... end

    node of the control flow graph

    Map with node id keys.

    module NodeHash : IStdlib.IStd.Caml.Hashtbl.S with type key = Node.t

    Hash table with nodes as keys.

    Hash set with nodes as keys.

    module NodeMap : IStdlib.IStd.Caml.Map.S with type key = Node.t

    Map over nodes.

    module NodeSet : IStdlib.IStd.Caml.Set.S with type elt = Node.t

    Set of nodes.

    procedure descriptions

    type t

    proc description

    val append_locals : t -> ProcAttributes.var_data list -> unit

    append a list of new local variables to the existing list of local variables

    val compute_distance_to_exit_node : t -> unit

    Compute the distance of each node to the exit node, if not computed already

    val create_node : t -> IBase.Location.t -> Node.nodekind -> @@ -11,25 +11,25 @@ Instrs.not_reversed_t -> Node.t
    val remove_node : t -> Node.t -> unit

    Remove a node from a cfg

    val fold_instrs : t -> - init:'accum -> - f:('accum -> Node.t -> Sil.instr -> 'accum) -> - 'accum

    fold over all nodes and their instructions

    val find_map_instrs : t -> f:(Sil.instr -> 'a option) -> 'a option
    val from_proc_attributes : ProcAttributes.t -> t

    Use Cfg.create_proc_desc if you are adding a proc desc to a cfg

    val get_access : t -> ProcAttributes.access

    Return the visibility attribute

    val get_attributes : t -> ProcAttributes.t

    Get the attributes of the procedure.

    val set_attributes : t -> ProcAttributes.t -> unit
    val get_captured : t -> CapturedVar.t list

    Return name and type of block's captured variables

    val get_exit_node : t -> Node.t
    val get_exn_sink : t -> Node.t option

    Return the exception sink node, if any.

    val get_formals : t -> (Mangled.t * Typ.t * Annot.Item.t) list

    Return name, type, and annotation of formal parameters

    val get_pvar_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters

    val get_passed_by_value_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by value

    val get_passed_by_ref_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by reference

    val get_pointer_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed as pointer, i.e. T*

    val get_loc : t -> IBase.Location.t

    Return loc information for the procedure

    val get_locals : t -> ProcAttributes.var_data list

    Return name and type and attributes of local variables

    val is_local : t -> Pvar.t -> bool

    is_local pdesc pvar is true iff pvar is a local variable of pdesc. This function performs a linear search on the local variables of pdesc.

    val is_non_structured_binding_local_or_formal : t -> Pvar.t -> bool

    Similar to is_local, but returns true when pvar is a non-structured-binding local variable or a formal variable of pdesc.

    val get_nodes : t -> Node.t list

    Return the nodes, excluding the start node and the exit node.

    val get_proc_name : t -> Procname.t
    val get_ret_type : t -> Typ.t

    Return the return type of the procedure

    val get_ret_param_type : t -> Typ.t option

    Return the return param type of the procedure, which is found from formals

    val get_ret_var : t -> Pvar.t
    val get_start_node : t -> Node.t
    val get_static_callees : t -> Procname.t list

    get a list of unique static callees excluding self

    val is_defined : t -> bool

    Return true iff the procedure is defined, and not just declared

    val is_java_synchronized : t -> bool

    Return true if the procedure signature has the Java synchronized keyword

    val is_csharp_synchronized : t -> bool

    Return true if the procedure is synchronized via a C# lock

    val iter_instrs : (Node.t -> Sil.instr -> unit) -> t -> unit

    iterate over all nodes and their instructions

    val replace_instrs : t -> f:(Node.t -> Sil.instr -> Sil.instr) -> bool

    Map and replace the instructions to be executed. Returns true if at least one substitution occured.

    val replace_instrs_using_context : + init:'accum -> + f:('accum -> Node.t -> Sil.instr -> 'accum) -> + 'accum

    fold over all nodes and their instructions

    val find_map_instrs : t -> f:(Sil.instr -> 'a option) -> 'a option
    val from_proc_attributes : ProcAttributes.t -> t

    Use Cfg.create_proc_desc if you are adding a proc desc to a cfg

    val get_access : t -> ProcAttributes.access

    Return the visibility attribute

    val get_attributes : t -> ProcAttributes.t

    Get the attributes of the procedure.

    val set_attributes : t -> ProcAttributes.t -> unit
    val get_captured : t -> CapturedVar.t list

    Return name and type of block's captured variables

    val get_exit_node : t -> Node.t
    val get_exn_sink : t -> Node.t option

    Return the exception sink node, if any.

    val get_formals : t -> (Mangled.t * Typ.t * Annot.Item.t) list

    Return name, type, and annotation of formal parameters

    val get_pvar_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters

    val get_passed_by_value_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by value

    val get_passed_by_ref_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed by reference

    val get_pointer_formals : t -> (Pvar.t * Typ.t) list

    Return pvar and type of formal parameters that are passed as pointer, i.e. T*

    val get_loc : t -> IBase.Location.t

    Return loc information for the procedure

    val get_locals : t -> ProcAttributes.var_data list

    Return name and type and attributes of local variables

    val is_local : t -> Pvar.t -> bool

    is_local pdesc pvar is true iff pvar is a local variable of pdesc. This function performs a linear search on the local variables of pdesc.

    val is_non_structured_binding_local_or_formal : t -> Pvar.t -> bool

    Similar to is_local, but returns true when pvar is a non-structured-binding local variable or a formal variable of pdesc.

    val get_nodes : t -> Node.t list

    Return the nodes, excluding the start node and the exit node.

    val get_proc_name : t -> Procname.t
    val get_ret_type : t -> Typ.t

    Return the return type of the procedure

    val get_ret_param_type : t -> Typ.t option

    Return the return param type of the procedure, which is found from formals

    val get_ret_var : t -> Pvar.t
    val get_start_node : t -> Node.t
    val get_static_callees : t -> Procname.t list

    get a list of unique static callees excluding self

    val is_defined : t -> bool

    Return true iff the procedure is defined, and not just declared

    val is_java_synchronized : t -> bool

    Return true if the procedure signature has the Java synchronized keyword

    val is_csharp_synchronized : t -> bool

    Return true if the procedure is synchronized via a C# lock

    val iter_instrs : (Node.t -> Sil.instr -> unit) -> t -> unit

    iterate over all nodes and their instructions

    val replace_instrs : t -> f:(Node.t -> Sil.instr -> Sil.instr) -> bool

    Map and replace the instructions to be executed. Returns true if at least one substitution occured.

    val replace_instrs_using_context : t -> - f:(Node.t -> 'a -> Sil.instr -> Sil.instr) -> - update_context:('a -> Sil.instr -> 'a) -> - context_at_node:(Node.t -> 'a) -> + f:(Node.t -> 'a -> Sil.instr -> Sil.instr) -> + update_context:('a -> Sil.instr -> 'a) -> + context_at_node:(Node.t -> 'a) -> bool

    Map and replace the instructions to be executed using a context that we built with previous instructions in the node. Returns true if at least one substitution occured.

    val replace_instrs_by_using_context : t -> - f:(Node.t -> 'a -> Sil.instr -> Sil.instr array) -> - update_context:('a -> Sil.instr -> 'a) -> - context_at_node:(Node.t -> 'a) -> - bool

    Like replace_instrs_using_context, but slower, and each instruction may be replaced by 0, 1, or more instructions.

    val iter_nodes : (Node.t -> unit) -> t -> unit

    iterate over all the nodes of a procedure

    val fold_nodes : t -> init:'accum -> f:('accum -> Node.t -> 'accum) -> 'accum

    fold over all the nodes of a procedure

    val set_succs : + f:(Node.t -> 'a -> Sil.instr -> Sil.instr array) -> + update_context:('a -> Sil.instr -> 'a) -> + context_at_node:(Node.t -> 'a) -> + bool

    Like replace_instrs_using_context, but slower, and each instruction may be replaced by 0, 1, or more instructions.

    val iter_nodes : (Node.t -> unit) -> t -> unit

    iterate over all the nodes of a procedure

    val fold_nodes : t -> init:'accum -> f:('accum -> Node.t -> 'accum) -> 'accum

    fold over all the nodes of a procedure

    val set_succs : Node.t -> - normal:Node.t list option -> - exn:Node.t list option -> + normal:Node.t list option -> + exn:Node.t list option -> unit

    Set the successor nodes and exception nodes, if given, and update predecessor links

    val node_set_succs : t -> Node.t -> - normal:Node.t list -> - exn:Node.t list -> - unit

    Set the successor nodes and exception nodes, and update predecessor links

    val set_exit_node : t -> Node.t -> unit

    Set the exit node of the procedure

    val set_start_node : t -> Node.t -> unit
    val init_wto : t -> unit
    val is_loop_head : t -> Node.t -> bool
    val pp_signature : Stdlib.Format.formatter -> t -> unit
    val pp_local : Stdlib.Format.formatter -> ProcAttributes.var_data -> unit
    val pp_with_instrs : ?print_types:bool -> Stdlib.Format.formatter -> t -> unit
    val is_specialized : t -> bool
    val is_captured_pvar : t -> Pvar.t -> bool

    true if pvar is a captured variable of a cpp lambda or obcj block

    val is_captured_var : t -> Var.t -> bool

    true if var is a captured variable of a cpp lambda or obcj block

    val has_modify_in_block_attr : t -> Pvar.t -> bool
    val size : t -> int

    Return number of nodes, plus number of instructions (in nodes), plus number of edges (between nodes).

    val is_too_big : IBase.Checker.t -> max_cfg_size:int -> t -> bool

    Check if the CFG of the procedure is too big to analyze. If it is too big, it logs an internal error and returns true.

    module SQLite : IBase.SqliteUtils.Data with type t = t option

    per-procedure CFGs are stored in the SQLite "procedures" table as NULL if the procedure has no CFG

    val load : Procname.t -> t option

    CFG for the given proc name. None when the source code for the procedure was not captured (eg library code or code outside of the project root). NOTE: To query the procedure's attributes (eg return type, formals, ...), prefer the cheaper Attributes.load. Attributes can be present even when the source code is not.

    val load_exn : Procname.t -> t

    like load, but raises an exception if no procdesc is available.

    val load_uid : ?capture_only:bool -> string -> t option

    like load but takes a database key for the procedure directly (generated from Procname.to_unique_id) and optionally only looks inside the capture database

    val mark_if_unchanged : old_pdesc:t -> new_pdesc:t -> unit

    Record the changed attribute in-place on new_pdesc if it is unchanged wrt old_pdsec

    \ No newline at end of file + normal:Node.t list -> + exn:Node.t list -> + unit

    Set the successor nodes and exception nodes, and update predecessor links

    val set_exit_node : t -> Node.t -> unit

    Set the exit node of the procedure

    val set_start_node : t -> Node.t -> unit
    val init_wto : t -> unit
    val is_loop_head : t -> Node.t -> bool
    val pp_signature : Stdlib.Format.formatter -> t -> unit
    val pp_local : Stdlib.Format.formatter -> ProcAttributes.var_data -> unit
    val pp_with_instrs : ?print_types:bool -> Stdlib.Format.formatter -> t -> unit
    val is_specialized : t -> bool
    val is_captured_pvar : t -> Pvar.t -> bool

    true if pvar is a captured variable of a cpp lambda or obcj block

    val is_captured_var : t -> Var.t -> bool

    true if var is a captured variable of a cpp lambda or obcj block

    val has_modify_in_block_attr : t -> Pvar.t -> bool
    val size : t -> int

    Return number of nodes, plus number of instructions (in nodes), plus number of edges (between nodes).

    val is_too_big : IBase.Checker.t -> max_cfg_size:int -> t -> bool

    Check if the CFG of the procedure is too big to analyze. If it is too big, it logs an internal error and returns true.

    module SQLite : IBase.SqliteUtils.Data with type t = t option

    per-procedure CFGs are stored in the SQLite "procedures" table as NULL if the procedure has no CFG

    val load : Procname.t -> t option

    CFG for the given proc name. None when the source code for the procedure was not captured (eg library code or code outside of the project root). NOTE: To query the procedure's attributes (eg return type, formals, ...), prefer the cheaper Attributes.load. Attributes can be present even when the source code is not.

    val load_exn : Procname.t -> t

    like load, but raises an exception if no procdesc is available.

    val load_uid : ?capture_only:bool -> string -> t option

    like load but takes a database key for the procedure directly (generated from Procname.to_unique_id) and optionally only looks inside the capture database

    val mark_if_unchanged : old_pdesc:t -> new_pdesc:t -> unit

    Record the changed attribute in-place on new_pdesc if it is unchanged wrt old_pdsec

    diff --git a/website/static/odoc/next/infer/IR/Procname/Block/index.html b/website/static/odoc/next/infer/IR/Procname/Block/index.html index f10fbae8646..3e26fa1d660 100644 --- a/website/static/odoc/next/infer/IR/Procname/Block/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Block/index.html @@ -1,2 +1,2 @@ -Block (infer.IR.Procname.Block)

    Module Procname.Block

    Type of Objective C block names.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    \ No newline at end of file +Block (infer.IR.Procname.Block)

    Module Procname.Block

    Type of Objective C block names.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    diff --git a/website/static/odoc/next/infer/IR/Procname/C/index.html b/website/static/odoc/next/infer/IR/Procname/C/index.html index ba45425c06a..d3386ae000a 100644 --- a/website/static/odoc/next/infer/IR/Procname/C/index.html +++ b/website/static/odoc/next/infer/IR/Procname/C/index.html @@ -1,2 +1,2 @@ -C (infer.IR.Procname.C)

    Module Procname.C

    Type of c procedure names.

    val c : QualifiedCppName.t -> ?mangled:string -> Typ.template_spec_info -> t

    Create a C procedure name from plain and mangled name.

    val is_make_shared : t -> bool
    \ No newline at end of file +C (infer.IR.Procname.C)

    Module Procname.C

    Type of c procedure names.

    val c : QualifiedCppName.t -> ?mangled:string -> Typ.template_spec_info -> t

    Create a C procedure name from plain and mangled name.

    val is_make_shared : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Procname/CSharp/index.html b/website/static/odoc/next/infer/IR/Procname/CSharp/index.html index 55c2551116f..edcc44a6e65 100644 --- a/website/static/odoc/next/infer/IR/Procname/CSharp/index.html +++ b/website/static/odoc/next/infer/IR/Procname/CSharp/index.html @@ -1,2 +1,2 @@ -CSharp (infer.IR.Procname.CSharp)

    Module Procname.CSharp

    Type of csharp procedure names.

    type kind =
    1. | Non_Static
      (*

      in Java, procedures called with invokevirtual, invokespecial, and invokeinterface

      *)
    2. | Static
      (*

      in Java, procedures called with invokestatic

      *)
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val constructor_method_name : string
    val get_method : t -> string

    Return the method name of a csharp procedure name.

    val get_class_type_name : t -> Typ.Name.t

    Return the class name as a typename of a java procedure name.

    val get_return_typ : t -> Typ.t

    Return the return type of pname_csharp. return Tvoid if there's no return type

    val get_class_name : t -> string

    Return the class name of a java procedure name.

    val is_generated : t -> bool

    Check if the proc name comes from generated code

    \ No newline at end of file +CSharp (infer.IR.Procname.CSharp)

    Module Procname.CSharp

    Type of csharp procedure names.

    type kind =
    1. | Non_Static
      (*

      in Java, procedures called with invokevirtual, invokespecial, and invokeinterface

      *)
    2. | Static
      (*

      in Java, procedures called with invokestatic

      *)
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val constructor_method_name : string
    val get_method : t -> string

    Return the method name of a csharp procedure name.

    val get_class_type_name : t -> Typ.Name.t

    Return the class name as a typename of a java procedure name.

    val get_return_typ : t -> Typ.t

    Return the return type of pname_csharp. return Tvoid if there's no return type

    val get_class_name : t -> string

    Return the class name of a java procedure name.

    val is_generated : t -> bool

    Check if the proc name comes from generated code

    diff --git a/website/static/odoc/next/infer/IR/Procname/Erlang/index.html b/website/static/odoc/next/infer/IR/Procname/Erlang/index.html index d5985d5f666..7281a268a2a 100644 --- a/website/static/odoc/next/infer/IR/Procname/Erlang/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Erlang/index.html @@ -1,2 +1,2 @@ -Erlang (infer.IR.Procname.Erlang)

    Module Procname.Erlang

    type t = private {
    1. module_name : string;
    2. function_name : string;
    3. arity : int;
    }
    \ No newline at end of file +Erlang (infer.IR.Procname.Erlang)

    Module Procname.Erlang

    type t = private {
    1. module_name : string;
    2. function_name : string;
    3. arity : int;
    }
    diff --git a/website/static/odoc/next/infer/IR/Procname/Hack/index.html b/website/static/odoc/next/infer/IR/Procname/Hack/index.html index 7b4db7a7438..7d94b1dc91e 100644 --- a/website/static/odoc/next/infer/IR/Procname/Hack/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Hack/index.html @@ -1,2 +1,2 @@ -Hack (infer.IR.Procname.Hack)

    Module Procname.Hack

    type t = private {
    1. class_name : HackClassName.t option;
    2. function_name : string;
    3. arity : int option;
    }

    Hack procedure is identified by the class and function names and its arity. The arity can be absent for external function declarations of the form declare F.f(...): ...

    TODO(arr): consider making the arity non-optional if we remove function declarations from the Tenv

    val get_class_name_as_a_string : t -> string option
    \ No newline at end of file +Hack (infer.IR.Procname.Hack)

    Module Procname.Hack

    type t = private {
    1. class_name : HackClassName.t option;
    2. function_name : string;
    3. arity : int option;
    }

    Hack procedure is identified by the class and function names and its arity. The arity can be absent for external function declarations of the form declare F.f(...): ...

    TODO(arr): consider making the arity non-optional if we remove function declarations from the Tenv

    val get_class_name_as_a_string : t -> string option
    diff --git a/website/static/odoc/next/infer/IR/Procname/HashSet/index.html b/website/static/odoc/next/infer/IR/Procname/HashSet/index.html index b9ac6036cae..37874b2853d 100644 --- a/website/static/odoc/next/infer/IR/Procname/HashSet/index.html +++ b/website/static/odoc/next/infer/IR/Procname/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.IR.Procname.HashSet)

    Module Procname.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.IR.Procname.HashSet)

    Module Procname.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Procname/Java/index.html b/website/static/odoc/next/infer/IR/Procname/Java/index.html index 142fd882cf3..b858523a937 100644 --- a/website/static/odoc/next/infer/IR/Procname/Java/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Java/index.html @@ -1,2 +1,2 @@ -Java (infer.IR.Procname.Java)

    Module Procname.Java

    Type of java procedure names.

    type kind =
    1. | Non_Static
      (*

      in Java, procedures called with invokevirtual, invokespecial, and invokeinterface

      *)
    2. | Static
      (*

      in Java, procedures called with invokestatic

      *)
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val constructor_method_name : string
    val class_initializer_method_name : string
    val get_class_name : t -> string

    Return the fully qualified class name of a java procedure name (package + class name)

    val get_class_type_name : t -> Typ.Name.t

    Return the class name as a typename of a java procedure name.

    val get_package : t -> string option

    Return the package name of a java procedure name.

    val get_method : t -> string

    Return the method name of a java procedure name.

    val get_parameters : t -> Typ.t list

    Return the parameters of a java procedure name.

    val get_return_typ : t -> Typ.t

    Return the return type of pname_java. return Tvoid if there's no return type

    val is_constructor : t -> bool

    Whether the method is constructor

    val is_access_method : t -> bool

    Check if the procedure name is an acess method (e.g. access$100 used to access private members from a nested class.

    val is_autogen_method : t -> bool

    Check if the procedure name is of an auto-generated/synthetic method.

    val is_close : t -> bool

    Check if the method name is "close".

    val is_static : t -> bool

    Check if the java procedure is static.

    val is_vararg : t -> bool

    Check if the proc name has the type of a java vararg. Note: currently only checks that the last argument has type Object.

    val is_generated : t -> bool

    Check if the proc name comes from generated code

    val is_class_initializer : t -> bool

    Check if this is a class initializer.

    val get_class_initializer : Typ.Name.t -> t

    Given a java class, generate the procname of its static initializer.

    val is_external : t -> bool

    Check if the method belongs to one of the specified external packages

    \ No newline at end of file +Java (infer.IR.Procname.Java)

    Module Procname.Java

    Type of java procedure names.

    type kind =
    1. | Non_Static
      (*

      in Java, procedures called with invokevirtual, invokespecial, and invokeinterface

      *)
    2. | Static
      (*

      in Java, procedures called with invokestatic

      *)
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val constructor_method_name : string
    val class_initializer_method_name : string
    val get_class_name : t -> string

    Return the fully qualified class name of a java procedure name (package + class name)

    val get_class_type_name : t -> Typ.Name.t

    Return the class name as a typename of a java procedure name.

    val get_package : t -> string option

    Return the package name of a java procedure name.

    val get_method : t -> string

    Return the method name of a java procedure name.

    val get_parameters : t -> Typ.t list

    Return the parameters of a java procedure name.

    val get_return_typ : t -> Typ.t

    Return the return type of pname_java. return Tvoid if there's no return type

    val is_constructor : t -> bool

    Whether the method is constructor

    val is_access_method : t -> bool

    Check if the procedure name is an acess method (e.g. access$100 used to access private members from a nested class.

    val is_autogen_method : t -> bool

    Check if the procedure name is of an auto-generated/synthetic method.

    val is_close : t -> bool

    Check if the method name is "close".

    val is_static : t -> bool

    Check if the java procedure is static.

    val is_vararg : t -> bool

    Check if the proc name has the type of a java vararg. Note: currently only checks that the last argument has type Object.

    val is_generated : t -> bool

    Check if the proc name comes from generated code

    val is_class_initializer : t -> bool

    Check if this is a class initializer.

    val get_class_initializer : Typ.Name.t -> t

    Given a java class, generate the procname of its static initializer.

    val is_external : t -> bool

    Check if the method belongs to one of the specified external packages

    diff --git a/website/static/odoc/next/infer/IR/Procname/LRUHash/index.html b/website/static/odoc/next/infer/IR/Procname/LRUHash/index.html index 0ff243c4408..2138f5986df 100644 --- a/website/static/odoc/next/infer/IR/Procname/LRUHash/index.html +++ b/website/static/odoc/next/infer/IR/Procname/LRUHash/index.html @@ -1,7 +1,7 @@ -LRUHash (infer.IR.Procname.LRUHash)

    Module Procname.LRUHash

    type key = t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : - pp_key:(Stdlib.Format.formatter -> key -> unit) -> - pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> +LRUHash (infer.IR.Procname.LRUHash)

    Module Procname.LRUHash

    type key = t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : + pp_key:(Stdlib.Format.formatter -> key -> unit) -> + pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t -> - unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    \ No newline at end of file + unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    diff --git a/website/static/odoc/next/infer/IR/Procname/Map/index.html b/website/static/odoc/next/infer/IR/Procname/Map/index.html index 0dc99dabf77..0c5db1de7d3 100644 --- a/website/static/odoc/next/infer/IR/Procname/Map/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Procname.Map)

    Module Procname.Map

    Maps from proc names.

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Procname.Map)

    Module Procname.Map

    Maps from proc names.

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Procname/ObjC_Cpp/index.html b/website/static/odoc/next/infer/IR/Procname/ObjC_Cpp/index.html index dafde786209..bf2de8bb9ab 100644 --- a/website/static/odoc/next/infer/IR/Procname/ObjC_Cpp/index.html +++ b/website/static/odoc/next/infer/IR/Procname/ObjC_Cpp/index.html @@ -1,8 +1,8 @@ -ObjC_Cpp (infer.IR.Procname.ObjC_Cpp)

    Module Procname.ObjC_Cpp

    type mangled = string option
    val compare_mangled : mangled -> mangled -> int
    type kind =
    1. | CPPMethod of mangled
    2. | CPPConstructor of mangled
    3. | CPPDestructor of mangled
    4. | ObjCClassMethod
    5. | ObjCInstanceMethod
    val compare_kind : kind -> kind -> int
    type t = {
    1. class_name : Typ.Name.t;
    2. kind : kind;
    3. method_name : string;
    4. parameters : Parameter.clang_parameter list;
      (*

      NOTE: parameters should NOT include additional this/self or __return_param.

      *)
    5. template_args : Typ.template_spec_info;
    }

    Type of Objective C and C++ procedure names: method signatures.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make : +ObjC_Cpp (infer.IR.Procname.ObjC_Cpp)

    Module Procname.ObjC_Cpp

    type mangled = string option
    val compare_mangled : mangled -> mangled -> int
    type kind =
    1. | CPPMethod of mangled
    2. | CPPConstructor of mangled
    3. | CPPDestructor of mangled
    4. | ObjCClassMethod
    5. | ObjCInstanceMethod
    val compare_kind : kind -> kind -> int
    type t = {
    1. class_name : Typ.Name.t;
    2. kind : kind;
    3. method_name : string;
    4. parameters : Parameter.clang_parameter list;
      (*

      NOTE: parameters should NOT include additional this/self or __return_param.

      *)
    5. template_args : Typ.template_spec_info;
    }

    Type of Objective C and C++ procedure names: method signatures.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val make : Typ.Name.t -> string -> kind -> Typ.template_spec_info -> Parameter.clang_parameter list -> - t

    Create an objc procedure name from a class_name and method_name.

    val get_class_name : t -> string
    val get_class_type_name : t -> Typ.Name.t
    val get_class_qualifiers : t -> QualifiedCppName.t
    val objc_method_kind_of_bool : bool -> kind

    Create ObjC method type from a bool is_instance.

    val is_objc_constructor : string -> bool

    Check if this is a constructor method in Objective-C.

    val is_destructor : t -> bool

    Check if this is a dealloc method.

    val is_inner_destructor : t -> bool

    Check if this is a frontend-generated "inner" destructor (see D5834555/D7189239)

    \ No newline at end of file + t

    Create an objc procedure name from a class_name and method_name.

    val get_class_name : t -> string
    val get_class_type_name : t -> Typ.Name.t
    val get_class_qualifiers : t -> QualifiedCppName.t
    val objc_method_kind_of_bool : bool -> kind

    Create ObjC method type from a bool is_instance.

    val is_objc_constructor : string -> bool

    Check if this is a constructor method in Objective-C.

    val is_destructor : t -> bool

    Check if this is a dealloc method.

    val is_inner_destructor : t -> bool

    Check if this is a frontend-generated "inner" destructor (see D5834555/D7189239)

    diff --git a/website/static/odoc/next/infer/IR/Procname/Parameter/index.html b/website/static/odoc/next/infer/IR/Procname/Parameter/index.html index 1b2afa1ef45..466aeabccad 100644 --- a/website/static/odoc/next/infer/IR/Procname/Parameter/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Parameter/index.html @@ -1,2 +1,2 @@ -Parameter (infer.IR.Procname.Parameter)

    Module Procname.Parameter

    type clang_parameter = Typ.Name.t option

    Type for parameters in clang procnames, Some name means the parameter is of type pointer to struct, with name being the name of the struct, None means the parameter is of some other type.

    val compare_clang_parameter : clang_parameter -> clang_parameter -> int
    val equal_clang_parameter : clang_parameter -> clang_parameter -> bool
    type t =
    1. | JavaParameter of Typ.t
    2. | ClangParameter of clang_parameter
    3. | CSharpParameter of Typ.t
    4. | ErlangParameter

    Type for parameters in procnames, for java and clang.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val of_typ : Typ.t -> clang_parameter
    \ No newline at end of file +Parameter (infer.IR.Procname.Parameter)

    Module Procname.Parameter

    type clang_parameter = Typ.Name.t option

    Type for parameters in clang procnames, Some name means the parameter is of type pointer to struct, with name being the name of the struct, None means the parameter is of some other type.

    val compare_clang_parameter : clang_parameter -> clang_parameter -> int
    val equal_clang_parameter : clang_parameter -> clang_parameter -> bool
    type t =
    1. | JavaParameter of Typ.t
    2. | ClangParameter of clang_parameter
    3. | CSharpParameter of Typ.t
    4. | ErlangParameter

    Type for parameters in procnames, for java and clang.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val of_typ : Typ.t -> clang_parameter
    diff --git a/website/static/odoc/next/infer/IR/Procname/Python/index.html b/website/static/odoc/next/infer/IR/Procname/Python/index.html index a97970556f6..b06b51c4b8d 100644 --- a/website/static/odoc/next/infer/IR/Procname/Python/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Python/index.html @@ -1,2 +1,2 @@ -Python (infer.IR.Procname.Python)

    Module Procname.Python

    type t = private {
    1. class_name : PythonClassName.t option;
    2. function_name : string;
    3. arity : int option;
    }
    type kind =
    1. | Fun of PythonClassName.t
      (*

      Toplevel function name, or class constructor

      *)
    2. | Init of PythonClassName.t
      (*

      Initialized of a class, like C.__init__

      *)
    3. | Other
      (*

      Other methods

      *)
    \ No newline at end of file +Python (infer.IR.Procname.Python)

    Module Procname.Python

    type t = private {
    1. class_name : PythonClassName.t option;
    2. function_name : string;
    3. arity : int option;
    }
    type kind =
    1. | Fun of PythonClassName.t
      (*

      Toplevel function name, or class constructor

      *)
    2. | Init of PythonClassName.t
      (*

      Initialized of a class, like C.__init__

      *)
    3. | Other
      (*

      Other methods

      *)
    diff --git a/website/static/odoc/next/infer/IR/Procname/Replace_polymorphic_compare/index.html b/website/static/odoc/next/infer/IR/Procname/Replace_polymorphic_compare/index.html new file mode 100644 index 00000000000..70fc742417a --- /dev/null +++ b/website/static/odoc/next/infer/IR/Procname/Replace_polymorphic_compare/index.html @@ -0,0 +1,2 @@ + +Replace_polymorphic_compare (infer.IR.Procname.Replace_polymorphic_compare)

    Module Procname.Replace_polymorphic_compare

    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    diff --git a/website/static/odoc/next/infer/IR/Procname/SQLite/index.html b/website/static/odoc/next/infer/IR/Procname/SQLite/index.html index b2d8c0c036f..987b72d4214 100644 --- a/website/static/odoc/next/infer/IR/Procname/SQLite/index.html +++ b/website/static/odoc/next/infer/IR/Procname/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IR.Procname.SQLite)

    Module Procname.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLite (infer.IR.Procname.SQLite)

    Module Procname.SQLite

    type t = t
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Procname/SQLiteList/index.html b/website/static/odoc/next/infer/IR/Procname/SQLiteList/index.html index bcc4316a248..a5815d32752 100644 --- a/website/static/odoc/next/infer/IR/Procname/SQLiteList/index.html +++ b/website/static/odoc/next/infer/IR/Procname/SQLiteList/index.html @@ -1,2 +1,2 @@ -SQLiteList (infer.IR.Procname.SQLiteList)

    Module Procname.SQLiteList

    type t = t list
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLiteList (infer.IR.Procname.SQLiteList)

    Module Procname.SQLiteList

    type t = t list
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Procname/Set/index.html b/website/static/odoc/next/infer/IR/Procname/Set/index.html index eb5f6005bea..6dfd8de389e 100644 --- a/website/static/odoc/next/infer/IR/Procname/Set/index.html +++ b/website/static/odoc/next/infer/IR/Procname/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Procname.Set)

    Module Procname.Set

    Sets of proc names.

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Procname.Set)

    Module Procname.Set

    Sets of proc names.

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Procname/UnitCache/index.html b/website/static/odoc/next/infer/IR/Procname/UnitCache/index.html index d753f6fce73..4578456c654 100644 --- a/website/static/odoc/next/infer/IR/Procname/UnitCache/index.html +++ b/website/static/odoc/next/infer/IR/Procname/UnitCache/index.html @@ -1,2 +1,2 @@ -UnitCache (infer.IR.Procname.UnitCache)

    Module Procname.UnitCache

    One-sized cache for one procedure at a time. Returns getter and setter.

    val create : unit -> (t -> 'a option) * (t -> 'a -> unit)
    \ No newline at end of file +UnitCache (infer.IR.Procname.UnitCache)

    Module Procname.UnitCache

    One-sized cache for one procedure at a time. Returns getter and setter.

    val create : unit -> (t -> 'a option) * (t -> 'a -> unit)
    diff --git a/website/static/odoc/next/infer/IR/Procname/index.html b/website/static/odoc/next/infer/IR/Procname/index.html index 76f8ecf0fd0..fb972cdc7ce 100644 --- a/website/static/odoc/next/infer/IR/Procname/index.html +++ b/website/static/odoc/next/infer/IR/Procname/index.html @@ -1,22 +1,25 @@ -Procname (infer.IR.Procname)

    Module IR.Procname

    module F = Stdlib.Format

    Module for Procedure Names.

    type detail_level =
    1. | Verbose
    2. | Non_verbose
    3. | Simple
    4. | NameOnly

    Level of verbosity of some to_string functions.

    module CSharp : sig ... end

    Type of csharp procedure names.

    module Java : sig ... end

    Type of java procedure names.

    module Parameter : sig ... end
    module ObjC_Cpp : sig ... end
    module C : sig ... end
    module Block : sig ... end

    Type of Objective C block names.

    module Erlang : sig ... end
    module Hack : sig ... end
    module Python : sig ... end
    type t =
    1. | Block of Block.t
    2. | C of C.t
    3. | CSharp of CSharp.t
    4. | Erlang of Erlang.t
    5. | Hack of Hack.t
    6. | Java of Java.t
    7. | ObjC_Cpp of ObjC_Cpp.t
    8. | Python of Python.t

    Type of procedure names.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val equal : t -> t -> bool
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except parameter types and template arguments.

    val get_class_type_name : t -> Typ.Name.t option
    val get_class_name : t -> string option
    val python_classify : t -> Python.kind option

    Classify a Python name into a Python.kind

    val mk_python_init : t -> t

    Turns a Python **toplevel** name into a valid initializer. E.g. it is used to turn a statement like x = C(42) into C.__init__(x, 42)

    val get_parameters : t -> Parameter.t list
    val replace_parameters : Parameter.t list -> t -> t
    val parameter_of_name : t -> Typ.Name.t -> Parameter.t
    val is_cpp_assignment_operator : t -> bool
    val is_destructor : t -> bool
    val is_java_static_method : t -> bool
    val is_java_instance_method : t -> bool
    val is_java_access_method : t -> bool
    val is_java_class_initializer : t -> bool
    val is_java_anonymous_inner_class_method : t -> bool
    val is_java_autogen_method : t -> bool
    val is_objc_method : t -> bool

    Includes specialized objective-c methods

    val is_objc_instance_method : t -> bool

    Includes specialized objective-c instance methods

    val is_objc_class_method : t -> bool

    Includes specialized objective-c class methods

    val is_objc_nsobject_class : t -> bool
    val get_objc_class_name : t -> string option
    val is_std_move : t -> bool
    val is_shared_ptr_observer : t -> bool

    Check if it is C++ shared pointer observer, e.g. std::shared_ptr::operator*

    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Hash tables with proc names as keys.

    module LRUHash : IStdlib.LRUHashtbl.S with type key = t
    module HashQueue : IStdlib.IStd.Hash_queue.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Maps from proc names.

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Sets of proc names.

    module SQLite : IBase.SqliteUtils.Data with type t = t
    module SQLiteList : IBase.SqliteUtils.Data with type t = t list
    module UnitCache : sig ... end

    One-sized cache for one procedure at a time. Returns getter and setter.

    val make_java : - class_name:Typ.Name.t -> - return_type:Typ.t option -> - method_name:string -> - parameters:Typ.t list -> - kind:Java.kind -> +Procname (infer.IR.Procname)

    Module IR.Procname

    module F = Stdlib.Format

    Module for Procedure Names.

    type detail_level =
    1. | FullNameOnly
    2. | NameOnly
    3. | Non_verbose
    4. | Simple
    5. | Verbose

    Level of verbosity of some to_string functions.

    module CSharp : sig ... end

    Type of csharp procedure names.

    module Java : sig ... end

    Type of java procedure names.

    module Parameter : sig ... end
    module ObjC_Cpp : sig ... end
    module C : sig ... end
    module Block : sig ... end

    Type of Objective C block names.

    module Erlang : sig ... end
    module Hack : sig ... end
    module Python : sig ... end
    type t =
    1. | Block of Block.t
    2. | C of C.t
    3. | CSharp of CSharp.t
    4. | Erlang of Erlang.t
    5. | Hack of Hack.t
    6. | Java of Java.t
    7. | ObjC_Cpp of ObjC_Cpp.t
    8. | Python of Python.t

    Type of procedure names.

    include Ppx_compare_lib.Comparable.S with type t := t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except parameter types and template arguments.

    val get_class_type_name : t -> Typ.Name.t option
    val get_class_name : t -> string option
    val python_classify : t -> Python.kind option

    Classify a Python name into a Python.kind

    val mk_python_init : t -> t

    Turns a Python **toplevel** name into a valid initializer. E.g. it is used to turn a statement like x = C(42) into C.__init__(x, 42)

    val get_parameters : t -> Parameter.t list
    val replace_parameters : Parameter.t list -> t -> t
    val parameter_of_name : t -> Typ.Name.t -> Parameter.t
    val is_cpp_assignment_operator : t -> bool
    val is_destructor : t -> bool
    val is_java_static_method : t -> bool
    val is_java_instance_method : t -> bool
    val is_java_access_method : t -> bool
    val is_java_class_initializer : t -> bool
    val is_java_anonymous_inner_class_method : t -> bool
    val is_java_autogen_method : t -> bool
    val is_objc_method : t -> bool

    Includes specialized objective-c methods

    val is_objc_instance_method : t -> bool

    Includes specialized objective-c instance methods

    val is_objc_class_method : t -> bool

    Includes specialized objective-c class methods

    val is_objc_nsobject_class : t -> bool
    val get_objc_class_name : t -> string option
    val is_std_move : t -> bool
    val is_shared_ptr_observer : t -> bool

    Check if it is C++ shared pointer observer, e.g. std::shared_ptr::operator*

    include IStdlib.IStd.Comparable.S with type t := t
    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    val ascending : t -> t -> int
    val descending : t -> t -> int
    val between : t -> low:t -> high:t -> bool
    val clamp_exn : t -> min:t -> max:t -> t
    val clamp : t -> min:t -> max:t -> t Base__.Or_error.t
    type comparator_witness
    val comparator : (t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:t Core__.Maybe_bound.t -> t Validate.check
    val validate_ubound : max:t Core__.Maybe_bound.t -> t Validate.check
    val validate_bound : + min:t Core__.Maybe_bound.t -> + max:t Core__.Maybe_bound.t -> + t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t

    Hash tables with proc names as keys.

    module LRUHash : IStdlib.LRUHashtbl.S with type key = t
    module HashQueue : IStdlib.IStd.Hash_queue.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t

    Maps from proc names.

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t

    Sets of proc names.

    module SQLite : IBase.SqliteUtils.Data with type t = t
    module SQLiteList : IBase.SqliteUtils.Data with type t = t list
    module UnitCache : sig ... end

    One-sized cache for one procedure at a time. Returns getter and setter.

    val make_java : + class_name:Typ.Name.t -> + return_type:Typ.t option -> + method_name:string -> + parameters:Typ.t list -> + kind:Java.kind -> t

    Create a Java procedure name.

    val make_csharp : - class_name:Typ.Name.t -> - return_type:Typ.t option -> - method_name:string -> - parameters:Typ.t list -> - kind:CSharp.kind -> - t

    Create a CSharp procedure name.

    val make_erlang : module_name:string -> function_name:string -> arity:int -> t

    Create an Erlang procedure name.

    val make_hack : - class_name:HackClassName.t option -> - function_name:string -> - arity:int option -> - t

    Create a Hack procedure name.

    val make_objc_dealloc : Typ.Name.t -> t

    Create a Objective-C dealloc name. This is a destructor for an Objective-C class. This procname is given by the class name, since it is always an instance method with the name "dealloc"

    val make_objc_copy : Typ.Name.t -> t

    Create a Objective-C copy name.

    val make_objc_copyWithZone : is_mutable:bool -> Typ.Name.t -> t

    Create an Objective-C method for copyWithZone: or mutableCopyWithZone: according to is_mutable.

    val make_python : - class_name:PythonClassName.t option -> - function_name:string -> - arity:int option -> - t

    Create a Python procedure name.

    val empty_block : t

    Empty block name.

    val get_language : t -> IBase.Language.t

    Return the language of the procedure.

    val get_method : t -> string

    Return the method/function of a procname.

    val is_objc_block : t -> bool

    Return whether the procname is a block procname.

    val is_cpp_lambda : t -> bool

    Return whether the procname is a cpp lambda procname.

    val is_objc_dealloc : t -> bool

    Return whether the dealloc method of an Objective-C class.

    val is_objc_init : t -> bool

    Return whether the init method of an Objective-C class.

    val is_c_method : t -> bool

    Return true this is an Objective-C/C++ method name.

    val is_clang : t -> bool

    Return true this is an Objective-C/C++ method name or a C function.

    val is_constructor : t -> bool

    Check if this is a constructor.

    val is_csharp : t -> bool

    Check if this is a CSharp procedure name.

    val is_hack : t -> bool

    Check if this is a Hack procedure name.

    val is_java : t -> bool

    Check if this is a Java procedure name.

    val is_python : t -> bool

    Check if this is a Python procedure name.

    val as_java_exn : explanation:string -> t -> Java.t

    Converts to a Java.t. Throws if is_java is false

    val objc_cpp_replace_method_name : t -> string -> t
    val is_infer_undefined : t -> bool

    Check if this is a special Infer undefined procedure.

    val is_static : t -> bool option

    Check if a procedure is a static class method or not. If the procedure is not a class method or is unknown to be static, it returns None. For now, this checking does not work on C++ methods.

    val get_global_name_of_initializer : t -> string option

    Return the name of the global for which this procedure is the initializer if this is an initializer, None otherwise.

    val pp_without_templates : Stdlib.Format.formatter -> t -> unit

    Pretty print a c++ proc name for the user to see.

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a proc name for the user to see.

    val pp_verbose : Stdlib.Format.formatter -> t -> unit

    Pretty print a proc name for the user to see with verbosity parameter.

    val to_string : ?verbosity:detail_level -> t -> string

    Convert a proc name into a string for the user to see.

    val describe : Stdlib.Format.formatter -> t -> unit

    to use in user messages

    val replace_class : t -> ?arity_incr:int -> Typ.Name.t -> t

    Replace the class name component of a procedure name. In case of Java, replace package and class name.

    val is_method_in_objc_protocol : t -> bool
    val pp_simplified_string : ?withclass:bool -> F.formatter -> t -> unit

    Pretty print a proc name as an easy string for the user to see in an IDE.

    val to_simplified_string : ?withclass:bool -> t -> string

    Convert a proc name into an easy string for the user to see in an IDE.

    val from_string_c_fun : string -> t

    Convert a string to a c function name.

    val replace_java_inner_class_prefix_regex : string -> string

    Replace "$[0-9]+" index into "$_" in Java proc name.

    val hashable_name : t -> string

    Convert the procedure name in a format suitable for computing the bug hash.

    val pp_unique_id : F.formatter -> t -> unit

    Print a proc name as a unique identifier.

    val to_unique_id : t -> string

    Convert a proc name into a unique identifier.

    val to_short_unique_name : t -> string

    Convert a proc name into a unique identfier guaranteed to be short (less than 50 characters)

    val to_filename : t -> string

    Convert a proc name to a filename.

    val get_qualifiers : t -> QualifiedCppName.t

    get qualifiers of C/objc/C++ method/function

    val decr_hack_arity : t -> t option

    return a Hack procname with decremented arity. Return None if input has no arity or 0 arity

    val get_hack_arity : t -> int option

    get the arity of a Hack procname

    val get_hack_static_init : is_trait:bool -> HackClassName.t -> t

    get the sinit procname in Hack

    val pp_name_only : F.formatter -> t -> unit

    Print name of procedure with at most one-level path. For example,

    • In C++: "<ClassName>::<ProcName>"
    • In Java, ObjC, C#: "<ClassName>.<ProcName>"
    • In C/Erlang: "<ProcName>"
    val is_c : t -> bool
    val is_lambda_name : string -> bool
    val is_lambda : t -> bool
    val is_lambda_or_block : t -> bool
    val patterns_match : Re.Str.regexp list -> t -> bool

    Test whether a proc name matches to one of the regular expressions.

    val is_erlang_unsupported : t -> bool
    val is_erlang : t -> bool
    val erlang_call_unqualified : arity:int -> t

    A special infer-erlang procname that represents a syntactic erlang (unqualified) function call. arity is the arity of the erlang function. First parameter of this procedure is expecteed to be the erlang function name, and the remaining parameters are the erlang parameters (given one-by-one and not as an erlang list).

    val erlang_call_qualified : arity:int -> t

    Same as erlang_call_unqualified but is expected to have an erlang module name as the first parameter, and the function name as second. arity is (still) the erlang arity of the function.

    val is_erlang_call_unqualified : t -> bool
    val is_erlang_call_qualified : t -> bool
    val is_hack_builtins : t -> bool
    val is_hack_sinit : t -> bool
    val has_hack_classname : t -> bool
    val is_hack_async_name : t -> bool
    \ No newline at end of file + class_name:Typ.Name.t -> + return_type:Typ.t option -> + method_name:string -> + parameters:Typ.t list -> + kind:CSharp.kind -> + t

    Create a CSharp procedure name.

    val make_erlang : module_name:string -> function_name:string -> arity:int -> t

    Create an Erlang procedure name.

    val make_hack : + class_name:HackClassName.t option -> + function_name:string -> + arity:int option -> + t

    Create a Hack procedure name.

    val make_objc_dealloc : Typ.Name.t -> t

    Create a Objective-C dealloc name. This is a destructor for an Objective-C class. This procname is given by the class name, since it is always an instance method with the name "dealloc"

    val make_objc_copy : Typ.Name.t -> t

    Create a Objective-C copy name.

    val make_objc_copyWithZone : is_mutable:bool -> Typ.Name.t -> t

    Create an Objective-C method for copyWithZone: or mutableCopyWithZone: according to is_mutable.

    val make_python : + class_name:PythonClassName.t option -> + function_name:string -> + arity:int option -> + t

    Create a Python procedure name.

    val empty_block : t

    Empty block name.

    val get_language : t -> IBase.Language.t

    Return the language of the procedure.

    val get_method : t -> string

    Return the method/function of a procname.

    val is_objc_block : t -> bool

    Return whether the procname is a block procname.

    val is_cpp_lambda : t -> bool

    Return whether the procname is a cpp lambda procname.

    val is_objc_dealloc : t -> bool

    Return whether the dealloc method of an Objective-C class.

    val is_objc_init : t -> bool

    Return whether the init method of an Objective-C class.

    val is_c_method : t -> bool

    Return true this is an Objective-C/C++ method name.

    val is_clang : t -> bool

    Return true this is an Objective-C/C++ method name or a C function.

    val is_constructor : t -> bool

    Check if this is a constructor.

    val is_csharp : t -> bool

    Check if this is a CSharp procedure name.

    val is_hack : t -> bool

    Check if this is a Hack procedure name.

    val is_java : t -> bool

    Check if this is a Java procedure name.

    val is_python : t -> bool

    Check if this is a Python procedure name.

    val as_java_exn : explanation:string -> t -> Java.t

    Converts to a Java.t. Throws if is_java is false

    val objc_cpp_replace_method_name : t -> string -> t
    val is_infer_undefined : t -> bool

    Check if this is a special Infer undefined procedure.

    val is_static : t -> bool option

    Check if a procedure is a static class method or not. If the procedure is not a class method or is unknown to be static, it returns None. For now, this checking does not work on C++ methods.

    val get_global_name_of_initializer : t -> string option

    Return the name of the global for which this procedure is the initializer if this is an initializer, None otherwise.

    val pp_without_templates : Stdlib.Format.formatter -> t -> unit

    Pretty print a c++ proc name for the user to see.

    val pp : Stdlib.Format.formatter -> t -> unit

    Pretty print a proc name for the user to see.

    val pp_verbose : Stdlib.Format.formatter -> t -> unit

    Pretty print a proc name for the user to see with verbosity parameter.

    val to_string : ?verbosity:detail_level -> t -> string

    Convert a proc name into a string for the user to see.

    val describe : Stdlib.Format.formatter -> t -> unit

    to use in user messages

    val replace_class : t -> ?arity_incr:int -> Typ.Name.t -> t

    Replace the class name component of a procedure name. In case of Java, replace package and class name.

    val is_method_in_objc_protocol : t -> bool
    val pp_simplified_string : ?withclass:bool -> F.formatter -> t -> unit

    Pretty print a proc name as an easy string for the user to see in an IDE.

    val to_simplified_string : ?withclass:bool -> t -> string

    Convert a proc name into an easy string for the user to see in an IDE.

    val from_string_c_fun : string -> t

    Convert a string to a c function name.

    val replace_java_inner_class_prefix_regex : string -> string

    Replace "$[0-9]+" index into "$_" in Java proc name.

    val hashable_name : t -> string

    Convert the procedure name in a format suitable for computing the bug hash.

    val pp_unique_id : F.formatter -> t -> unit

    Print a proc name as a unique identifier.

    val to_unique_id : t -> string

    Convert a proc name into a unique identifier.

    val to_short_unique_name : t -> string

    Convert a proc name into a unique identfier guaranteed to be short (less than 50 characters)

    val to_filename : t -> string

    Convert a proc name to a filename.

    val get_qualifiers : t -> QualifiedCppName.t

    get qualifiers of C/objc/C++ method/function

    val decr_hack_arity : t -> t option

    return a Hack procname with decremented arity. Return None if input has no arity or 0 arity

    val get_hack_arity : t -> int option

    get the arity of a Hack procname

    val get_hack_static_init : is_trait:bool -> HackClassName.t -> t

    get the sinit procname in Hack

    val pp_name_only : F.formatter -> t -> unit

    Print name of procedure with at most one-level path. For example,

    • In C++: "<ClassName>::<ProcName>"
    • In Java, ObjC, C#: "<ClassName>.<ProcName>"
    • In C: "<ProcName>"
    • In Erlang: "<ModuleName>:<ProcName>"
    val pp_fullname_only : F.formatter -> t -> unit

    Like pp_name_only, but include package name for Java.

    val is_c : t -> bool
    val is_lambda_name : string -> bool
    val is_lambda : t -> bool
    val is_lambda_or_block : t -> bool
    val patterns_match : IStdlib.IStd.Str.regexp list -> t -> bool

    Test whether a proc name matches to one of the regular expressions.

    val is_erlang_unsupported : t -> bool
    val is_erlang : t -> bool
    val erlang_call_unqualified : arity:int -> t

    A special infer-erlang procname that represents a syntactic erlang (unqualified) function call. arity is the arity of the erlang function. First parameter of this procedure is expecteed to be the erlang function name, and the remaining parameters are the erlang parameters (given one-by-one and not as an erlang list).

    val erlang_call_qualified : arity:int -> t

    Same as erlang_call_unqualified but is expected to have an erlang module name as the first parameter, and the function name as second. arity is (still) the erlang arity of the function.

    val is_erlang_call_unqualified : t -> bool
    val is_erlang_call_qualified : t -> bool
    val is_hack_builtins : t -> bool
    val is_hack_sinit : t -> bool
    val has_hack_classname : t -> bool
    val is_hack_async_name : t -> bool
    val is_hack_construct : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Pvar/Map/index.html b/website/static/odoc/next/infer/IR/Pvar/Map/index.html index 2ad53f7e9cf..59eadb44925 100644 --- a/website/static/odoc/next/infer/IR/Pvar/Map/index.html +++ b/website/static/odoc/next/infer/IR/Pvar/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Pvar.Map)

    Module Pvar.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Pvar.Map)

    Module Pvar.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Pvar/Set/index.html b/website/static/odoc/next/infer/IR/Pvar/Set/index.html index 717a535c518..08fc1e9a780 100644 --- a/website/static/odoc/next/infer/IR/Pvar/Set/index.html +++ b/website/static/odoc/next/infer/IR/Pvar/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Pvar.Set)

    Module Pvar.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Pvar.Set)

    Module Pvar.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Pvar/index.html b/website/static/odoc/next/infer/IR/Pvar/index.html index 59344858fa9..4976772c594 100644 --- a/website/static/odoc/next/infer/IR/Pvar/index.html +++ b/website/static/odoc/next/infer/IR/Pvar/index.html @@ -1,13 +1,13 @@ -Pvar (infer.IR.Pvar)

    Module IR.Pvar

    Program variables.

    module F = Stdlib.Format
    type translation_unit = IBase.SourceFile.t option
    type t

    Type for program variables. There are 4 kinds of variables:

    1. local variables, used for local variables and formal parameters
    2. callee program variables, used to handle recursion (x | callee is distinguished from x)
    3. global variables
    4. seed variables, used to store the initial value of formal parameters
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_modulo_this : t -> t -> int

    Comparison considering all pvars named 'this'/'self' to be equal

    val equal : t -> t -> bool

    Equality for pvar's

    val get_declaring_function : t -> Procname.t option

    if not a global, return function declaring var

    val d : t -> unit

    Dump a program variable.

    val get_name : t -> Mangled.t

    Get the name component of a program variable.

    val get_ret_pvar : Procname.t -> t

    get_ret_pvar proc_name retuns the return pvar associated with the procedure name

    val get_ret_param_pvar : Procname.t -> t

    get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

    val get_simplified_name : t -> string

    Get a simplified version of the name component of a program variable.

    val is_abduced : t -> bool

    Check if the pvar is an abduced return var or param passed by ref

    val is_callee : t -> bool

    Check if the pvar is a callee var

    val is_global : t -> bool

    Check if the pvar is a global var or a static local var

    val is_static_local : t -> bool

    Check if the pvar is a static variable declared inside a function

    val is_constant_array : t -> bool

    Check if the pvar has a constant array type

    val is_const : t -> bool

    Check if the pvar has a const type

    val is_local : t -> bool

    Check if the pvar is a (non-static) local var

    val is_seed : t -> bool

    Check if the pvar is a seed var

    val is_return : t -> bool

    Check if the pvar is a return var

    val is_this : t -> bool

    Check if a pvar is the special "this" var

    val is_self : t -> bool

    Check if a pvar is the special "self" var

    val is_artificial : t -> bool

    Check if a pvar is an artificial variable related coroutine, "__promise" or "__coro_frame"

    val is_frontend_tmp : t -> bool

    return true if pvar is a temporary variable generated by the frontend

    val is_clang_tmp : t -> bool

    return true if pvar is a temporary variable generated by clang

    val is_ssa_frontend_tmp : t -> bool

    return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

    val is_cpp_temporary : t -> bool

    return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

    val is_cpp_unnamed_param : t -> bool

    return true if this pvar represents an unnamed parameter

    val is_gmock_param : t -> bool

    return true if the parameter is for mock methods of GoogleTest

    val is_objc_static_local_of_proc_name : string -> t -> bool

    Check if a pvar is a local static in objc

    val is_block_pvar : t -> bool

    Check if a pvar is a local pointing to a block in objc

    val get_tmp_id : t -> Ident.t option

    In case of a temporary variable, returns the id used to create it, or None otherwise.

    val mk : Mangled.t -> Procname.t -> t

    mk name proc_name creates a program var with the given function name

    val mk_abduced_ref_param : Procname.t -> int -> IBase.Location.t -> t

    create an abduced variable for a parameter passed by reference

    val mk_abduced_ret : Procname.t -> IBase.Location.t -> t

    create an abduced return variable for a call to proc_name at loc

    val mk_callee : Mangled.t -> Procname.t -> t

    mk_callee name proc_name creates a program var for a callee function with the given function name

    val mk_global : - ?is_constexpr:bool -> - ?is_ice:bool -> - ?is_pod:bool -> - ?is_static_local:bool -> - ?is_static_global:bool -> - ?is_constant_array:bool -> - ?is_const:bool -> - ?translation_unit:IBase.SourceFile.t -> - ?template_args:Typ.template_spec_info -> +Pvar (infer.IR.Pvar)

    Module IR.Pvar

    Program variables.

    module F = Stdlib.Format
    type translation_unit = IBase.SourceFile.t option
    type t

    Type for program variables. There are 4 kinds of variables:

    1. local variables, used for local variables and formal parameters
    2. callee program variables, used to handle recursion (x | callee is distinguished from x)
    3. global variables
    4. seed variables, used to store the initial value of formal parameters
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_modulo_this : t -> t -> int

    Comparison considering all pvars named 'this'/'self' to be equal

    val equal : t -> t -> bool

    Equality for pvar's

    val get_declaring_function : t -> Procname.t option

    if not a global, return function declaring var

    val d : t -> unit

    Dump a program variable.

    val get_name : t -> Mangled.t

    Get the name component of a program variable.

    val get_ret_pvar : Procname.t -> t

    get_ret_pvar proc_name retuns the return pvar associated with the procedure name

    val get_ret_param_pvar : Procname.t -> t

    get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

    val get_simplified_name : t -> string

    Get a simplified version of the name component of a program variable.

    val is_abduced : t -> bool

    Check if the pvar is an abduced return var or param passed by ref

    val is_callee : t -> bool

    Check if the pvar is a callee var

    val is_global : t -> bool

    Check if the pvar is a global var or a static local var

    val is_static_local : t -> bool

    Check if the pvar is a static variable declared inside a function

    val is_constant_array : t -> bool

    Check if the pvar has a constant array type

    val is_const : t -> bool

    Check if the pvar has a const type

    val is_local : t -> bool

    Check if the pvar is a (non-static) local var

    val is_seed : t -> bool

    Check if the pvar is a seed var

    val is_return : t -> bool

    Check if the pvar is a return var

    val is_this : t -> bool

    Check if a pvar is the special "this" var

    val is_self : t -> bool

    Check if a pvar is the special "self" var

    val is_artificial : t -> bool

    Check if a pvar is an artificial variable related coroutine, "__promise" or "__coro_frame"

    val is_frontend_tmp : t -> bool

    return true if pvar is a temporary variable generated by the frontend

    val is_clang_tmp : t -> bool

    return true if pvar is a temporary variable generated by clang

    val is_ssa_frontend_tmp : t -> bool

    return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

    val is_cpp_temporary : t -> bool

    return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

    val is_cpp_unnamed_param : t -> bool

    return true if this pvar represents an unnamed parameter

    val is_gmock_param : t -> bool

    return true if the parameter is for mock methods of GoogleTest

    val is_objc_static_local_of_proc_name : string -> t -> bool

    Check if a pvar is a local static in objc

    val is_block_pvar : t -> bool

    Check if a pvar is a local pointing to a block in objc

    val get_tmp_id : t -> Ident.t option

    In case of a temporary variable, returns the id used to create it, or None otherwise.

    val mk : Mangled.t -> Procname.t -> t

    mk name proc_name creates a program var with the given function name

    val mk_abduced_ref_param : Procname.t -> int -> IBase.Location.t -> t

    create an abduced variable for a parameter passed by reference

    val mk_abduced_ret : Procname.t -> IBase.Location.t -> t

    create an abduced return variable for a call to proc_name at loc

    val mk_callee : Mangled.t -> Procname.t -> t

    mk_callee name proc_name creates a program var for a callee function with the given function name

    val mk_global : + ?is_constexpr:bool -> + ?is_ice:bool -> + ?is_pod:bool -> + ?is_static_local:bool -> + ?is_static_global:bool -> + ?is_constant_array:bool -> + ?is_const:bool -> + ?translation_unit:IBase.SourceFile.t -> + ?template_args:Typ.template_spec_info -> Mangled.t -> - t

    create a global variable with the given name

    val mk_tmp : string -> Procname.t -> t

    create a fresh temporary variable local to procedure pname. for use in the frontends only!

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a program variable.

    val pp_value : F.formatter -> t -> unit

    Pretty print a pvar which denotes a value, not an address

    val pp_value_non_verbose : F.formatter -> t -> unit

    Non-verbose version of pp_value

    val pp_translation_unit : F.formatter -> translation_unit -> unit
    val to_callee : Procname.t -> t -> t

    Turn an ordinary program variable into a callee program variable

    val to_seed : t -> t

    Turn a pvar into a seed pvar (which stores the initial value of a stack var)

    val to_string : t -> string

    Convert a pvar to string.

    val unnamed_param_prefix : string
    val get_translation_unit : t -> translation_unit

    Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

    val is_compile_constant : t -> bool

    Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

    val is_ice : t -> bool

    Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

    val is_pod : t -> bool

    Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

    val get_initializer_pname : t -> Procname.t option

    Get the procname of the initializer function for the given global variable

    val get_template_args : t -> Typ.template_spec_info
    val materialized_cpp_temporary : string
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    \ No newline at end of file + t

    create a global variable with the given name

    val mk_tmp : string -> Procname.t -> t

    create a fresh temporary variable local to procedure pname. for use in the frontends only!

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a program variable.

    val pp_value : F.formatter -> t -> unit

    Pretty print a pvar which denotes a value, not an address

    val pp_value_non_verbose : F.formatter -> t -> unit

    Non-verbose version of pp_value

    val pp_translation_unit : F.formatter -> translation_unit -> unit
    val to_callee : Procname.t -> t -> t

    Turn an ordinary program variable into a callee program variable

    val to_seed : t -> t

    Turn a pvar into a seed pvar (which stores the initial value of a stack var)

    val to_string : t -> string

    Convert a pvar to string.

    val unnamed_param_prefix : string
    val get_translation_unit : t -> translation_unit

    Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

    val is_compile_constant : t -> bool

    Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

    val is_ice : t -> bool

    Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

    val is_pod : t -> bool

    Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

    val get_initializer_pname : t -> Procname.t option

    Get the procname of the initializer function for the given global variable

    val get_template_args : t -> Typ.template_spec_info
    val materialized_cpp_temporary : string
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    diff --git a/website/static/odoc/next/infer/IR/PythonClassName/index.html b/website/static/odoc/next/infer/IR/PythonClassName/index.html index 560190d1af6..3056c973099 100644 --- a/website/static/odoc/next/infer/IR/PythonClassName/index.html +++ b/website/static/odoc/next/infer/IR/PythonClassName/index.html @@ -1,2 +1,2 @@ -PythonClassName (infer.IR.PythonClassName)

    Module IR.PythonClassName

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : string -> t
    val classname : t -> string
    val components : t -> string list
    val wildcard : t
    val pp : F.formatter -> t -> unit
    val to_string : t -> string
    val static_companion : t -> t

    return the class of the companion class object of this class eg: Foo -> Foo$static

    val static_companion_origin : t -> t

    return the origin class of a companion class object eg: Foo$static -> Foo. the result is not specified if is the name is not a valid static class name

    val is_static : t -> bool

    tests if the name is a valid static class name (ie. ends with "$static")

    \ No newline at end of file +PythonClassName (infer.IR.PythonClassName)

    Module IR.PythonClassName

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val make : string -> t
    val classname : t -> string
    val components : t -> string list
    val wildcard : t
    val pp : F.formatter -> t -> unit
    val to_string : t -> string
    val static_companion : t -> t

    return the class of the companion class object of this class eg: Foo -> Foo$static

    val static_companion_origin : t -> t

    return the origin class of a companion class object eg: Foo$static -> Foo. the result is not specified if is the name is not a valid static class name

    val is_static : t -> bool

    tests if the name is a valid static class name (ie. ends with "$static")

    diff --git a/website/static/odoc/next/infer/IR/QualifiedCppName/Match/index.html b/website/static/odoc/next/infer/IR/QualifiedCppName/Match/index.html index 9732fa41fc6..d7e9bc4c768 100644 --- a/website/static/odoc/next/infer/IR/QualifiedCppName/Match/index.html +++ b/website/static/odoc/next/infer/IR/QualifiedCppName/Match/index.html @@ -1,2 +1,2 @@ -Match (infer.IR.QualifiedCppName.Match)

    Module QualifiedCppName.Match

    Module to match qualified C++ procnames "fuzzily", that is up to namescapes and templating. In particular, this deals with the following issues:

    1. 'std::' namespace may have inline namespace afterwards: std::move becomes std::__1::move. This happens on libc++ and to some extent on libstdc++. To work around this problem, make matching against 'std::' more fuzzier: std::X::Y::Z will match std::.*::X::Y::Z (but only for the 'std' namespace).
    1. The names are allowed not to commit to a template specialization: we want std::move to match std::__1::move<const X&> and std::__1::move<int>. To do so, comparison function for qualifiers will ignore template specializations.

    For example:

    "std", "move":

    • matches: "std", "blah", "move"
    • matches: "std", "blah<int>", "move"
    • does not match: "std","blah", "move", "BAD" - we don't want std::.*::X::.* to pass
    • does not match: "stdBAD", "move", - it's not std namespace anymore

    "folly", "someFunction"

    • matches: "folly","someFunction"
    • matches: "folly","someFunction<int>"
    • matches: "folly<int>","someFunction"
    • does not match: "folly", "BAD", "someFunction" - unlike 'std' any other namespace needs all qualifiers to match
    • does not match: "folly","someFunction<int>", "BAD" - same as previous example
    type quals_matcher
    val of_fuzzy_qual_names : ?prefix:bool -> string list -> quals_matcher
    val match_qualifiers : quals_matcher -> t -> bool
    \ No newline at end of file +Match (infer.IR.QualifiedCppName.Match)

    Module QualifiedCppName.Match

    Module to match qualified C++ procnames "fuzzily", that is up to namescapes and templating. In particular, this deals with the following issues:

    1. 'std::' namespace may have inline namespace afterwards: std::move becomes std::__1::move. This happens on libc++ and to some extent on libstdc++. To work around this problem, make matching against 'std::' more fuzzier: std::X::Y::Z will match std::.*::X::Y::Z (but only for the 'std' namespace).
    1. The names are allowed not to commit to a template specialization: we want std::move to match std::__1::move<const X&> and std::__1::move<int>. To do so, comparison function for qualifiers will ignore template specializations.

    For example:

    "std", "move":

    • matches: "std", "blah", "move"
    • matches: "std", "blah<int>", "move"
    • does not match: "std","blah", "move", "BAD" - we don't want std::.*::X::.* to pass
    • does not match: "stdBAD", "move", - it's not std namespace anymore

    "folly", "someFunction"

    • matches: "folly","someFunction"
    • matches: "folly","someFunction<int>"
    • matches: "folly<int>","someFunction"
    • does not match: "folly", "BAD", "someFunction" - unlike 'std' any other namespace needs all qualifiers to match
    • does not match: "folly","someFunction<int>", "BAD" - same as previous example
    type quals_matcher
    val of_fuzzy_qual_names : ?prefix:bool -> string list -> quals_matcher
    val match_qualifiers : quals_matcher -> t -> bool
    diff --git a/website/static/odoc/next/infer/IR/QualifiedCppName/index.html b/website/static/odoc/next/infer/IR/QualifiedCppName/index.html index 0a155cd5564..a989f60815a 100644 --- a/website/static/odoc/next/infer/IR/QualifiedCppName/index.html +++ b/website/static/odoc/next/infer/IR/QualifiedCppName/index.html @@ -1,2 +1,2 @@ -QualifiedCppName (infer.IR.QualifiedCppName)

    Module IR.QualifiedCppName

    exception ParseError of string
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val empty : t

    empty qualified name

    val of_qual_string : string -> t

    attempts to parse the argument into a list::of::possibly::templated<T>::qualifiers

    val to_qual_string : t -> string

    returns qualified name as a string with "::" as a separator between qualifiers

    val append_qualifier : t -> qual:string -> t

    append qualifier to the end (innermost scope) of the qualified name

    val extract_last : t -> (string * t) option

    returns last (innermost scope) qualifier and qualified name without last qualifier

    val strip_template_args : t -> t

    returns qualified name without template arguments. For example:

    • input: std::shared_ptr<int>::shared_ptr<long>
    • output: std::shared_ptr::shared_ptr
    val compare_name : t -> t -> int

    similar to compare, but compares only names, except template arguments

    val append_template_args_to_last : t -> args:string -> t

    append template arguments to the last qualifier. Fails if qualified name is empty or it already has template args

    val to_list : t -> string list

    returns list of qualifiers

    val to_rev_list : t -> string list

    returns reversed list of qualifiers, ie innermost scope is the first element

    val of_list : string list -> t

    given list of qualifiers in normal order produce qualified name "std", "move"

    val of_rev_list : string list -> t

    given reversed list of qualifiers, produce qualified name (ie. "move", "std" for std::move )

    val from_field_qualified_name : t -> t
    val pp : Stdlib.Format.formatter -> t -> unit
    module Match : sig ... end

    Module to match qualified C++ procnames "fuzzily", that is up to namescapes and templating. In particular, this deals with the following issues:

    \ No newline at end of file +QualifiedCppName (infer.IR.QualifiedCppName)

    Module IR.QualifiedCppName

    exception ParseError of string
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val empty : t

    empty qualified name

    val of_qual_string : string -> t

    attempts to parse the argument into a list::of::possibly::templated<T>::qualifiers

    val to_qual_string : t -> string

    returns qualified name as a string with "::" as a separator between qualifiers

    val append_qualifier : t -> qual:string -> t

    append qualifier to the end (innermost scope) of the qualified name

    val extract_last : t -> (string * t) option

    returns last (innermost scope) qualifier and qualified name without last qualifier

    val strip_template_args : t -> t

    returns qualified name without template arguments. For example:

    • input: std::shared_ptr<int>::shared_ptr<long>
    • output: std::shared_ptr::shared_ptr
    val compare_name : t -> t -> int

    similar to compare, but compares only names, except template arguments

    val append_template_args_to_last : t -> args:string -> t

    append template arguments to the last qualifier. Fails if qualified name is empty or it already has template args

    val to_list : t -> string list

    returns list of qualifiers

    val to_rev_list : t -> string list

    returns reversed list of qualifiers, ie innermost scope is the first element

    val of_list : string list -> t

    given list of qualifiers in normal order produce qualified name "std", "move"

    val of_rev_list : string list -> t

    given reversed list of qualifiers, produce qualified name (ie. "move", "std" for std::move )

    val from_field_qualified_name : t -> t
    val pp : Stdlib.Format.formatter -> t -> unit
    module Match : sig ... end

    Module to match qualified C++ procnames "fuzzily", that is up to namescapes and templating. In particular, this deals with the following issues:

    diff --git a/website/static/odoc/next/infer/IR/Sil/index.html b/website/static/odoc/next/infer/IR/Sil/index.html index 313579b6926..8280e02b919 100644 --- a/website/static/odoc/next/infer/IR/Sil/index.html +++ b/website/static/odoc/next/infer/IR/Sil/index.html @@ -1,5 +1,5 @@ -Sil (infer.IR.Sil)

    Module IR.Sil

    The Smallfoot Intermediate Language

    module F = Stdlib.Format

    Programs and Types

    type if_kind =
    1. | Ik_bexp of {
      1. terminated : bool;
      }
      (*

      boolean expressions, and exp ? exp : exp

      *)
    2. | Ik_compexch
      (*

      used in atomic compare exchange expressions

      *)
    3. | Ik_dowhile
    4. | Ik_for
    5. | Ik_if of {
      1. terminated : bool;
      }
    6. | Ik_land_lor
      (*

      obtained from translation of && or ||

      *)
    7. | Ik_while
    8. | Ik_switch

    Kind of prune instruction

    val compare_if_kind : if_kind -> if_kind -> int
    val equal_if_kind : if_kind -> if_kind -> bool
    val pp_if_kind : F.formatter -> if_kind -> unit
    val is_terminated_if_kind : if_kind -> bool

    Whether an if_kind has a true terminated field, meaning that the conditional control flow creates a temporary branching in the CFG of the procedure that is closed by a Join node containing an EndBranches instruction. Frontends should try to terminate conditionals (by setting the terminated flag and emitting an EndBranches instruction at the appropriate point) whenever possible so some analyses can detect which instructions are executed under the influence of a conditional more easily.

    type instr_metadata =
    1. | Abstract of IBase.Location.t
      (*

      a good place to apply abstraction, mostly used in the biabduction analysis

      *)
    2. | CatchEntry of {
      1. try_id : int;
      2. loc : IBase.Location.t;
      }
      (*

      entry of C++ catch blocks

      *)
    3. | EndBranches
      (*

      the end of a conditional control flow generated by an if statement whose if_kind satisfies is_terminated_if_kind

      *)
    4. | ExitScope of Var.t list * IBase.Location.t
      (*

      remove temporaries and dead program variables

      *)
    5. | Nullify of Pvar.t * IBase.Location.t
      (*

      nullify stack variable

      *)
    6. | Skip
      (*

      no-op

      *)
    7. | TryEntry of {
      1. try_id : int;
      2. loc : IBase.Location.t;
      }
      (*

      entry of C++ try block

      *)
    8. | TryExit of {
      1. try_id : int;
      2. loc : IBase.Location.t;
      }
      (*

      exit of C++ try block

      *)
    9. | VariableLifetimeBegins of {
      1. pvar : Pvar.t;
      2. typ : Typ.t;
      3. loc : IBase.Location.t;
      4. is_cpp_structured_binding : bool;
      }
      (*

      stack variable declared

      *)
    val compare_instr_metadata : instr_metadata -> instr_metadata -> int
    type instr =
    1. | Load of {
      1. id : Ident.t;
      2. e : Exp.t;
      3. typ : Typ.t;
      4. loc : IBase.Location.t;
      }
      (*

      Load a value from the heap into an identifier.

      id = *e:typ where

      • e is an expression denoting a heap address
      • typ is the type of *e and id.
      *)
    2. | Store of {
      1. e1 : Exp.t;
      2. typ : Typ.t;
      3. e2 : Exp.t;
      4. loc : IBase.Location.t;
      }
      (*

      Store the value of an expression into the heap.

      *e1:typ = e2 where

      • e1 is an expression denoting a heap address
      • typ is the type of *e1 and e2.
      *)
    3. | Prune of Exp.t * IBase.Location.t * bool * if_kind
      (*

      The semantics of Prune (exp, loc, is_then_branch, if_kind) is that it prunes the state (blocks, or diverges) if exp evaluates to 1; the boolean is_then_branch is true if this is the then branch of an if condition, false otherwise (it is meaningless if if_kind is not Ik_if, Ik_bexp, or other if-like cases

      This instruction, together with the CFG structure, is used to encode control-flow with tests in the source program such as if branches and while loops.

      *)
    4. | Call of Ident.t * Typ.t +Sil (infer.IR.Sil)

      Module IR.Sil

      The Smallfoot Intermediate Language

      module F = Stdlib.Format

      Programs and Types

      type if_kind =
      1. | Ik_bexp of {
        1. terminated : bool;
        }
        (*

        boolean expressions, and exp ? exp : exp

        *)
      2. | Ik_compexch
        (*

        used in atomic compare exchange expressions

        *)
      3. | Ik_dowhile
      4. | Ik_for
      5. | Ik_if of {
        1. terminated : bool;
        }
      6. | Ik_land_lor
        (*

        obtained from translation of && or ||

        *)
      7. | Ik_while
      8. | Ik_switch

      Kind of prune instruction

      val compare_if_kind : if_kind -> if_kind -> int
      val equal_if_kind : if_kind -> if_kind -> bool
      val pp_if_kind : F.formatter -> if_kind -> unit
      val is_terminated_if_kind : if_kind -> bool

      Whether an if_kind has a true terminated field, meaning that the conditional control flow creates a temporary branching in the CFG of the procedure that is closed by a Join node containing an EndBranches instruction. Frontends should try to terminate conditionals (by setting the terminated flag and emitting an EndBranches instruction at the appropriate point) whenever possible so some analyses can detect which instructions are executed under the influence of a conditional more easily.

      type instr_metadata =
      1. | Abstract of IBase.Location.t
        (*

        a good place to apply abstraction, mostly used in the biabduction analysis

        *)
      2. | CatchEntry of {
        1. try_id : int;
        2. loc : IBase.Location.t;
        }
        (*

        entry of C++ catch blocks

        *)
      3. | EndBranches
        (*

        the end of a conditional control flow generated by an if statement whose if_kind satisfies is_terminated_if_kind

        *)
      4. | ExitScope of Var.t list * IBase.Location.t
        (*

        remove temporaries and dead program variables

        *)
      5. | Nullify of Pvar.t * IBase.Location.t
        (*

        nullify stack variable

        *)
      6. | Skip
        (*

        no-op

        *)
      7. | TryEntry of {
        1. try_id : int;
        2. loc : IBase.Location.t;
        }
        (*

        entry of C++ try block

        *)
      8. | TryExit of {
        1. try_id : int;
        2. loc : IBase.Location.t;
        }
        (*

        exit of C++ try block

        *)
      9. | VariableLifetimeBegins of {
        1. pvar : Pvar.t;
        2. typ : Typ.t;
        3. loc : IBase.Location.t;
        4. is_cpp_structured_binding : bool;
        }
        (*

        stack variable declared

        *)
      val compare_instr_metadata : instr_metadata -> instr_metadata -> int
      type instr =
      1. | Load of {
        1. id : Ident.t;
        2. e : Exp.t;
        3. typ : Typ.t;
        4. loc : IBase.Location.t;
        }
        (*

        Load a value from the heap into an identifier.

        id = *e:typ where

        • e is an expression denoting a heap address
        • typ is the type of *e and id.
        *)
      2. | Store of {
        1. e1 : Exp.t;
        2. typ : Typ.t;
        3. e2 : Exp.t;
        4. loc : IBase.Location.t;
        }
        (*

        Store the value of an expression into the heap.

        *e1:typ = e2 where

        • e1 is an expression denoting a heap address
        • typ is the type of *e1 and e2.
        *)
      3. | Prune of Exp.t * IBase.Location.t * bool * if_kind
        (*

        The semantics of Prune (exp, loc, is_then_branch, if_kind) is that it prunes the state (blocks, or diverges) if exp evaluates to 1; the boolean is_then_branch is true if this is the then branch of an if condition, false otherwise (it is meaningless if if_kind is not Ik_if, Ik_bexp, or other if-like cases

        This instruction, together with the CFG structure, is used to encode control-flow with tests in the source program such as if branches and while loops.

        *)
      4. | Call of Ident.t * Typ.t * Exp.t * (Exp.t * Typ.t) list * IBase.Location.t @@ -8,8 +8,8 @@ instr -> Exp.t IR.Exp.Map.t -> bool * Exp.t IR.Exp.Map.t

      Compare instructions from different procedures without considering locs, idents, pvars, or try_ids. The exp_map parameter gives a mapping of names used in the first instr to those used in the second, and the returned exp_map includes any additional mappings inferred from this comparison.

      val skip_instr : instr
      val instr_is_auxiliary : instr -> bool

      Check if an instruction is auxiliary, or if it comes from source instructions.

      val location_of_instr : instr -> IBase.Location.t

      Get the location of the instruction

      val exps_of_instr : instr -> Exp.t list

      get the expressions occurring in the instruction

      val pp_instr_metadata : IStdlib.Pp.env -> F.formatter -> instr_metadata -> unit
      val pp_instr : - print_types:bool -> + print_types:bool -> IStdlib.Pp.env -> F.formatter -> instr -> - unit

      Pretty print an instruction.

      val d_instr : instr -> unit

      Dump an instruction.

      \ No newline at end of file + unit

    Pretty print an instruction.

    val d_instr : instr -> unit

    Dump an instruction.

    diff --git a/website/static/odoc/next/infer/IR/SourceFiles/index.html b/website/static/odoc/next/infer/IR/SourceFiles/index.html index ba6dfe0bca0..6f010690f01 100644 --- a/website/static/odoc/next/infer/IR/SourceFiles/index.html +++ b/website/static/odoc/next/infer/IR/SourceFiles/index.html @@ -1,17 +1,17 @@ -SourceFiles (infer.IR.SourceFiles)

    Module IR.SourceFiles

    val add : +SourceFiles (infer.IR.SourceFiles)

    Module IR.SourceFiles

    val add : IBase.SourceFile.t -> Cfg.t -> Tenv.per_file -> IntegerWidths.t option -> unit

    Add or replace the row corresponding to the source file into the database.

    val get_all : - filter:Filtering.source_files_filter -> + filter:Filtering.source_files_filter -> unit -> IBase.SourceFile.t list

    get all the source files in the database

    val proc_names_of_source : IBase.SourceFile.t -> Procname.t list

    list of all the proc names (declared and defined) found in a source file

    val get_procs_in_file : Procname.t -> Procname.t list

    return the list of procedures in the file where the given procedure name was defined

    val is_empty : unit -> bool

    whether there exists at least one captured source file

    val is_freshly_captured : IBase.SourceFile.t -> bool

    whether the source file was captured in the last capture phase

    val mark_all_stale : unit -> unit

    mark all source files as stale; do be called at the start of a new capture phase

    val pp_all : - filter:Filtering.source_files_filter -> - type_environment:bool -> - procedure_names:bool -> - freshly_captured:bool -> + filter:Filtering.source_files_filter -> + type_environment:bool -> + procedure_names:bool -> + freshly_captured:bool -> Stdlib.Format.formatter -> unit -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/IR/Specialization/HeapPath/Map/index.html b/website/static/odoc/next/infer/IR/Specialization/HeapPath/Map/index.html index a760ae4ae1d..d82250989a3 100644 --- a/website/static/odoc/next/infer/IR/Specialization/HeapPath/Map/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/HeapPath/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Specialization.HeapPath.Map)

    Module HeapPath.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Specialization.HeapPath.Map)

    Module HeapPath.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Specialization/HeapPath/Set/index.html b/website/static/odoc/next/infer/IR/Specialization/HeapPath/Set/index.html index c89c688803b..68542361b96 100644 --- a/website/static/odoc/next/infer/IR/Specialization/HeapPath/Set/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/HeapPath/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Specialization.HeapPath.Set)

    Module HeapPath.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Specialization.HeapPath.Set)

    Module HeapPath.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Specialization/HeapPath/index.html b/website/static/odoc/next/infer/IR/Specialization/HeapPath/index.html index 9f660adbf09..bc078778e3f 100644 --- a/website/static/odoc/next/infer/IR/Specialization/HeapPath/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/HeapPath/index.html @@ -1,2 +1,2 @@ -HeapPath (infer.IR.Specialization.HeapPath)

    Module Specialization.HeapPath

    type t =
    1. | Pvar of Pvar.t
    2. | FieldAccess of Fieldname.t * t
    3. | Dereference of t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val pp : F.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +HeapPath (infer.IR.Specialization.HeapPath)

    Module Specialization.HeapPath

    type t =
    1. | Pvar of Pvar.t
    2. | FieldAccess of Fieldname.t * t
    3. | Dereference of t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val pp : F.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/IR/Specialization/Pulse/Aliases/index.html b/website/static/odoc/next/infer/IR/Specialization/Pulse/Aliases/index.html index 6d9385d58ba..042de37cb76 100644 --- a/website/static/odoc/next/infer/IR/Specialization/Pulse/Aliases/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/Pulse/Aliases/index.html @@ -1,2 +1,2 @@ -Aliases (infer.IR.Specialization.Pulse.Aliases)

    Module Pulse.Aliases

    type t = HeapPath.t list list

    set of alias sets (Note: list is enough because it is normalised during construction)

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    \ No newline at end of file +Aliases (infer.IR.Specialization.Pulse.Aliases)

    Module Pulse.Aliases

    type t = HeapPath.t list list

    set of alias sets (Note: list is enough because it is normalised during construction)

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    diff --git a/website/static/odoc/next/infer/IR/Specialization/Pulse/DynamicTypes/index.html b/website/static/odoc/next/infer/IR/Specialization/Pulse/DynamicTypes/index.html index 320d3dcde79..b8af8bb6d0f 100644 --- a/website/static/odoc/next/infer/IR/Specialization/Pulse/DynamicTypes/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/Pulse/DynamicTypes/index.html @@ -1,2 +1,2 @@ -DynamicTypes (infer.IR.Specialization.Pulse.DynamicTypes)

    Module Pulse.DynamicTypes

    binding from heap paths to their inferred dynamic type (will be used for devirtualization in the callee)

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    \ No newline at end of file +DynamicTypes (infer.IR.Specialization.Pulse.DynamicTypes)

    Module Pulse.DynamicTypes

    binding from heap paths to their inferred dynamic type (will be used for devirtualization in the callee)

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    diff --git a/website/static/odoc/next/infer/IR/Specialization/Pulse/Map/index.html b/website/static/odoc/next/infer/IR/Specialization/Pulse/Map/index.html index 8c2d86d1410..732cf5f540d 100644 --- a/website/static/odoc/next/infer/IR/Specialization/Pulse/Map/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/Pulse/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Specialization.Pulse.Map)

    Module Pulse.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Specialization.Pulse.Map)

    Module Pulse.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Specialization/Pulse/Set/index.html b/website/static/odoc/next/infer/IR/Specialization/Pulse/Set/index.html index 1a810d7e2c6..5384afacdaa 100644 --- a/website/static/odoc/next/infer/IR/Specialization/Pulse/Set/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/Pulse/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Specialization.Pulse.Set)

    Module Pulse.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Specialization.Pulse.Set)

    Module Pulse.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Specialization/Pulse/index.html b/website/static/odoc/next/infer/IR/Specialization/Pulse/index.html index acf39eca6a1..f6832f32ee8 100644 --- a/website/static/odoc/next/infer/IR/Specialization/Pulse/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/Pulse/index.html @@ -1,2 +1,2 @@ -Pulse (infer.IR.Specialization.Pulse)

    Module Specialization.Pulse

    module Aliases : sig ... end
    module DynamicTypes : sig ... end
    type t = {
    1. aliases : Aliases.t option;
    2. dynamic_types : DynamicTypes.t;
    }

    currently aliases=None means we did not detect any alias when applying the previous summary and this specialization will not introduce any alias assumption.

    aliases=Some [] means something went wrong... We have detected some aliases when applying the last summary, but we were not able to phrase it in term of parameters equalities.

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val bottom : t
    val is_empty : t -> bool
    val pp : F.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val is_pulse_specialization_limit_not_reached : 'a Map.t -> bool
    \ No newline at end of file +Pulse (infer.IR.Specialization.Pulse)

    Module Specialization.Pulse

    module Aliases : sig ... end
    module DynamicTypes : sig ... end
    type t = {
    1. aliases : Aliases.t option;
    2. dynamic_types : DynamicTypes.t;
    }

    currently aliases=None means we did not detect any alias when applying the previous summary and this specialization will not introduce any alias assumption.

    aliases=Some [] means something went wrong... We have detected some aliases when applying the last summary, but we were not able to phrase it in term of parameters equalities.

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val bottom : t
    val is_empty : t -> bool
    val pp : F.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val is_pulse_specialization_limit_not_reached : 'a Map.t -> bool
    val has_type_in_specialization : t -> Typ.name -> bool
    diff --git a/website/static/odoc/next/infer/IR/Specialization/index.html b/website/static/odoc/next/infer/IR/Specialization/index.html index f2a74ebb395..e2a717f7649 100644 --- a/website/static/odoc/next/infer/IR/Specialization/index.html +++ b/website/static/odoc/next/infer/IR/Specialization/index.html @@ -1,2 +1,2 @@ -Specialization (infer.IR.Specialization)

    Module IR.Specialization

    module F = Stdlib.Format
    module HeapPath : sig ... end
    module Pulse : sig ... end
    type t =
    1. | Pulse of Pulse.t

    Summary specialization is a technique that permits to increase the precision of summary by specializing them to calling context. Each analysis can choose its notion of specialization. The interprocedural engine will reanalyze a procedure if it needs specialization and it will add the obtained specialized summary to the summaries stored for this procedure. This techique avoids cloning procedures.

    \ No newline at end of file +Specialization (infer.IR.Specialization)

    Module IR.Specialization

    module F = Stdlib.Format
    module HeapPath : sig ... end
    module Pulse : sig ... end
    type t =
    1. | Pulse of Pulse.t

    Summary specialization is a technique that permits to increase the precision of summary by specializing them to calling context. Each analysis can choose its notion of specialization. The interprocedural engine will reanalyze a procedure if it needs specialization and it will add the obtained specialized summary to the summaries stored for this procedure. This techique avoids cloning procedures.

    diff --git a/website/static/odoc/next/infer/IR/SpecializeProcdesc/index.html b/website/static/odoc/next/infer/IR/SpecializeProcdesc/index.html index a68003215ba..1ff8de150b5 100644 --- a/website/static/odoc/next/infer/IR/SpecializeProcdesc/index.html +++ b/website/static/odoc/next/infer/IR/SpecializeProcdesc/index.html @@ -1,6 +1,6 @@ -SpecializeProcdesc (infer.IR.SpecializeProcdesc)

    Module IR.SpecializeProcdesc

    exception UnmatchedParameters
    val with_formals_types : +SpecializeProcdesc (infer.IR.SpecializeProcdesc)

    Module IR.SpecializeProcdesc

    exception UnmatchedParameters
    val with_formals_types : Procdesc.t -> Procname.t -> (Exp.t * Typ.t) list -> - Procdesc.t

    Creates a copy of a procedure description and a list of type substitutions of the form (name, typ) where name is a parameter. The resulting procdesc is isomorphic but all the type of the parameters are replaced in the instructions according to the list. The virtual calls are also replaced to match the parameter types

    \ No newline at end of file + Procdesc.t

    Creates a copy of a procedure description and a list of type substitutions of the form (name, typ) where name is a parameter. The resulting procdesc is isomorphic but all the type of the parameters are replaced in the instructions according to the list. The virtual calls are also replaced to match the parameter types

    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Java/index.html b/website/static/odoc/next/infer/IR/StdTyp/Java/index.html index 53e4982e487..4313ce8998a 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Java/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Java/index.html @@ -1,2 +1,2 @@ -Java (infer.IR.StdTyp.Java)

    Module StdTyp.Java

    val byte : t
    val char : t
    val short : t
    val pointer_to_java_lang_class : t
    val pointer_to_java_lang_object : t
    val pointer_to_java_lang_string : t
    \ No newline at end of file +Java (infer.IR.StdTyp.Java)

    Module StdTyp.Java

    val byte : t
    val char : t
    val short : t
    val pointer_to_java_lang_class : t
    val pointer_to_java_lang_object : t
    val pointer_to_java_lang_string : t
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Name/CSharp/index.html b/website/static/odoc/next/infer/IR/StdTyp/Name/CSharp/index.html index 4ff09e4d84b..c06030ff3ff 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Name/CSharp/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Name/CSharp/index.html @@ -1,2 +1,2 @@ -CSharp (infer.IR.StdTyp.Name.CSharp)

    Module Name.CSharp

    val system_string : t
    val system_object : t
    \ No newline at end of file +CSharp (infer.IR.StdTyp.Name.CSharp)

    Module Name.CSharp

    val system_string : t
    val system_object : t
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Name/Java/index.html b/website/static/odoc/next/infer/IR/StdTyp/Name/Java/index.html index 565bb866a8b..267be7f2b05 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Name/Java/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Name/Java/index.html @@ -1,2 +1,2 @@ -Java (infer.IR.StdTyp.Name.Java)

    Module Name.Java

    val java_io_serializable : t
    val java_lang_class : t
    val java_lang_cloneable : t
    val java_lang_object : t
    val java_lang_string : t
    val kotlin_coroutines_jvm_internal_restrictedsuspendlambda : t
    \ No newline at end of file +Java (infer.IR.StdTyp.Name.Java)

    Module Name.Java

    val java_io_serializable : t
    val java_lang_class : t
    val java_lang_cloneable : t
    val java_lang_object : t
    val java_lang_string : t
    val kotlin_coroutines_jvm_internal_restrictedsuspendlambda : t
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Name/Objc/index.html b/website/static/odoc/next/infer/IR/StdTyp/Name/Objc/index.html index ae107a224a4..c950364b17f 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Name/Objc/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Name/Objc/index.html @@ -1,2 +1,2 @@ -Objc (infer.IR.StdTyp.Name.Objc)

    Module Name.Objc

    val ns_enumerator : t
    val ns_object : t
    \ No newline at end of file +Objc (infer.IR.StdTyp.Name.Objc)

    Module Name.Objc

    val ns_enumerator : t
    val ns_object : t
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Name/index.html b/website/static/odoc/next/infer/IR/StdTyp/Name/index.html index ffc4996979a..31b9ebbd640 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Name/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Name/index.html @@ -1,2 +1,2 @@ -Name (infer.IR.StdTyp.Name)

    Module StdTyp.Name

    type t = Typ.Name.t
    module Java : sig ... end
    module CSharp : sig ... end
    module Objc : sig ... end
    \ No newline at end of file +Name (infer.IR.StdTyp.Name)

    Module StdTyp.Name

    type t = Typ.Name.t
    module Java : sig ... end
    module CSharp : sig ... end
    module Objc : sig ... end
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/Objc/index.html b/website/static/odoc/next/infer/IR/StdTyp/Objc/index.html index b1a41e8770a..74fcc650d6c 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/Objc/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/Objc/index.html @@ -1,2 +1,2 @@ -Objc (infer.IR.StdTyp.Objc)

    Module StdTyp.Objc

    val pointer_to_nszone : t
    \ No newline at end of file +Objc (infer.IR.StdTyp.Objc)

    Module StdTyp.Objc

    val pointer_to_nszone : t
    diff --git a/website/static/odoc/next/infer/IR/StdTyp/index.html b/website/static/odoc/next/infer/IR/StdTyp/index.html index 76300f20c1d..c3a0ef9686b 100644 --- a/website/static/odoc/next/infer/IR/StdTyp/index.html +++ b/website/static/odoc/next/infer/IR/StdTyp/index.html @@ -1,2 +1,2 @@ -StdTyp (infer.IR.StdTyp)

    Module IR.StdTyp

    type t = Typ.t
    val boolean : t
    val char : t
    val double : t
    val float : t
    val int : t
    val long : t
    val uint : t
    val void : t
    val void_star : t

    void* type

    module Name : sig ... end
    module Java : sig ... end
    module Objc : sig ... end
    \ No newline at end of file +StdTyp (infer.IR.StdTyp)

    Module IR.StdTyp

    type t = Typ.t
    val boolean : t
    val char : t
    val double : t
    val float : t
    val int : t
    val long : t
    val uint : t
    val void : t
    val void_star : t

    void* type

    module Name : sig ... end
    module Java : sig ... end
    module Objc : sig ... end
    diff --git a/website/static/odoc/next/infer/IR/Struct/ClassInfo/index.html b/website/static/odoc/next/infer/IR/Struct/ClassInfo/index.html index 0d898f107f8..d3761a08337 100644 --- a/website/static/odoc/next/infer/IR/Struct/ClassInfo/index.html +++ b/website/static/odoc/next/infer/IR/Struct/ClassInfo/index.html @@ -1,2 +1,2 @@ -ClassInfo (infer.IR.Struct.ClassInfo)

    Module Struct.ClassInfo

    type t =
    1. | NoInfo
    2. | CppClassInfo of {
      1. is_trivially_copyable : bool;
      }
      (*

      class kind in C++

      *)
    3. | JavaClassInfo of {
      1. kind : java_class_kind;
        (*

        class kind in Java

        *)
      2. loc : IBase.Location.t option;
        (*

        None should correspond to rare cases when it was impossible to fetch the location in source file

        *)
      }
    4. | HackClassInfo of hack_class_kind
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    \ No newline at end of file +ClassInfo (infer.IR.Struct.ClassInfo)

    Module Struct.ClassInfo

    type t =
    1. | NoInfo
    2. | CppClassInfo of {
      1. is_trivially_copyable : bool;
      }
      (*

      class kind in C++

      *)
    3. | JavaClassInfo of {
      1. kind : java_class_kind;
        (*

        class kind in Java

        *)
      2. loc : IBase.Location.t option;
        (*

        None should correspond to rare cases when it was impossible to fetch the location in source file

        *)
      }
    4. | HackClassInfo of hack_class_kind
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    diff --git a/website/static/odoc/next/infer/IR/Struct/index.html b/website/static/odoc/next/infer/IR/Struct/index.html index c5ba252d002..16335513002 100644 --- a/website/static/odoc/next/infer/IR/Struct/index.html +++ b/website/static/odoc/next/infer/IR/Struct/index.html @@ -1,19 +1,19 @@ -Struct (infer.IR.Struct)

    Module IR.Struct

    module F = Stdlib.Format
    type field = Fieldname.t * Typ.t * Annot.Item.t
    val compare_field : field -> field -> int
    val equal_field : field -> field -> bool
    type java_class_kind =
    1. | Interface
    2. | AbstractClass
    3. | NormalClass
    val equal_java_class_kind : java_class_kind -> java_class_kind -> bool
    type hack_class_kind =
    1. | Class
    2. | Interface
    3. | Trait
    module ClassInfo : sig ... end
    type t = private {
    1. fields : field list;
      (*

      non-static fields

      *)
    2. statics : field list;
      (*

      static fields

      *)
    3. supers : Typ.Name.t list;
      (*

      superclasses

      *)
    4. objc_protocols : Typ.Name.t list;
      (*

      ObjC protocols

      *)
    5. methods : Procname.t list;
      (*

      methods defined

      *)
    6. exported_objc_methods : Procname.t list;
      (*

      methods in ObjC interface, subset of methods

      *)
    7. annots : Annot.Item.t;
      (*

      annotations

      *)
    8. class_info : ClassInfo.t;
      (*

      present if and only if the class is Java or Hack

      *)
    9. dummy : bool;
      (*

      dummy struct for class including static method

      *)
    10. source_file : IBase.SourceFile.t option;
      (*

      source file containing this struct's declaration

      *)
    }

    Type for a structured value.

    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    type lookup = Typ.Name.t -> t option
    val pp_field : IStdlib.Pp.env -> F.formatter -> field -> unit
    val pp : IStdlib.Pp.env -> Typ.Name.t -> F.formatter -> t -> unit

    Pretty print a struct type.

    val internal_mk_struct : - ?default:t -> - ?fields:field list -> - ?statics:field list -> - ?methods:Procname.t list -> - ?exported_objc_methods:Procname.t list -> - ?supers:Typ.Name.t list -> - ?objc_protocols:Typ.Name.t list -> - ?annots:Annot.Item.t -> - ?class_info:ClassInfo.t -> - ?dummy:bool -> - ?source_file:IBase.SourceFile.t -> +Struct (infer.IR.Struct)

    Module IR.Struct

    module F = Stdlib.Format
    type field = Fieldname.t * Typ.t * Annot.Item.t
    val compare_field : field -> field -> int
    val equal_field : field -> field -> bool
    type java_class_kind =
    1. | Interface
    2. | AbstractClass
    3. | NormalClass
    val equal_java_class_kind : java_class_kind -> java_class_kind -> bool
    type hack_class_kind =
    1. | Class
    2. | AbstractClass
    3. | Interface
    4. | Trait
    module ClassInfo : sig ... end
    type t = private {
    1. fields : field list;
      (*

      non-static fields

      *)
    2. statics : field list;
      (*

      static fields

      *)
    3. supers : Typ.Name.t list;
      (*

      superclasses

      *)
    4. objc_protocols : Typ.Name.t list;
      (*

      ObjC protocols

      *)
    5. methods : Procname.t list;
      (*

      methods defined

      *)
    6. exported_objc_methods : Procname.t list;
      (*

      methods in ObjC interface, subset of methods

      *)
    7. annots : Annot.Item.t;
      (*

      annotations

      *)
    8. class_info : ClassInfo.t;
      (*

      present if and only if the class is Java or Hack

      *)
    9. dummy : bool;
      (*

      dummy struct for class including static method

      *)
    10. source_file : IBase.SourceFile.t option;
      (*

      source file containing this struct's declaration

      *)
    }

    Type for a structured value.

    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    type lookup = Typ.Name.t -> t option
    val pp_field : IStdlib.Pp.env -> F.formatter -> field -> unit
    val pp : IStdlib.Pp.env -> Typ.Name.t -> F.formatter -> t -> unit

    Pretty print a struct type.

    val internal_mk_struct : + ?default:t -> + ?fields:field list -> + ?statics:field list -> + ?methods:Procname.t list -> + ?exported_objc_methods:Procname.t list -> + ?supers:Typ.Name.t list -> + ?objc_protocols:Typ.Name.t list -> + ?annots:Annot.Item.t -> + ?class_info:ClassInfo.t -> + ?dummy:bool -> + ?source_file:IBase.SourceFile.t -> Typ.name -> - t

    Construct a struct_typ, normalizing field types

    val get_extensible_array_element_typ : lookup:lookup -> Typ.t -> Typ.t option

    the element typ of the final extensible array in the given typ, if any

    type field_info = {
    1. typ : Typ.t;
    2. annotations : Annot.Item.t;
    3. is_static : bool;
    }
    val get_field_info : lookup:lookup -> Fieldname.t -> Typ.t -> field_info option

    Lookup for info associated with the field fn. None if typ has no field named fn

    val fld_typ_opt : lookup:lookup -> Fieldname.t -> Typ.t -> Typ.t option

    If a struct type with field f, return Some (the type of f). If not, return None.

    val fld_typ : lookup:lookup -> default:Typ.t -> Fieldname.t -> Typ.t -> Typ.t

    If a struct type with field f, return the type of f. If not, return the default type if given, otherwise raise an exception

    val get_field_type_and_annotation : - lookup:lookup -> + t

    Construct a struct_typ, normalizing field types

    val get_extensible_array_element_typ : lookup:lookup -> Typ.t -> Typ.t option

    the element typ of the final extensible array in the given typ, if any

    type field_info = {
    1. typ : Typ.t;
    2. annotations : Annot.Item.t;
    3. is_static : bool;
    }
    val get_field_info : lookup:lookup -> Fieldname.t -> Typ.t -> field_info option

    Lookup for info associated with the field fn. None if typ has no field named fn

    val fld_typ_opt : lookup:lookup -> Fieldname.t -> Typ.t -> Typ.t option

    If a struct type with field f, return Some (the type of f). If not, return None.

    val fld_typ : lookup:lookup -> default:Typ.t -> Fieldname.t -> Typ.t -> Typ.t

    If a struct type with field f, return the type of f. If not, return the default type if given, otherwise raise an exception

    val get_field_type_and_annotation : + lookup:lookup -> Fieldname.t -> Typ.t -> - (Typ.t * Annot.Item.t) option

    Return the type of the field fn and its annotation, None if typ has no field named fn

    val merge : Typ.Name.t -> newer:t -> current:t -> t

    best effort directed merge of two structs for the same typename

    val is_not_java_interface : t -> bool

    check that a struct either defines a non-java type, or a non-java-interface type (abstract or normal class)

    val get_source_file : t -> IBase.SourceFile.t option
    val is_hack_class : t -> bool
    val is_hack_interface : t -> bool
    val is_hack_trait : t -> bool
    \ No newline at end of file + (Typ.t * Annot.Item.t) option

    Return the type of the field fn and its annotation, None if typ has no field named fn

    val merge : Typ.Name.t -> newer:t -> current:t -> t

    best effort directed merge of two structs for the same typename

    val is_not_java_interface : t -> bool

    check that a struct either defines a non-java type, or a non-java-interface type (abstract or normal class)

    val get_source_file : t -> IBase.SourceFile.t option
    val is_hack_class : t -> bool
    val is_hack_abstract_class : t -> bool
    val is_hack_interface : t -> bool
    val is_hack_trait : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Subtype/index.html b/website/static/odoc/next/infer/IR/Subtype/index.html index 7c41e431352..327f0bec634 100644 --- a/website/static/odoc/next/infer/IR/Subtype/index.html +++ b/website/static/odoc/next/infer/IR/Subtype/index.html @@ -1,6 +1,6 @@ -Subtype (infer.IR.Subtype)

    Module IR.Subtype

    The Smallfoot Intermediate Language: Subtypes

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit
    val exact : t
    val subtypes : t

    denotes the current type only

    val subtypes_cast : t

    denotes the current type and any subtypes

    val subtypes_instof : t
    val join : t -> t -> t
    val case_analysis : +Subtype (infer.IR.Subtype)

    Module IR.Subtype

    The Smallfoot Intermediate Language: Subtypes

    module F = Stdlib.Format
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val pp : F.formatter -> t -> unit
    val exact : t
    val subtypes : t

    denotes the current type only

    val subtypes_cast : t

    denotes the current type and any subtypes

    val subtypes_instof : t
    val join : t -> t -> t
    val case_analysis : Tenv.t -> (Typ.Name.t * t) -> (Typ.Name.t * t) -> - t option * t option

    case_analysis tenv (c1, st1) (c2, st2) performs case analysis on c1 <: c2 according to st1 and st2. case_analysis returns a pair:

    • whether st1 and st2 admit c1 <: c2, and in case returns the updated subtype st1
    • whether st1 and st2 admit not(c1 <: c2), and in case returns the updated subtype st1
    val is_known_subtype : Tenv.t -> Typ.Name.t -> Typ.Name.t -> bool

    is_known_subtype tenv c1 c2 returns true if there is enough information in tenv to prove that c1 is a subtype of c2. Note that not (is_known_subtype tenv c1 c2) == true does not imply that is_known_not_subtype tenv c1 c2 == true

    val is_cast : t -> bool
    val is_instof : t -> bool
    val equal_modulo_flag : t -> t -> bool

    equality ignoring flags in the subtype

    \ No newline at end of file + t option * t option

    case_analysis tenv (c1, st1) (c2, st2) performs case analysis on c1 <: c2 according to st1 and st2. case_analysis returns a pair:

    • whether st1 and st2 admit c1 <: c2, and in case returns the updated subtype st1
    • whether st1 and st2 admit not(c1 <: c2), and in case returns the updated subtype st1
    val is_known_subtype : Tenv.t -> Typ.Name.t -> Typ.Name.t -> bool

    is_known_subtype tenv c1 c2 returns true if there is enough information in tenv to prove that c1 is a subtype of c2. Note that not (is_known_subtype tenv c1 c2) == true does not imply that is_known_not_subtype tenv c1 c2 == true

    val is_cast : t -> bool
    val is_instof : t -> bool
    val equal_modulo_flag : t -> t -> bool

    equality ignoring flags in the subtype

    diff --git a/website/static/odoc/next/infer/IR/Tenv/MethodInfo/Hack/index.html b/website/static/odoc/next/infer/IR/Tenv/MethodInfo/Hack/index.html index 932f2d0f5ba..000c8185ed7 100644 --- a/website/static/odoc/next/infer/IR/Tenv/MethodInfo/Hack/index.html +++ b/website/static/odoc/next/infer/IR/Tenv/MethodInfo/Hack/index.html @@ -1,2 +1,2 @@ -Hack (infer.IR.Tenv.MethodInfo.Hack)

    Module MethodInfo.Hack

    type kind = private
    1. | IsClass
      (*

      Normal method call

      *)
    2. | IsTrait of {
      1. used : Typ.Name.t;
      2. is_direct : bool;
      }
      (*

      Trait method call: used is the name of the class uses the trait. If it is a direct trait method call, e.g. Trait::foo, used is the name of the trait.

      *)
    \ No newline at end of file +Hack (infer.IR.Tenv.MethodInfo.Hack)

    Module MethodInfo.Hack

    type kind = private
    1. | IsClass
      (*

      Normal method call

      *)
    2. | IsTrait of {
      1. used : Typ.Name.t;
      2. is_direct : bool;
      }
      (*

      Trait method call: used is the name of the class uses the trait. If it is a direct trait method call, e.g. Trait::foo, used is the name of the trait.

      *)
    diff --git a/website/static/odoc/next/infer/IR/Tenv/MethodInfo/index.html b/website/static/odoc/next/infer/IR/Tenv/MethodInfo/index.html index 68008653610..4a8523e58be 100644 --- a/website/static/odoc/next/infer/IR/Tenv/MethodInfo/index.html +++ b/website/static/odoc/next/infer/IR/Tenv/MethodInfo/index.html @@ -1,2 +1,2 @@ -MethodInfo (infer.IR.Tenv.MethodInfo)

    Module Tenv.MethodInfo

    module Hack : sig ... end
    type t
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val mk_class : Procname.t -> t
    val get_procname : t -> Procname.t
    val get_hack_kind : t -> Hack.kind option
    \ No newline at end of file +MethodInfo (infer.IR.Tenv.MethodInfo)

    Module Tenv.MethodInfo

    module Hack : sig ... end
    type t
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val mk_class : Procname.t -> t
    val get_procname : t -> Procname.t
    val get_hack_kind : t -> Hack.kind option
    diff --git a/website/static/odoc/next/infer/IR/Tenv/SQLite/index.html b/website/static/odoc/next/infer/IR/Tenv/SQLite/index.html index 1e66c746062..6a593bf8770 100644 --- a/website/static/odoc/next/infer/IR/Tenv/SQLite/index.html +++ b/website/static/odoc/next/infer/IR/Tenv/SQLite/index.html @@ -1,2 +1,2 @@ -SQLite (infer.IR.Tenv.SQLite)

    Module Tenv.SQLite

    type t = per_file
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    \ No newline at end of file +SQLite (infer.IR.Tenv.SQLite)

    Module Tenv.SQLite

    type t = per_file
    val serialize : t -> Sqlite3.Data.t
    val deserialize : Sqlite3.Data.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Tenv/index.html b/website/static/odoc/next/infer/IR/Tenv/index.html index ae863e92f08..4d2300e1935 100644 --- a/website/static/odoc/next/infer/IR/Tenv/index.html +++ b/website/static/odoc/next/infer/IR/Tenv/index.html @@ -1,35 +1,35 @@ -Tenv (infer.IR.Tenv)

    Module IR.Tenv

    Module for Type Environments.

    type t

    Type for type environment.

    val create : unit -> t

    Create a new type environment.

    val load : IBase.SourceFile.t -> t option

    Load a type environment for a source file

    • alert tenv Analysis code should use [Exe_env.get_source_tenv] instead.
    val store_debug_file_for_source : IBase.SourceFile.t -> t -> unit
    val read : IBase.DB.filename -> t option

    Read and return a type environment from the given file

    val write : t -> IBase.DB.filename -> unit

    Write the type environment into the given file

    val load_global : unit -> t option

    Load the global type environment (Java)

    val store_global : normalize:bool -> t -> unit

    Save a global type environment (Java/Hack)

    val lookup : t -> Typ.Name.t -> Struct.t option

    Look up a name in the given type environment.

    val mk_struct : +Tenv (infer.IR.Tenv)

    Module IR.Tenv

    Module for Type Environments.

    type t

    Type for type environment.

    val create : unit -> t

    Create a new type environment.

    val load : IBase.SourceFile.t -> t option

    Load a type environment for a source file

    • alert tenv Analysis code should use [Exe_env.get_source_tenv] instead.
    val store_debug_file_for_source : IBase.SourceFile.t -> t -> unit
    val read : IBase.DB.filename -> t option

    Read and return a type environment from the given file

    val write : t -> IBase.DB.filename -> unit

    Write the type environment into the given file

    val load_global : unit -> t option

    Load the global type environment (Java)

    val store_global : normalize:bool -> t -> unit

    Save a global type environment (Java/Hack)

    val lookup : t -> Typ.Name.t -> Struct.t option

    Look up a name in the given type environment.

    val mk_struct : t -> - ?default:Struct.t -> - ?fields:Struct.field list -> - ?statics:Struct.field list -> - ?methods:Procname.t list -> - ?exported_objc_methods:Procname.t list -> - ?supers:Typ.Name.t list -> - ?objc_protocols:Typ.Name.t list -> - ?annots:Annot.Item.t -> - ?class_info:Struct.ClassInfo.t -> - ?dummy:bool -> - ?source_file:IBase.SourceFile.t -> + ?default:Struct.t -> + ?fields:Struct.field list -> + ?statics:Struct.field list -> + ?methods:Procname.t list -> + ?exported_objc_methods:Procname.t list -> + ?supers:Typ.Name.t list -> + ?objc_protocols:Typ.Name.t list -> + ?annots:Annot.Item.t -> + ?class_info:Struct.ClassInfo.t -> + ?dummy:bool -> + ?source_file:IBase.SourceFile.t -> Typ.Name.t -> - Struct.t

    Construct a struct_typ, normalizing field types

    val add_field : t -> Typ.Name.t -> Struct.field -> unit

    Add a field to a given struct in the global type environment.

    val pp : Stdlib.Format.formatter -> t -> unit

    print a type environment

    val fold : t -> init:'acc -> f:(Typ.Name.t -> Struct.t -> 'acc -> 'acc) -> 'acc
    val fold_supers : - ?ignore_require_extends:bool -> + Struct.t

    Construct a struct_typ, normalizing field types

    val add_field : t -> Typ.Name.t -> Struct.field -> unit

    Add a field to a given struct in the global type environment.

    val pp : Stdlib.Format.formatter -> t -> unit

    print a type environment

    val fold : t -> init:'acc -> f:(Typ.Name.t -> Struct.t -> 'acc -> 'acc) -> 'acc
    val fold_supers : + ?ignore_require_extends:bool -> t -> Typ.Name.t -> - init:'a -> - f:(Typ.Name.t -> Struct.t option -> 'a -> 'a) -> + init:'a -> + f:(Typ.Name.t -> Struct.t option -> 'a -> 'a) -> 'a
    val mem_supers : t -> Typ.Name.t -> - f:(Typ.Name.t -> Struct.t option -> bool) -> + f:(Typ.Name.t -> Struct.t option -> bool) -> bool
    val get_parent : t -> Typ.Name.t -> Typ.Name.t option
    val find_map_supers : - ?ignore_require_extends:bool -> + ?ignore_require_extends:bool -> t -> Typ.Name.t -> - f:(Typ.Name.t -> Struct.t option -> 'a option) -> - 'a option
    val implements_remodel_class : t -> Typ.Name.t -> bool

    Check if a class implements the Remodel class

    val get_fields_trans : t -> Typ.Name.t -> Struct.field list

    Get all fields from the super classes transitively

    type per_file =
    1. | Global
    2. | FileLocal of t
    val pp_per_file : Stdlib.Format.formatter -> per_file -> unit

    print per file type environment

    val merge : src:t -> dst:t -> unit

    Merge src into dst

    val merge_per_file : src:per_file -> dst:per_file -> per_file

    Best-effort merge of src into dst. If a procedure is both in dst and src, the one in dst will get overwritten.

    module MethodInfo : sig ... end
    val resolve_method : - method_exists:(Procname.t -> Procname.t list -> bool) -> + f:(Typ.Name.t -> Struct.t option -> 'a option) -> + 'a option
    val get_fields_trans : t -> Typ.Name.t -> Struct.field list

    Get all fields from the super classes transitively

    type per_file =
    1. | Global
    2. | FileLocal of t
    val pp_per_file : Stdlib.Format.formatter -> per_file -> unit

    print per file type environment

    val merge : src:t -> dst:t -> unit

    Merge src into dst

    val merge_per_file : src:per_file -> dst:per_file -> per_file

    Best-effort merge of src into dst. If a procedure is both in dst and src, the one in dst will get overwritten.

    module MethodInfo : sig ... end
    val resolve_method : + method_exists:(Procname.t -> Procname.t list -> bool) -> t -> Typ.Name.t -> Procname.t -> @@ -37,4 +37,4 @@ t -> Typ.Name.t -> Fieldname.t -> - Struct.field_info option

    resolve_field_info tenv class_name field tries to find the first field declaration that matches field name (ignoring its enclosing declared type), starting from class class_name.

    val resolve_fieldname : t -> Typ.Name.t -> string -> Fieldname.t option

    Similar to resolve_field_info, but returns the resolved field name.

    val find_cpp_destructor : t -> Typ.Name.t -> Procname.t option
    val find_cpp_constructor : t -> Typ.Name.t -> Procname.t list
    val is_trivially_copyable : t -> Typ.t -> bool
    val get_hack_direct_used_traits : t -> Typ.Name.t -> HackClassName.t list
    val normalize : per_file -> per_file

    Produce an equivalent type environment that has maximal sharing between its structures.

    \ No newline at end of file + Struct.field_info option

    resolve_field_info tenv class_name field tries to find the first field declaration that matches field name (ignoring its enclosing declared type), starting from class class_name.

    val resolve_fieldname : t -> Typ.Name.t -> string -> Fieldname.t option

    Similar to resolve_field_info, but returns the resolved field name.

    val find_cpp_destructor : t -> Typ.Name.t -> Procname.t option
    val find_cpp_constructor : t -> Typ.Name.t -> Procname.t list
    val is_trivially_copyable : t -> Typ.t -> bool
    val get_hack_direct_used_traits : t -> Typ.Name.t -> HackClassName.t list
    val normalize : per_file -> per_file

    Produce an equivalent type environment that has maximal sharing between its structures.

    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/C/index.html b/website/static/odoc/next/infer/IR/Typ/Name/C/index.html index bf68c01454c..2c6c3008139 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/C/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/C/index.html @@ -1,2 +1,2 @@ -C (infer.IR.Typ.Name.C)

    Module Name.C

    val from_string : string -> t
    val from_qual_name : QualifiedCppName.t -> t
    val union_from_qual_name : QualifiedCppName.t -> t
    \ No newline at end of file +C (infer.IR.Typ.Name.C)

    Module Name.C

    val from_string : string -> t
    val from_qual_name : QualifiedCppName.t -> t
    val union_from_qual_name : QualifiedCppName.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/CSharp/index.html b/website/static/odoc/next/infer/IR/Typ/Name/CSharp/index.html index ee91c30e6ec..8f6309ee3c2 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/CSharp/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/CSharp/index.html @@ -1,2 +1,2 @@ -CSharp (infer.IR.Typ.Name.CSharp)

    Module Name.CSharp

    val from_string : string -> t
    val is_class : t -> bool
    \ No newline at end of file +CSharp (infer.IR.Typ.Name.CSharp)

    Module Name.CSharp

    val from_string : string -> t
    val is_class : t -> bool
    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Cpp/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Cpp/index.html index 7d56e175b3e..a2077554a4c 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Cpp/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Cpp/index.html @@ -1,6 +1,6 @@ -Cpp (infer.IR.Typ.Name.Cpp)

    Module Name.Cpp

    val from_qual_name : +Cpp (infer.IR.Typ.Name.Cpp)

    Module Name.Cpp

    val from_qual_name : template_spec_info -> - is_union:bool -> + is_union:bool -> QualifiedCppName.t -> - t

    Create a typename from a C++ classname

    val is_class : t -> bool

    is_class name holds if name names a C++ class

    \ No newline at end of file + t

    Create a typename from a C++ classname

    val is_class : t -> bool

    is_class name holds if name names a C++ class

    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Hack/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Hack/index.html index 1c26d53c41e..358ea70acc8 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Hack/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Hack/index.html @@ -1,2 +1,2 @@ -Hack (infer.IR.Typ.Name.Hack)

    Module Name.Hack

    val static_companion : t -> t
    val static_companion_origin : t -> t
    val is_static_companion : t -> bool
    val is_generated_curry : t -> bool
    val extract_curry_info : t -> (HackClassName.t * string) option
    \ No newline at end of file +Hack (infer.IR.Typ.Name.Hack)

    Module Name.Hack

    val static_companion : t -> t
    val static_companion_origin : t -> t
    val is_static_companion : t -> bool
    val is_generated_curry : t -> bool
    val extract_curry_info : t -> (HackClassName.t * string) option
    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Java/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Java/index.html index 3dd49c6eff9..777eca148d5 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Java/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Java/index.html @@ -1,2 +1,2 @@ -Java (infer.IR.Typ.Name.Java)

    Module Name.Java

    val from_string : string -> t

    Create a typename from a Java classname in the form "package.class"

    val is_class : t -> bool

    is_class name holds if name names a Java class

    val get_java_class_name_exn : t -> JavaClassName.t

    Ensure name is a java class name and return underlying JavaClassName

    val is_external : t -> bool

    return true if the typename is in the .inferconfig list of external classes

    val is_anonymous_inner_class_name_opt : t -> bool option

    return None if it is not a Java class

    \ No newline at end of file +Java (infer.IR.Typ.Name.Java)

    Module Name.Java

    val from_string : string -> t

    Create a typename from a Java classname in the form "package.class"

    val is_class : t -> bool

    is_class name holds if name names a Java class

    val get_java_class_name_exn : t -> JavaClassName.t

    Ensure name is a java class name and return underlying JavaClassName

    val is_external : t -> bool

    return true if the typename is in the .inferconfig list of external classes

    val is_anonymous_inner_class_name_opt : t -> bool option

    return None if it is not a Java class

    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Map/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Map/index.html index 91bdc5b1d99..454dfe72b73 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Map/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Typ.Name.Map)

    Module Name.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Typ.Name.Map)

    Module Name.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Objc/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Objc/index.html index e38d5eda032..6b7d1e6881b 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Objc/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Objc/index.html @@ -1,2 +1,2 @@ -Objc (infer.IR.Typ.Name.Objc)

    Module Name.Objc

    val from_string : string -> t

    Create a typename from a Objc classname

    val from_qual_name : QualifiedCppName.t -> t
    val protocol_from_qual_name : QualifiedCppName.t -> t
    val remodel_class : t option
    \ No newline at end of file +Objc (infer.IR.Typ.Name.Objc)

    Module Name.Objc

    val from_string : string -> t

    Create a typename from a Objc classname

    val from_qual_name : QualifiedCppName.t -> t
    val protocol_from_qual_name : QualifiedCppName.t -> t
    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/Set/index.html b/website/static/odoc/next/infer/IR/Typ/Name/Set/index.html index 683a667d999..484fbbf800c 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/Set/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Typ.Name.Set)

    Module Name.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Typ.Name.Set)

    Module Name.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Typ/Name/index.html b/website/static/odoc/next/infer/IR/Typ/Name/index.html index 0340ac11206..6a8b1f15f8b 100644 --- a/website/static/odoc/next/infer/IR/Typ/Name/index.html +++ b/website/static/odoc/next/infer/IR/Typ/Name/index.html @@ -1,2 +1,2 @@ -Name (infer.IR.Typ.Name)

    Module Typ.Name

    type t = name

    Named types.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except template arguments.

    val equal : t -> t -> bool

    Equality for typenames

    val hash : t -> int
    val to_string : t -> string

    convert the typename to a string

    val pp : Stdlib.Format.formatter -> t -> unit
    val is_class : t -> bool

    is_class name holds if name names CPP/Objc/Java class

    val is_union : t -> bool

    is_union name holds if name names C/CPP union

    val is_same_type : t -> t -> bool

    is_class name1 name2 holds if name1 and name2 name same kind of type

    val name_without_templates : t -> string

    name of the c++ typename without qualifier

    val name : t -> string

    name of the typename without qualifier

    val qual_name : t -> QualifiedCppName.t

    qualified name of the type, may return nonsense for Java classes

    val unqualified_name : t -> QualifiedCppName.t
    val get_template_spec_info : t -> template_spec_info option
    val is_objc_protocol : t -> bool
    val is_objc_class : t -> bool
    val is_objc_block : t -> bool
    val is_hack_class : t -> bool
    val is_python_class : t -> bool
    module C : sig ... end
    module CSharp : sig ... end
    module Hack : sig ... end
    module Java : sig ... end
    module Cpp : sig ... end
    module Objc : sig ... end
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t
    \ No newline at end of file +Name (infer.IR.Typ.Name)

    Module Typ.Name

    type t = name

    Named types.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_name : t -> t -> int

    Similar to compare, but compares only names, except template arguments.

    val equal : t -> t -> bool

    Equality for typenames

    val hash : t -> int
    val to_string : t -> string

    convert the typename to a string

    val pp : Stdlib.Format.formatter -> t -> unit
    val is_class : t -> bool

    is_class name holds if name names CPP/Objc/Java class

    val is_union : t -> bool

    is_union name holds if name names C/CPP union

    val is_same_type : t -> t -> bool

    is_class name1 name2 holds if name1 and name2 name same kind of type

    val name_without_templates : t -> string

    name of the c++ typename without qualifier

    val name : t -> string

    name of the typename without qualifier

    val qual_name : t -> QualifiedCppName.t

    qualified name of the type, may return nonsense for Java classes

    val unqualified_name : t -> QualifiedCppName.t
    val get_template_spec_info : t -> template_spec_info option
    val is_objc_protocol : t -> bool
    val is_objc_class : t -> bool
    val is_objc_block : t -> bool
    val is_hack_class : t -> bool
    val is_python_class : t -> bool
    module C : sig ... end
    module CSharp : sig ... end
    module Hack : sig ... end
    module Java : sig ... end
    module Cpp : sig ... end
    module Objc : sig ... end
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Hash : IStdlib.IStd.Caml.Hashtbl.S with type key = t
    diff --git a/website/static/odoc/next/infer/IR/Typ/index.html b/website/static/odoc/next/infer/IR/Typ/index.html index b596c51e330..0c7c2895821 100644 --- a/website/static/odoc/next/infer/IR/Typ/index.html +++ b/website/static/odoc/next/infer/IR/Typ/index.html @@ -1,13 +1,13 @@ -Typ (infer.IR.Typ)

    Module IR.Typ

    The Smallfoot Intermediate Language: Types

    module F = Stdlib.Format
    type ikind =
    1. | IChar
      (*

      char

      *)
    2. | ISChar
      (*

      signed char

      *)
    3. | IUChar
      (*

      unsigned char

      *)
    4. | IBool
      (*

      bool

      *)
    5. | IInt
      (*

      int

      *)
    6. | IUInt
      (*

      unsigned int

      *)
    7. | IShort
      (*

      short

      *)
    8. | IUShort
      (*

      unsigned short

      *)
    9. | ILong
      (*

      long

      *)
    10. | IULong
      (*

      unsigned long

      *)
    11. | ILongLong
      (*

      long long (or _int64 on Microsoft Visual C)

      *)
    12. | IULongLong
      (*

      unsigned long long (or unsigned _int64 on Microsoft Visual C)

      *)
    13. | I128
      (*

      __int128_t

      *)
    14. | IU128
      (*

      __uint128_t

      *)

    Kinds of integers

    val compare_ikind : ikind -> ikind -> int
    val equal_ikind : ikind -> ikind -> bool
    val hash_fold_ikind : +Typ (infer.IR.Typ)

    Module IR.Typ

    The Smallfoot Intermediate Language: Types

    module F = Stdlib.Format
    type ikind =
    1. | IChar
      (*

      char

      *)
    2. | ISChar
      (*

      signed char

      *)
    3. | IUChar
      (*

      unsigned char

      *)
    4. | IBool
      (*

      bool

      *)
    5. | IInt
      (*

      int

      *)
    6. | IUInt
      (*

      unsigned int

      *)
    7. | IShort
      (*

      short

      *)
    8. | IUShort
      (*

      unsigned short

      *)
    9. | ILong
      (*

      long

      *)
    10. | IULong
      (*

      unsigned long

      *)
    11. | ILongLong
      (*

      long long (or _int64 on Microsoft Visual C)

      *)
    12. | IULongLong
      (*

      unsigned long long (or unsigned _int64 on Microsoft Visual C)

      *)
    13. | I128
      (*

      __int128_t

      *)
    14. | IU128
      (*

      __uint128_t

      *)

    Kinds of integers

    val compare_ikind : ikind -> ikind -> int
    val equal_ikind : ikind -> ikind -> bool
    val hash_fold_ikind : Ppx_hash_lib.Std.Hash.state -> ikind -> Ppx_hash_lib.Std.Hash.state
    val hash_ikind : ikind -> Ppx_hash_lib.Std.Hash.hash_value
    val hash_normalize_ikind : ikind -> ikind
    val hash_normalize_ikind_opt : ikind option -> ikind option
    val hash_normalize_ikind_list : ikind list -> ikind list
    val ikind_is_char : ikind -> bool

    Check whether the integer kind is a char

    val ikind_is_unsigned : ikind -> bool

    Check whether the integer kind is unsigned

    type fkind =
    1. | FFloat
      (*

      float

      *)
    2. | FDouble
      (*

      double

      *)
    3. | FLongDouble
      (*

      long double

      *)

    Kinds of floating-point numbers

    val compare_fkind : fkind -> fkind -> int
    type ptr_kind =
    1. | Pk_pointer
      (*

      C/C++, Java, Objc standard/__strong pointer

      *)
    2. | Pk_lvalue_reference
      (*

      C++ lvalue reference

      *)
    3. | Pk_rvalue_reference
      (*

      C++ rvalue reference

      *)
    4. | Pk_objc_weak
      (*

      Obj-C __weak pointer

      *)
    5. | Pk_objc_unsafe_unretained
      (*

      Obj-C __unsafe_unretained pointer

      *)
    6. | Pk_objc_autoreleasing
      (*

      Obj-C __autoreleasing pointer

      *)

    kind of pointer

    val compare_ptr_kind : ptr_kind -> ptr_kind -> int
    val equal_ptr_kind : ptr_kind -> ptr_kind -> bool
    type type_quals
    val compare_type_quals : type_quals -> type_quals -> int
    val equal_type_quals : type_quals -> type_quals -> bool
    val mk_type_quals : - ?default:type_quals -> - ?is_const:bool -> - ?is_reference:bool -> - ?is_restrict:bool -> - ?is_volatile:bool -> + ?default:type_quals -> + ?is_const:bool -> + ?is_reference:bool -> + ?is_restrict:bool -> + ?is_volatile:bool -> unit -> type_quals
    val is_const : type_quals -> bool
    val is_restrict : type_quals -> bool
    val is_volatile : type_quals -> bool
    type t = {
    1. desc : desc;
    2. quals : type_quals;
    }

    types for sil (structured) expressions

    and desc =
    1. | Tint of ikind
      (*

      integer type

      *)
    2. | Tfloat of fkind
      (*

      float type

      *)
    3. | Tvoid
      (*

      void type

      *)
    4. | Tfun
      (*

      function type

      *)
    5. | Tptr of t * ptr_kind
      (*

      pointer type

      *)
    6. | Tstruct of name
      (*

      structured value type name

      *)
    7. | TVar of string
      (*

      type variable (ie. C++ template variables)

      *)
    8. | Tarray of {
      1. elt : t;
      2. length : IntLit.t option;
      3. stride : IntLit.t option;
      }
      (*

      array type with statically fixed length and stride

      *)
    and objc_block_sig = {
    1. class_name : name option;
    2. name : string;
    3. mangled : string;
    }
    and c_function_sig = {
    1. c_name : QualifiedCppName.t;
    2. c_mangled : string option;
    3. c_template_args : template_spec_info;
    }
    and name =
    1. | CStruct of QualifiedCppName.t
    2. | CUnion of QualifiedCppName.t
    3. | CppClass of {
      1. name : QualifiedCppName.t;
      2. template_spec_info : template_spec_info;
      3. is_union : bool;
      }
    4. | CSharpClass of CSharpClassName.t
    5. | ErlangType of ErlangTypeName.t
    6. | HackClass of HackClassName.t
    7. | JavaClass of JavaClassName.t
    8. | ObjcClass of QualifiedCppName.t
    9. | ObjcProtocol of QualifiedCppName.t
    10. | PythonClass of PythonClassName.t
    11. | ObjcBlock of objc_block_sig
    12. | CFunction of c_function_sig
    and template_arg =
    1. | TType of t
    2. | TInt of IStdlib.IStd.Int64.t
    3. | TNull
    4. | TNullPtr
    5. | TOpaque
    and template_spec_info =
    1. | NoTemplate
    2. | Template of {
      1. mangled : string option;
        (*

        WARNING: because of type substitutions performed by sub_type and sub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.

        *)
      2. args : template_arg list;
      }
    val compare : t -> t -> int
    val compare_desc : desc -> desc -> int
    val compare_objc_block_sig : objc_block_sig -> objc_block_sig -> int
    val compare_c_function_sig : c_function_sig -> c_function_sig -> int
    val compare_name : name -> name -> int
    val compare_template_arg : template_arg -> template_arg -> int
    val compare_template_spec_info : template_spec_info -> @@ -61,10 +61,10 @@ IStdlib.Pp.env -> F.formatter -> template_spec_info -> - unit
    val is_template_spec_info_empty : template_spec_info -> bool
    val mk : ?default:t -> ?quals:type_quals -> desc -> t

    Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

    val mk_array : - ?default:t -> - ?quals:type_quals -> - ?length:IntLit.t -> - ?stride:IntLit.t -> + unit
    val is_template_spec_info_empty : template_spec_info -> bool
    val mk : ?default:t -> ?quals:type_quals -> desc -> t

    Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

    val mk_array : + ?default:t -> + ?quals:type_quals -> + ?length:IntLit.t -> + ?stride:IntLit.t -> t -> - t

    Create an array type from a given element type. If length or stride value is given, use them as static length and size.

    val mk_struct : name -> t
    val mk_ptr : ?ptr_kind:ptr_kind -> t -> t

    make a pointer to t, default kind is Pk_pointer

    val set_ptr_to_const : t -> t
    val set_to_const : t -> t
    val get_ikind_opt : t -> ikind option

    Get ikind if the type is integer.

    val size_t : ikind

    ikind of size_t

    val is_weak_pointer : t -> bool
    val is_strong_pointer : t -> bool
    module Name : sig ... end
    val equal : t -> t -> bool

    Equality for types.

    val equal_desc : desc -> desc -> bool
    val equal_name : name -> name -> bool
    val equal_ignore_quals : t -> t -> bool

    Equality for types, but ignoring quals in it.

    val overloading_resolution : (t -> t -> bool) list

    overloading_resolution is a list of predicates that compare whether a type T1 binds a type T2.

    val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type with all the details.

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type.

    val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

    Pretty print a type desc.

    val pp_java : verbose:bool -> F.formatter -> t -> unit

    Pretty print a Java type. Raises if type isn't produced by the Java frontend

    val pp_cs : verbose:bool -> F.formatter -> t -> unit

    Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

    val to_string : t -> string
    val desc_to_string : desc -> string
    val d_full : t -> unit

    Dump a type with all the details.

    val d_list : t list -> unit

    Dump a list of types.

    val name : t -> Name.t option

    The name of a type

    val strip_ptr : t -> t

    turn a *T into a T. fails if t is not a pointer type

    val is_ptr_to_ignore_quals : t -> ptr:t -> bool

    check if ptr is a pointer type to t, ignoring quals

    val is_ptr_to_const : t -> bool

    check if typ is a pointer type to const

    val array_elem : t option -> t -> t

    If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

    val is_objc_class : t -> bool
    val is_cpp_class : t -> bool
    val is_pointer_to_cpp_class : t -> bool
    val is_pointer_to_smart_pointer : t -> bool
    val is_pointer_to_unique_pointer : t -> bool
    val shared_pointer_matcher : QualifiedCppName.Match.quals_matcher
    val is_shared_pointer : t -> bool
    val is_folly_coro : t -> bool
    val is_pointer_to_void : t -> bool
    val is_void : t -> bool
    val is_pointer_to_int : t -> bool
    val is_pointer_to_const : t -> bool
    val is_pointer_to_function : t -> bool
    val is_pointer : t -> bool
    val is_reference : t -> bool
    val is_rvalue_reference : t -> bool
    val is_const_reference_on_source : t -> bool
    val is_struct : t -> bool
    val is_int : t -> bool
    val is_unsigned_int : t -> bool
    val is_char : t -> bool
    val is_csharp_type : t -> bool

    is t a type produced by the Java frontend?

    val is_java_type : t -> bool

    is t a type produced by the Java frontend?

    val unsome : string -> t option -> t
    \ No newline at end of file + t

    Create an array type from a given element type. If length or stride value is given, use them as static length and size.

    val mk_struct : name -> t
    val mk_ptr : ?ptr_kind:ptr_kind -> t -> t

    make a pointer to t, default kind is Pk_pointer

    val set_ptr_to_const : t -> t
    val set_to_const : t -> t
    val get_ikind_opt : t -> ikind option

    Get ikind if the type is integer.

    val size_t : ikind

    ikind of size_t

    val is_weak_pointer : t -> bool
    val is_strong_pointer : t -> bool
    module Name : sig ... end
    val equal : t -> t -> bool

    Equality for types.

    val equal_desc : desc -> desc -> bool
    val equal_name : name -> name -> bool
    val equal_ignore_quals : t -> t -> bool

    Equality for types, but ignoring quals in it.

    val overloading_resolution : (t -> t -> bool) list

    overloading_resolution is a list of predicates that compare whether a type T1 binds a type T2.

    val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type with all the details.

    val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

    Pretty print a type.

    val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

    Pretty print a type desc.

    val pp_java : verbose:bool -> F.formatter -> t -> unit

    Pretty print a Java type. Raises if type isn't produced by the Java frontend

    val pp_cs : verbose:bool -> F.formatter -> t -> unit

    Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

    val to_string : t -> string
    val desc_to_string : desc -> string
    val d_full : t -> unit

    Dump a type with all the details.

    val d_list : t list -> unit

    Dump a list of types.

    val name : t -> Name.t option

    The name of a type

    val strip_ptr : t -> t

    turn a *T into a T. fails if t is not a pointer type

    val is_ptr_to_ignore_quals : t -> ptr:t -> bool

    check if ptr is a pointer type to t, ignoring quals

    val is_ptr_to_const : t -> bool

    check if typ is a pointer type to const

    val array_elem : t option -> t -> t

    If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

    val is_objc_class : t -> bool
    val is_cpp_class : t -> bool
    val is_pointer_to_cpp_class : t -> bool
    val is_pointer_to_smart_pointer : t -> bool
    val is_pointer_to_unique_pointer : t -> bool
    val shared_pointer_matcher : QualifiedCppName.Match.quals_matcher
    val is_shared_pointer : t -> bool
    val is_folly_coro : t -> bool
    val is_pointer_to_void : t -> bool
    val is_void : t -> bool
    val is_pointer_to_int : t -> bool
    val is_pointer_to_const : t -> bool
    val is_pointer_to_function : t -> bool
    val is_pointer : t -> bool
    val is_reference : t -> bool
    val is_rvalue_reference : t -> bool
    val is_const_reference_on_source : t -> bool
    val is_struct : t -> bool
    val is_int : t -> bool
    val is_unsigned_int : t -> bool
    val is_char : t -> bool
    val is_csharp_type : t -> bool

    is t a type produced by the Java frontend?

    val is_java_type : t -> bool

    is t a type produced by the Java frontend?

    val unsome : string -> t option -> t
    diff --git a/website/static/odoc/next/infer/IR/Unop/index.html b/website/static/odoc/next/infer/IR/Unop/index.html index 44ce773f01e..00eb59c7a5e 100644 --- a/website/static/odoc/next/infer/IR/Unop/index.html +++ b/website/static/odoc/next/infer/IR/Unop/index.html @@ -1,2 +1,2 @@ -Unop (infer.IR.Unop)

    Module IR.Unop

    The Smallfoot Intermediate Language: Unary Operators

    type t =
    1. | Neg
      (*

      Unary minus

      *)
    2. | BNot
      (*

      Bitwise complement (~)

      *)
    3. | LNot
      (*

      Logical Not (!)

      *)

    Unary operations

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val to_string : t -> string

    String representation of a unary operator.

    \ No newline at end of file +Unop (infer.IR.Unop)

    Module IR.Unop

    The Smallfoot Intermediate Language: Unary Operators

    type t =
    1. | Neg
      (*

      Unary minus

      *)
    2. | BNot
      (*

      Bitwise complement (~)

      *)
    3. | LNot
      (*

      Logical Not (!)

      *)

    Unary operations

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val to_string : t -> string

    String representation of a unary operator.

    diff --git a/website/static/odoc/next/infer/IR/Var/Map/index.html b/website/static/odoc/next/infer/IR/Var/Map/index.html index 02d4c7c7675..c7b63ec84d7 100644 --- a/website/static/odoc/next/infer/IR/Var/Map/index.html +++ b/website/static/odoc/next/infer/IR/Var/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.IR.Var.Map)

    Module Var.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.IR.Var.Map)

    Module Var.Map

    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/Var/Set/index.html b/website/static/odoc/next/infer/IR/Var/Set/index.html index 2b865558065..2c1f93775f2 100644 --- a/website/static/odoc/next/infer/IR/Var/Set/index.html +++ b/website/static/odoc/next/infer/IR/Var/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IR.Var.Set)

    Module Var.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.IR.Var.Set)

    Module Var.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IR/Var/index.html b/website/static/odoc/next/infer/IR/Var/index.html index 243b35a060f..29095c15633 100644 --- a/website/static/odoc/next/infer/IR/Var/index.html +++ b/website/static/odoc/next/infer/IR/Var/index.html @@ -1,2 +1,2 @@ -Var (infer.IR.Var)

    Module IR.Var

    Single abstraction for all the kinds of variables in SIL

    type t = private
    1. | LogicalVar of Ident.t
    2. | ProgramVar of Pvar.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_modulo_this : t -> t -> int
    val of_id : Ident.t -> t
    val of_pvar : Pvar.t -> t
    val of_formal_index : int -> t

    Create a variable representing the ith formal of the current procedure

    val get_all_vars_in_exp : Exp.t -> t IStdlib.IStd.Sequence.t

    Get all free and program vars

    val to_exp : t -> Exp.t
    val get_ident : t -> Ident.t option
    val get_pvar : t -> Pvar.t option
    val is_pvar : t -> bool
    val is_global : t -> bool
    val is_return : t -> bool
    val is_footprint : t -> bool
    val is_none : t -> bool
    val is_this : t -> bool
    val is_artificial : t -> bool
    val appears_in_source_code : t -> bool

    return true if this variable appears in source code (i.e., is not a LogicalVar or a frontend-generated ProgramVar)

    val is_cpp_temporary : t -> bool
    val is_cpp_unnamed_param : t -> bool
    val get_footprint_index : t -> int option
    val pp : Stdlib.Format.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    \ No newline at end of file +Var (infer.IR.Var)

    Module IR.Var

    Single abstraction for all the kinds of variables in SIL

    type t = private
    1. | LogicalVar of Ident.t
    2. | ProgramVar of Pvar.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    include Sexplib0.Sexpable.S with type t := t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val hash_normalize : t -> t
    val hash_normalize_opt : t option -> t option
    val hash_normalize_list : t list -> t list
    val compare_modulo_this : t -> t -> int
    val of_id : Ident.t -> t
    val of_pvar : Pvar.t -> t
    val of_formal_index : int -> t

    Create a variable representing the ith formal of the current procedure

    val get_all_vars_in_exp : Exp.t -> t IStdlib.IStd.Sequence.t

    Get all free and program vars

    val to_exp : t -> Exp.t
    val get_ident : t -> Ident.t option
    val get_pvar : t -> Pvar.t option
    val is_pvar : t -> bool
    val is_global : t -> bool
    val is_return : t -> bool
    val is_footprint : t -> bool
    val is_none : t -> bool
    val is_this : t -> bool
    val is_artificial : t -> bool
    val appears_in_source_code : t -> bool

    return true if this variable appears in source code (i.e., is not a LogicalVar or a frontend-generated ProgramVar)

    val is_cpp_temporary : t -> bool
    val is_cpp_unnamed_param : t -> bool
    val get_footprint_index : t -> int option
    val pp : Stdlib.Format.formatter -> t -> unit
    module Map : IStdlib.PrettyPrintable.PPMap with type key = t
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/IdMap/index.html index aa94f9c2db9..eb935574f44 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/index.html index 5d4839656ed..0a4c4f30384 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    \ No newline at end of file +Node (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/index.html index c65247baa04..b1ed9c5f1bd 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/argument-1-CFG/index.html @@ -1,2 +1,2 @@ -CFG (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG)

    Parameter Bourdoncle_SCC.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +CFG (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC.CFG)

    Parameter Bourdoncle_SCC.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/index.html index f682dacf074..befb3155071 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Bourdoncle_SCC/index.html @@ -1,2 +1,2 @@ -Bourdoncle_SCC (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC)

    Module WeakTopologicalOrder.Bourdoncle_SCC

    Implementation of Bourdoncle's "Hierarchical decomposition of a directed graph into strongly connected components and subcomponents". See Bou Figure 4, page 10.

    Parameters

    module CFG : PreProcCfg

    Signature

    module CFG = CFG
    \ No newline at end of file +Bourdoncle_SCC (infer.IR.WeakTopologicalOrder.Bourdoncle_SCC)

    Module WeakTopologicalOrder.Bourdoncle_SCC

    Implementation of Bourdoncle's "Hierarchical decomposition of a directed graph into strongly connected components and subcomponents". See Bou Figure 4, page 10.

    Parameters

    module CFG : PreProcCfg

    Signature

    module CFG = CFG
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Partition/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Partition/index.html index a52a7f4028b..f1d4eab83e6 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Partition/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/Partition/index.html @@ -1,9 +1,9 @@ -Partition (infer.IR.WeakTopologicalOrder.Partition)

    Module WeakTopologicalOrder.Partition

    type 'node t = private
    1. | Empty
    2. | Node of {
      1. node : 'node;
      2. next : 'node t;
      }
    3. | Component of {
      1. head : 'node;
      2. rest : 'node t;
      3. next : 'node t;
      }
    val fold_nodes : ('node t, 'node, _) IStdlib.IStd.Container.fold
    val iter_nodes : 'a t -> f:('a -> unit) -> unit
    val fold_heads : ('node t, 'node, _) IStdlib.IStd.Container.fold
    val expand : - fold_right:('a, 'b, 'b t) IStdlib.IStd.Container.fold -> +Partition (infer.IR.WeakTopologicalOrder.Partition)

    Module WeakTopologicalOrder.Partition

    type 'node t = private
    1. | Empty
    2. | Node of {
      1. node : 'node;
      2. next : 'node t;
      }
    3. | Component of {
      1. head : 'node;
      2. rest : 'node t;
      3. next : 'node t;
      }
    val fold_nodes : ('node t, 'node, _) IStdlib.IStd.Container.fold
    val iter_nodes : 'a t -> f:('a -> unit) -> unit
    val fold_heads : ('node t, 'node, _) IStdlib.IStd.Container.fold
    val expand : + fold_right:('a, 'b, 'b t) IStdlib.IStd.Container.fold -> 'a t -> 'b t

    Maps a partition nodes from 'a to 'b using the expansion fold_right. fold_right should not return its ~init directly but must always provide a non-empty sequence.

    val pp : - pp_node:(F.formatter -> 'node -> unit) -> + pp_node:(F.formatter -> 'node -> unit) -> F.formatter -> 'node t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/index.html index 30830d95abb..bc1ae2ac49c 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/index.html @@ -1,2 +1,2 @@ -WeakTopologicalOrder (infer.IR.WeakTopologicalOrder)

    Module IR.WeakTopologicalOrder

    module F = Stdlib.Format

    A hierarchical ordering of a set is a well-parenthesized permutation of its elements without two consecutive "(". I defines a total order <= over its elements. The elements between two matching parentheses are called a Component. The first element of a Component is called the head. Let denote by H(v) the set of head of the nested components containing v.

    module Partition : sig ... end
    module type PreProcCfg = sig ... end

    A weak topological ordering (WTO) of a directed graph is a hierarchical ordering of its vertices such that for every edge u -> v,

    u < v and v is not in H(u) (forward edge)

    or

    v <= u and v is in H(u) (feedback edge)

    where H(u) is the set of heads of the nested components containing u.

    A WTO of a directed graph is such that the head v of every feedback edge u -> v is the head of a component containing its tail u.

    module type S = sig ... end
    module type Make = functor (CFG : PreProcCfg) -> S with module CFG = CFG

    Implementation of Bourdoncle's "Hierarchical decomposition of a directed graph into strongly connected components and subcomponents". See Bou Figure 4, page 10.

    \ No newline at end of file +WeakTopologicalOrder (infer.IR.WeakTopologicalOrder)

    Module IR.WeakTopologicalOrder

    module F = Stdlib.Format

    A hierarchical ordering of a set is a well-parenthesized permutation of its elements without two consecutive "(". I defines a total order <= over its elements. The elements between two matching parentheses are called a Component. The first element of a Component is called the head. Let denote by H(v) the set of head of the nested components containing v.

    module Partition : sig ... end
    module type PreProcCfg = sig ... end

    A weak topological ordering (WTO) of a directed graph is a hierarchical ordering of its vertices such that for every edge u -> v,

    u < v and v is not in H(u) (forward edge)

    or

    v <= u and v is in H(u) (feedback edge)

    where H(u) is the set of heads of the nested components containing u.

    A WTO of a directed graph is such that the head v of every feedback edge u -> v is the head of a component containing its tail u.

    module type S = sig ... end
    module type Make = functor (CFG : PreProcCfg) -> S with module CFG = CFG

    Implementation of Bourdoncle's "Hierarchical decomposition of a directed graph into strongly connected components and subcomponents". See Bou Figure 4, page 10.

    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/IdMap/index.html index 8ec866dc2b8..3fe68187bc7 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.IR.WeakTopologicalOrder.Make.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.IR.WeakTopologicalOrder.Make.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/index.html index 0a9bd70a2cf..ea808c15f1f 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.IR.WeakTopologicalOrder.Make.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    \ No newline at end of file +Node (infer.IR.WeakTopologicalOrder.Make.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/index.html index 31d662c1912..6e06b48cf8a 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/argument-1-CFG/index.html @@ -1,2 +1,2 @@ -CFG (infer.IR.WeakTopologicalOrder.Make.CFG)

    Parameter Make.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +CFG (infer.IR.WeakTopologicalOrder.Make.CFG)

    Parameter Make.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/index.html index 8dcb92b6fda..9bb97df0c76 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IR.WeakTopologicalOrder.Make)

    Module type WeakTopologicalOrder.Make

    Parameters

    module CFG : PreProcCfg

    Signature

    module CFG = CFG
    \ No newline at end of file +Make (infer.IR.WeakTopologicalOrder.Make)

    Module type WeakTopologicalOrder.Make

    Parameters

    module CFG : PreProcCfg

    Signature

    module CFG = CFG
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/IdMap/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/IdMap/index.html index 3085ffe3f46..2bcb5b2f796 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.IR.WeakTopologicalOrder.PreProcCfg.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.IR.WeakTopologicalOrder.PreProcCfg.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/index.html index 4c054f5157c..fb704489f2f 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.IR.WeakTopologicalOrder.PreProcCfg.Node)

    Module PreProcCfg.Node

    type t
    type id
    val id : t -> id
    \ No newline at end of file +Node (infer.IR.WeakTopologicalOrder.PreProcCfg.Node)

    Module PreProcCfg.Node

    type t
    type id
    val id : t -> id
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/index.html index 6cd287c7f8d..50999cbe405 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-PreProcCfg/index.html @@ -1,2 +1,2 @@ -PreProcCfg (infer.IR.WeakTopologicalOrder.PreProcCfg)

    Module type WeakTopologicalOrder.PreProcCfg

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +PreProcCfg (infer.IR.WeakTopologicalOrder.PreProcCfg)

    Module type WeakTopologicalOrder.PreProcCfg

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/IdMap/index.html index 6744939028c..8b5af122dfd 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.IR.WeakTopologicalOrder.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.IR.WeakTopologicalOrder.S.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/index.html index fcc5eadbcab..fbbd0395081 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.IR.WeakTopologicalOrder.S.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    \ No newline at end of file +Node (infer.IR.WeakTopologicalOrder.S.CFG.Node)

    Module CFG.Node

    type t
    type id
    val id : t -> id
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/index.html index 68f133cc36f..89bb3a55741 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/CFG/index.html @@ -1,2 +1,2 @@ -CFG (infer.IR.WeakTopologicalOrder.S.CFG)

    Module S.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +CFG (infer.IR.WeakTopologicalOrder.S.CFG)

    Module S.CFG

    module Node : sig ... end
    type t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/index.html b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/index.html index d6ef4103767..2e1be24662a 100644 --- a/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/index.html +++ b/website/static/odoc/next/infer/IR/WeakTopologicalOrder/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IR.WeakTopologicalOrder.S)

    Module type WeakTopologicalOrder.S

    module CFG : PreProcCfg
    \ No newline at end of file +S (infer.IR.WeakTopologicalOrder.S)

    Module type WeakTopologicalOrder.S

    module CFG : PreProcCfg
    diff --git a/website/static/odoc/next/infer/IR/index.html b/website/static/odoc/next/infer/IR/index.html index eae38d3ce33..66b79b03fdb 100644 --- a/website/static/odoc/next/infer/IR/index.html +++ b/website/static/odoc/next/infer/IR/index.html @@ -1,2 +1,2 @@ -IR (infer.IR)

    Module IR

    module AnalysisGlobalState : sig ... end
    module Annot : sig ... end

    The Smallfoot Intermediate Language: Annotations

    module Attributes : sig ... end

    Module to manage the table of attributes.

    module BUILTINS : sig ... end
    module BiabductionModels : sig ... end
    module Binop : sig ... end

    The Smallfoot Intermediate Language: Binary Operators

    module BuiltinDecl : sig ... end

    Procnames for the builtin functions supported

    module CSharpClassName : sig ... end
    module CallFlags : sig ... end

    The Smallfoot Intermediate Language: Call Flags

    module CapturedVar : sig ... end
    module Cfg : sig ... end

    Control Flow Graph for Interprocedural Analysis

    module ClangMethodKind : sig ... end
    module Const : sig ... end

    The Smallfoot Intermediate Language: Constants

    module DecompiledExp : sig ... end

    The Smallfoot Intermediate Language: Decompiled Expressions

    module Dependencies : sig ... end
    module DotCfg : sig ... end
    module ErlangTypeName : sig ... end
    module Exp : sig ... end

    The Smallfoot Intermediate Language: Expressions

    module Fieldname : sig ... end
    module Filtering : sig ... end
    module HackClassName : sig ... end
    module Ident : sig ... end

    Identifiers: program variables and logical variables

    module Inferconfig : sig ... end
    module Instrs : sig ... end

    Manipulate possibly-reversed lists of instructions efficiently

    module IntLit : sig ... end
    module IntegerWidths : sig ... end

    The Smallfoot Intermediate Language: Types

    module Io_infer : sig ... end

    Module to handle IO. Includes html and xml modules.

    module JConfig : sig ... end
    module JavaClassName : sig ... end
    module Mangled : sig ... end

    Module for Mangled Names

    module MissingDependencies : sig ... end

    Stateful store of procedure and sourcefile dependencies found to be missing from the capture database during analysis.

    module ObjCDispatchModels : sig ... end
    module PredSymb : sig ... end

    The Smallfoot Intermediate Language: Predicate Symbols

    module ProcAttributes : sig ... end
    module Procdesc : sig ... end
    module Procname : sig ... end
    module Pvar : sig ... end

    Program variables.

    module PythonClassName : sig ... end
    module QualifiedCppName : sig ... end
    module Sil : sig ... end

    The Smallfoot Intermediate Language

    module SourceFiles : sig ... end
    module Specialization : sig ... end
    module SpecializeProcdesc : sig ... end
    module StdTyp : sig ... end
    module Struct : sig ... end
    module Subtype : sig ... end

    The Smallfoot Intermediate Language: Subtypes

    module Tenv : sig ... end

    Module for Type Environments.

    module Typ : sig ... end

    The Smallfoot Intermediate Language: Types

    module Unop : sig ... end

    The Smallfoot Intermediate Language: Unary Operators

    module Var : sig ... end

    Single abstraction for all the kinds of variables in SIL

    module WeakTopologicalOrder : sig ... end
    \ No newline at end of file +IR (infer.IR)

    Module IR

    module AnalysisGlobalState : sig ... end
    module Annot : sig ... end

    The Smallfoot Intermediate Language: Annotations

    module Attributes : sig ... end

    Module to manage the table of attributes.

    module BUILTINS : sig ... end
    module BiabductionModels : sig ... end
    module Binop : sig ... end

    The Smallfoot Intermediate Language: Binary Operators

    module BuiltinDecl : sig ... end

    Procnames for the builtin functions supported

    module CSharpClassName : sig ... end
    module CallFlags : sig ... end

    The Smallfoot Intermediate Language: Call Flags

    module CapturedVar : sig ... end
    module Cfg : sig ... end

    Control Flow Graph for Interprocedural Analysis

    module ClangMethodKind : sig ... end
    module Const : sig ... end

    The Smallfoot Intermediate Language: Constants

    module DecompiledExp : sig ... end

    The Smallfoot Intermediate Language: Decompiled Expressions

    module Dependencies : sig ... end
    module DotCfg : sig ... end
    module ErlangTypeName : sig ... end
    module Exp : sig ... end

    The Smallfoot Intermediate Language: Expressions

    module Fieldname : sig ... end
    module Filtering : sig ... end
    module HackClassName : sig ... end
    module Ident : sig ... end

    Identifiers: program variables and logical variables

    module Inferconfig : sig ... end
    module Instrs : sig ... end

    Manipulate possibly-reversed lists of instructions efficiently

    module IntLit : sig ... end
    module IntegerWidths : sig ... end

    The Smallfoot Intermediate Language: Types

    module Io_infer : sig ... end

    Module to handle IO. Includes html and xml modules.

    module JConfig : sig ... end
    module JavaClassName : sig ... end
    module Mangled : sig ... end

    Module for Mangled Names

    module MissingDependencies : sig ... end

    Stateful store of procedure and sourcefile dependencies found to be missing from the capture database during analysis.

    module ObjCDispatchModels : sig ... end
    module PredSymb : sig ... end

    The Smallfoot Intermediate Language: Predicate Symbols

    module ProcAttributes : sig ... end
    module Procdesc : sig ... end
    module Procname : sig ... end
    module Pvar : sig ... end

    Program variables.

    module PythonClassName : sig ... end
    module QualifiedCppName : sig ... end
    module Sil : sig ... end

    The Smallfoot Intermediate Language

    module SourceFiles : sig ... end
    module Specialization : sig ... end
    module SpecializeProcdesc : sig ... end
    module StdTyp : sig ... end
    module Struct : sig ... end
    module Subtype : sig ... end

    The Smallfoot Intermediate Language: Subtypes

    module Tenv : sig ... end

    Module for Type Environments.

    module Typ : sig ... end

    The Smallfoot Intermediate Language: Types

    module Unop : sig ... end

    The Smallfoot Intermediate Language: Unary Operators

    module Var : sig ... end

    Single abstraction for all the kinds of variables in SIL

    module WeakTopologicalOrder : sig ... end
    diff --git a/website/static/odoc/next/infer/IStdlib.html b/website/static/odoc/next/infer/IStdlib.html index e91d11c08b2..7a4fb2b1ce5 100644 --- a/website/static/odoc/next/infer/IStdlib.html +++ b/website/static/odoc/next/infer/IStdlib.html @@ -1,2 +1,2 @@ -IStdlib (infer.IStdlib)

    Library IStdlib

    Additions to the standard library that are not specific to infer.

    The entry point of this library is the module IStdlib.

    \ No newline at end of file +IStdlib (infer.IStdlib)

    Library IStdlib

    Additions to the standard library that are not specific to infer.

    The entry point of this library is the module IStdlib.

    diff --git a/website/static/odoc/next/infer/IStdlib/ARList/index.html b/website/static/odoc/next/infer/IStdlib/ARList/index.html index e1d4dd9e6de..dde414bf634 100644 --- a/website/static/odoc/next/infer/IStdlib/ARList/index.html +++ b/website/static/odoc/next/infer/IStdlib/ARList/index.html @@ -1,2 +1,2 @@ -ARList (infer.IStdlib.ARList)

    Module IStdlib.ARList

    include sig ... end
    type +'a t
    val empty : 'a t
    val singleton : 'a -> 'a t
    val of_list : 'a list -> 'a t
    val cons : 'a -> 'a t -> 'a t
    val snoc : 'a t -> 'a -> 'a t
    val append : 'a t -> 'a t -> 'a t
    val rev : 'a t -> 'a t
    val is_empty : 'a t -> bool
    val is_singleton : 'a t -> 'a option
    val is_singleton_or_more : 'a t -> 'a IContainer.singleton_or_more
    val hd_tl_exn : 'a t -> 'a * 'a t
    val front_last_exn : 'a t -> 'a t * 'a
    val hd_exn : 'a t -> 'a
    val last_exn : 'a t -> 'a
    val hd : 'a t -> 'a option
    val last : 'a t -> 'a option
    val fold_left : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold
    val fold_right : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold
    val fold_unordered : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold

    Always better than fold_left when you do not care about the order.

    \ No newline at end of file +ARList (infer.IStdlib.ARList)

    Module IStdlib.ARList

    include sig ... end
    type +'a t
    val empty : 'a t
    val singleton : 'a -> 'a t
    val of_list : 'a list -> 'a t
    val cons : 'a -> 'a t -> 'a t
    val snoc : 'a t -> 'a -> 'a t
    val append : 'a t -> 'a t -> 'a t
    val rev : 'a t -> 'a t
    val is_empty : 'a t -> bool
    val is_singleton : 'a t -> 'a option
    val is_singleton_or_more : 'a t -> 'a IContainer.singleton_or_more
    val hd_tl_exn : 'a t -> 'a * 'a t
    val front_last_exn : 'a t -> 'a t * 'a
    val hd_exn : 'a t -> 'a
    val last_exn : 'a t -> 'a
    val hd : 'a t -> 'a option
    val last : 'a t -> 'a option
    val fold_left : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold
    val fold_right : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold
    val fold_unordered : ('a t, 'a, 'accum) IStdlib.IStd.Container.fold

    Always better than fold_left when you do not care about the order.

    diff --git a/website/static/odoc/next/infer/IStdlib/Escape/index.html b/website/static/odoc/next/infer/IStdlib/Escape/index.html index 1dd238dde13..19e6bb9bda4 100644 --- a/website/static/odoc/next/infer/IStdlib/Escape/index.html +++ b/website/static/odoc/next/infer/IStdlib/Escape/index.html @@ -1,2 +1,2 @@ -Escape (infer.IStdlib.Escape)

    Module IStdlib.Escape

    Escape a string, eg replace reserved characters with escape sequences

    val escape_dotty : string -> string

    escape a string to be used in a dotty file

    val escape_path : string -> string

    escape a path replacing the directory separator with an underscore

    val escape_xml : string -> string

    escape a string to be used in an xml file

    val escape_url : string -> string
    val escape_json : string -> string

    escape characters in the string so it becomes a valid JSON string

    val escape_double_quotes : string -> string

    replaces double-quote with backslash double-quote

    val escape_in_single_quotes : string -> string

    put the string inside single quotes and escape the single quotes within that string

    val escape_shell : string -> string

    escape the string so it can be passed to the shell without remorse

    val escape_filename : string -> string

    escape the characters that cannot be used in filenames

    \ No newline at end of file +Escape (infer.IStdlib.Escape)

    Module IStdlib.Escape

    Escape a string, eg replace reserved characters with escape sequences

    val escape_dotty : string -> string

    escape a string to be used in a dotty file

    val escape_path : string -> string

    escape a path replacing the directory separator with an underscore

    val escape_xml : string -> string

    escape a string to be used in an xml file

    val escape_url : string -> string
    val escape_json : string -> string

    escape characters in the string so it becomes a valid JSON string

    val escape_double_quotes : string -> string

    replaces double-quote with backslash double-quote

    val escape_in_single_quotes : string -> string

    put the string inside single quotes and escape the single quotes within that string

    val escape_shell : string -> string

    escape the string so it can be passed to the shell without remorse

    val escape_filename : string -> string

    escape the characters that cannot be used in filenames

    diff --git a/website/static/odoc/next/infer/IStdlib/GOption/index.html b/website/static/odoc/next/infer/IStdlib/GOption/index.html index 225718d01c9..08f62c50156 100644 --- a/website/static/odoc/next/infer/IStdlib/GOption/index.html +++ b/website/static/odoc/next/infer/IStdlib/GOption/index.html @@ -1,2 +1,2 @@ -GOption (infer.IStdlib.GOption)

    Module IStdlib.GOption

    type none
    type some
    type (_, _) t =
    1. | GNone : (none, _) t
    2. | GSome : 'a -> (some, 'a) t
    val value : (some, 'a) t -> 'a
    val value_map : (_, 'a) t -> default:'b -> f:('a -> 'b) -> 'b
    val value_map_f : (_, 'a) t -> default:(unit -> 'b) -> f:('a -> 'b) -> 'b

    Like value_map but the default value is evaluated lazily

    \ No newline at end of file +GOption (infer.IStdlib.GOption)

    Module IStdlib.GOption

    type none
    type some
    type (_, _) t =
    1. | GNone : (none, _) t
    2. | GSome : 'a -> (some, 'a) t
    val value : (some, 'a) t -> 'a
    val value_map : (_, 'a) t -> default:'b -> f:('a -> 'b) -> 'b
    val value_map_f : (_, 'a) t -> default:(unit -> 'b) -> f:('a -> 'b) -> 'b

    Like value_map but the default value is evaluated lazily

    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Int64/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Int64/index.html index a62d30df974..00997721788 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Int64/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Int64/index.html @@ -1,2 +1,2 @@ -Int64 (infer.IStdlib.HashNormalizer.Int64)

    Module HashNormalizer.Int64

    type t = int64

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    \ No newline at end of file +Int64 (infer.IStdlib.HashNormalizer.Int64)

    Module HashNormalizer.Int64

    type t = int64

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/argument-1-T/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/argument-1-T/index.html index 7d6b446ebb5..83541bbc711 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/argument-1-T/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/argument-1-T/index.html @@ -1,2 +1,2 @@ -T (infer.IStdlib.HashNormalizer.Make.T)

    Parameter Make.T

    include Core.Caml.Hashtbl.HashedType
    type t
    val equal : t -> t -> bool
    val hash : t -> int
    val normalize : t -> t
    \ No newline at end of file +T (infer.IStdlib.HashNormalizer.Make.T)

    Parameter Make.T

    include Core.Caml.Hashtbl.HashedType
    type t
    val equal : t -> t -> bool
    val hash : t -> int
    val normalize : t -> t
    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/index.html index 93fd0c0da6e..668934e121d 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib.HashNormalizer.Make)

    Module HashNormalizer.Make

    Parameters

    module T : NormalizedT

    Signature

    type t = T.t

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    \ No newline at end of file +Make (infer.IStdlib.HashNormalizer.Make)

    Module HashNormalizer.Make

    Parameters

    module T : NormalizedT

    Signature

    type t = T.t

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/String/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/String/index.html index 23c65d84c91..d902ec7dfad 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/String/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/String/index.html @@ -1,2 +1,2 @@ -String (infer.IStdlib.HashNormalizer.String)

    Module HashNormalizer.String

    normalizer for strings, lists are recursively normalized

    type t = string

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    \ No newline at end of file +String (infer.IStdlib.HashNormalizer.String)

    Module HashNormalizer.String

    normalizer for strings, lists are recursively normalized

    type t = string

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/index.html index 3f58741598e..820f778f806 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/index.html @@ -1,2 +1,2 @@ -HashNormalizer (infer.IStdlib.HashNormalizer)

    Module IStdlib.HashNormalizer

    module type NormalizedT = sig ... end

    a hashed type with a normalization function which respects equality

    module type S = sig ... end

    normalizer module which uses a hashtable to store normalized representatives

    module Make (T : NormalizedT) : S with type t = T.t
    module String : S with type t = string

    normalizer for strings, lists are recursively normalized

    module Int64 : S with type t = int64
    val reset_all_normalizers : unit -> unit

    reset hashtables in all normalizers made with Make

    val register_reset : (unit -> unit) -> unit

    register a function to run when reset_all_normalizers is run

    \ No newline at end of file +HashNormalizer (infer.IStdlib.HashNormalizer)

    Module IStdlib.HashNormalizer

    module type NormalizedT = sig ... end

    a hashed type with a normalization function which respects equality

    module type S = sig ... end

    normalizer module which uses a hashtable to store normalized representatives

    module Make (T : NormalizedT) : S with type t = T.t
    module String : S with type t = string

    normalizer for strings, lists are recursively normalized

    module Int64 : S with type t = int64
    val reset_all_normalizers : unit -> unit

    reset hashtables in all normalizers made with Make

    val register_reset : (unit -> unit) -> unit

    register a function to run when reset_all_normalizers is run

    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-NormalizedT/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-NormalizedT/index.html index a87ffdf9ad3..aab90c23942 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-NormalizedT/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-NormalizedT/index.html @@ -1,2 +1,2 @@ -NormalizedT (infer.IStdlib.HashNormalizer.NormalizedT)

    Module type HashNormalizer.NormalizedT

    a hashed type with a normalization function which respects equality

    include Core.Caml.Hashtbl.HashedType
    type t
    val equal : t -> t -> bool
    val hash : t -> int
    val normalize : t -> t
    \ No newline at end of file +NormalizedT (infer.IStdlib.HashNormalizer.NormalizedT)

    Module type HashNormalizer.NormalizedT

    a hashed type with a normalization function which respects equality

    include Core.Caml.Hashtbl.HashedType
    type t
    val equal : t -> t -> bool
    val hash : t -> int
    val normalize : t -> t
    diff --git a/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-S/index.html index 450c193b45b..57c0e4eeab8 100644 --- a/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashNormalizer/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IStdlib.HashNormalizer.S)

    Module type HashNormalizer.S

    normalizer module which uses a hashtable to store normalized representatives

    type t

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    \ No newline at end of file +S (infer.IStdlib.HashNormalizer.S)

    Module type HashNormalizer.S

    normalizer module which uses a hashtable to store normalized representatives

    type t

    type the normalizer works on

    val hash_normalize : t -> t

    return equal normalized representative

    val hash_normalize_opt : t option -> t option

    helper for normalizing options; does not store option value in hashtable

    val hash_normalize_list : t list -> t list

    helper for normalizing lists; does not store list (or sublists) in hashtable

    diff --git a/website/static/odoc/next/infer/IStdlib/HashSet/Make/index.html b/website/static/odoc/next/infer/IStdlib/HashSet/Make/index.html index 13e61293e71..792bdfaf98c 100644 --- a/website/static/odoc/next/infer/IStdlib/HashSet/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashSet/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib.HashSet.Make)

    Module HashSet.Make

    Parameters

    module Key : IStdlib.IStd.Caml.Hashtbl.HashedType

    Signature

    type elt = Key.t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +Make (infer.IStdlib.HashSet.Make)

    Module HashSet.Make

    Parameters

    module Key : IStdlib.IStd.Caml.Hashtbl.HashedType

    Signature

    type elt = Key.t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/HashSet/index.html b/website/static/odoc/next/infer/IStdlib/HashSet/index.html index ee0400b7323..ede0046d631 100644 --- a/website/static/odoc/next/infer/IStdlib/HashSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashSet/index.html @@ -1,4 +1,4 @@ -HashSet (infer.IStdlib.HashSet)

    Module IStdlib.HashSet

    Hash set interface for mutably constructing and iterating over unordered collections.

    module type S = sig ... end
    module Make +HashSet (infer.IStdlib.HashSet)

    Module IStdlib.HashSet

    Hash set interface for mutably constructing and iterating over unordered collections.

    module type S = sig ... end
    module Make (Key : IStdlib.IStd.Caml.Hashtbl.HashedType) : - S with type elt = Key.t
    \ No newline at end of file + S with type elt = Key.t
    diff --git a/website/static/odoc/next/infer/IStdlib/HashSet/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib/HashSet/module-type-S/index.html index 689f45560b7..61f4c3e6235 100644 --- a/website/static/odoc/next/infer/IStdlib/HashSet/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib/HashSet/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IStdlib.HashSet.S)

    Module type HashSet.S

    type elt
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +S (infer.IStdlib.HashSet.S)

    Module type HashSet.S

    type elt
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/ICompare/index.html b/website/static/odoc/next/infer/IStdlib/ICompare/index.html index 5222d6bee4e..32ee10ffb29 100644 --- a/website/static/odoc/next/infer/IStdlib/ICompare/index.html +++ b/website/static/odoc/next/infer/IStdlib/ICompare/index.html @@ -1,2 +1,2 @@ -ICompare (infer.IStdlib.ICompare)

    Module IStdlib.ICompare

    val (<*>) : int -> (unit -> int) -> int
    \ No newline at end of file +ICompare (infer.IStdlib.ICompare)

    Module IStdlib.ICompare

    val (<*>) : int -> (unit -> int) -> int
    diff --git a/website/static/odoc/next/infer/IStdlib/IContainer/index.html b/website/static/odoc/next/infer/IStdlib/IContainer/index.html index 011c89df441..0ca3cd976d1 100644 --- a/website/static/odoc/next/infer/IStdlib/IContainer/index.html +++ b/website/static/odoc/next/infer/IStdlib/IContainer/index.html @@ -1,57 +1,57 @@ -IContainer (infer.IStdlib.IContainer)

    Module IStdlib.IContainer

    module F = Stdlib.Format

    Extension of Base.Container, i.e. generic definitions of container operations in terms of a fold function.

    type 'a singleton_or_more =
    1. | Empty
    2. | Singleton of 'a
    3. | More
    val singleton_or_more : - fold:('t, 'a, 'a singleton_or_more) IStdlib.IStd.Container.fold -> +IContainer (infer.IStdlib.IContainer)

    Module IStdlib.IContainer

    module F = Stdlib.Format

    Extension of Base.Container, i.e. generic definitions of container operations in terms of a fold function.

    type 'a singleton_or_more =
    1. | Empty
    2. | Singleton of 'a
    3. | More
    val singleton_or_more : + fold:('t, 'a, 'a singleton_or_more) IStdlib.IStd.Container.fold -> 't -> 'a singleton_or_more
    val mem_nth : - fold:('t, _, int) IStdlib.IStd.Container.fold -> + fold:('t, _, int) IStdlib.IStd.Container.fold -> 't -> int -> bool
    val forto : (int, int, 'accum) IStdlib.IStd.Container.fold
    val forto_right : (int, int, 'accum) IStdlib.IStd.Container.fold
    val to_rev_list : - fold:('t, 'a, 'a list) IStdlib.IStd.Container.fold -> + fold:('t, 'a, 'a list) IStdlib.IStd.Container.fold -> 't -> 'a list
    val rev_filter_to_list : - fold:('t, 'a, 'a list) IStdlib.IStd.Container.fold -> + fold:('t, 'a, 'a list) IStdlib.IStd.Container.fold -> 't -> - f:('a -> bool) -> + f:('a -> bool) -> 'a list
    val rev_map_to_list : - fold:('t, 'a, 'b list) IStdlib.IStd.Container.fold -> + fold:('t, 'a, 'b list) IStdlib.IStd.Container.fold -> 't -> - f:('a -> 'b) -> + f:('a -> 'b) -> 'b list
    val rev_filter_map_to_list : - fold:('t, 'a, 'b list) IStdlib.IStd.Container.fold -> + fold:('t, 'a, 'b list) IStdlib.IStd.Container.fold -> 't -> - f:('a -> 'b option) -> + f:('a -> 'b option) -> 'b list
    val iter_consecutive : - fold:('t, 'a, 'a option) IStdlib.IStd.Container.fold -> + fold:('t, 'a, 'a option) IStdlib.IStd.Container.fold -> 't -> - f:('a -> 'a -> unit) -> + f:('a -> 'a -> unit) -> unit
    val pp_collection : - fold:('t, 'a, 'a option) IStdlib.IStd.Container.fold -> - pp_item:(F.formatter -> 'a -> unit) -> + fold:('t, 'a, 'a option) IStdlib.IStd.Container.fold -> + pp_item:(F.formatter -> 'a -> unit) -> F.formatter -> 't -> unit
    val filter : - fold:('t, 'a, 'accum) IStdlib.IStd.Container.fold -> - filter:('a -> bool) -> + fold:('t, 'a, 'accum) IStdlib.IStd.Container.fold -> + filter:('a -> bool) -> ('t, 'a, 'accum) IStdlib.IStd.Container.fold
    val map : - f:('a -> 'b) -> + f:('a -> 'b) -> ('t, 'a, 'accum) IStdlib.IStd.Container.fold -> ('t, 'b, 'accum) IStdlib.IStd.Container.fold
    val fold_of_pervasives_set_fold : (('elt -> 'accum -> 'accum) -> 't -> 'accum -> 'accum) -> ('t, 'elt, 'accum) IStdlib.IStd.Container.fold
    val fold_of_pervasives_map_fold : (('key -> 'value -> 'accum -> 'accum) -> 't -> 'accum -> 'accum) -> ('t, 'key * 'value, 'accum) IStdlib.IStd.Container.fold
    val iter_result : - fold:('t, 'a, unit) IStdlib.IStd.Container.fold -> + fold:('t, 'a, unit) IStdlib.IStd.Container.fold -> 't -> - f:('a -> (unit, 'err) IStd.result) -> + f:('a -> (unit, 'err) IStd.result) -> (unit, 'err) IStd.result
    val fold_result_until : - fold:('t, 'a, 'accum) IStdlib.IStd.Container.fold -> - init:'accum -> - f: + fold:('t, 'a, 'accum) IStdlib.IStd.Container.fold -> + init:'accum -> + f: ('accum -> 'a -> (('accum, 'err) IStdlib.IStd.Result.t, 'final) IStdlib.IStd.Continue_or_stop.t) -> - finish:('accum -> 'final) -> + finish:('accum -> 'final) -> 't -> - ('final, 'err) IStdlib.IStd.Result.t
    \ No newline at end of file + ('final, 'err) IStdlib.IStd.Result.t
    diff --git a/website/static/odoc/next/infer/IStdlib/IExn/index.html b/website/static/odoc/next/infer/IStdlib/IExn/index.html index 03341bfbc0f..704896fd9a4 100644 --- a/website/static/odoc/next/infer/IStdlib/IExn/index.html +++ b/website/static/odoc/next/infer/IStdlib/IExn/index.html @@ -1,2 +1,2 @@ -IExn (infer.IStdlib.IExn)

    Module IStdlib.IExn

    val reraise_after : f:(unit -> unit) -> exn -> 'a

    Reraise the exception after doing f. Always reraise immediately after catching the exception, otherwise the backtrace can be wrong.

    val reraise_if : f:(unit -> bool) -> exn -> unit

    Reraise the exception if f returns true. Always reraise immediately after catching the exception, otherwise the backtrace can be wrong.

    \ No newline at end of file +IExn (infer.IStdlib.IExn)

    Module IStdlib.IExn

    val reraise_after : f:(unit -> unit) -> exn -> 'a

    Reraise the exception after doing f. Always reraise immediately after catching the exception, otherwise the backtrace can be wrong.

    val reraise_if : f:(unit -> bool) -> exn -> unit

    Reraise the exception if f returns true. Always reraise immediately after catching the exception, otherwise the backtrace can be wrong.

    diff --git a/website/static/odoc/next/infer/IStdlib/IFmt/Labelled/index.html b/website/static/odoc/next/infer/IStdlib/IFmt/Labelled/index.html index 227c105e30b..e2221565f6b 100644 --- a/website/static/odoc/next/infer/IStdlib/IFmt/Labelled/index.html +++ b/website/static/odoc/next/infer/IStdlib/IFmt/Labelled/index.html @@ -1,10 +1,10 @@ -Labelled (infer.IStdlib.IFmt.Labelled)

    Module IFmt.Labelled

    Adapters of Fmt functions using labelled interfaces

    val iter : - ?sep:unit Fmt.t -> - ('a -> f:('elt -> unit) -> unit) -> +Labelled (infer.IStdlib.IFmt.Labelled)

    Module IFmt.Labelled

    Adapters of Fmt functions using labelled interfaces

    val iter : + ?sep:unit Fmt.t -> + ('a -> f:('elt -> unit) -> unit) -> 'elt Fmt.t -> 'a Fmt.t

    Fmt.iter using a Core-style labelled iterator function

    val iter_bindings : - ?sep:unit Fmt.t -> - ('a -> f:(key:'key -> data:'data -> unit) -> unit) -> + ?sep:unit Fmt.t -> + ('a -> f:(key:'key -> data:'data -> unit) -> unit) -> ('key * 'data) Fmt.t -> - 'a Fmt.t

    Fmt.iter_bindings using a Core-style (key, data) labelled iterator function

    \ No newline at end of file + 'a Fmt.t

    Fmt.iter_bindings using a Core-style (key, data) labelled iterator function

    diff --git a/website/static/odoc/next/infer/IStdlib/IFmt/index.html b/website/static/odoc/next/infer/IStdlib/IFmt/index.html index b7b41832f96..32a8d2a928f 100644 --- a/website/static/odoc/next/infer/IStdlib/IFmt/index.html +++ b/website/static/odoc/next/infer/IStdlib/IFmt/index.html @@ -1,2 +1,2 @@ -IFmt (infer.IStdlib.IFmt)

    Module IStdlib.IFmt

    Low-level combinators built on Fmt. Sophisticated pretty-printing functions should rather go in Pp.

    val colon_sp : 'a Fmt.t

    colon_sp is Fmt.any ":@ ". It prints a colon and a space break hint.

    module Labelled : sig ... end

    Adapters of Fmt functions using labelled interfaces

    \ No newline at end of file +IFmt (infer.IStdlib.IFmt)

    Module IStdlib.IFmt

    Low-level combinators built on Fmt. Sophisticated pretty-printing functions should rather go in Pp.

    val colon_sp : 'a Fmt.t

    colon_sp is Fmt.any ":@ ". It prints a colon and a space break hint.

    module Labelled : sig ... end

    Adapters of Fmt functions using labelled interfaces

    diff --git a/website/static/odoc/next/infer/IStdlib/IList/index.html b/website/static/odoc/next/infer/IStdlib/IList/index.html index 951f37bb4db..9148e92c062 100644 --- a/website/static/odoc/next/infer/IStdlib/IList/index.html +++ b/website/static/odoc/next/infer/IStdlib/IList/index.html @@ -1,37 +1,37 @@ -IList (infer.IStdlib.IList)

    Module IStdlib.IList

    val map_changed : - equal:('a -> 'a -> bool) -> - f:('a -> 'a) -> +IList (infer.IStdlib.IList)

    Module IStdlib.IList

    val map_changed : + equal:('a -> 'a -> bool) -> + f:('a -> 'a) -> 'a list -> - 'a list

    like map, but returns the original list if unchanged

    val filter_changed : f:('a -> bool) -> 'a list -> 'a list

    like filter, but returns the original list if unchanged

    val remove_irrelevant_duplicates : - equal:('a -> 'a -> bool) -> - f:('a -> bool) -> + 'a list

    like map, but returns the original list if unchanged

    val filter_changed : f:('a -> bool) -> 'a list -> 'a list

    like filter, but returns the original list if unchanged

    val remove_irrelevant_duplicates : + equal:('a -> 'a -> bool) -> + f:('a -> bool) -> 'a list -> 'a list

    Remove consecutive equal irrelevant elements from a list (according to the given comparison and relevance functions)

    val merge_sorted_nodup : - cmp:('a -> 'a -> int) -> - res:'a list -> + cmp:('a -> 'a -> int) -> + res:'a list -> 'a list -> 'a list -> - 'a list

    The function works on sorted lists without duplicates, and keeps only one copy of elements that appear in both lists.

    val inter : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

    inter cmp xs ys are the elements in both xs and ys, sorted according to cmp.

    val fold_last : + 'a list

    The function works on sorted lists without duplicates, and keeps only one copy of elements that appear in both lists.

    val inter : cmp:('a -> 'a -> int) -> 'a list -> 'a list -> 'a list

    inter cmp xs ys are the elements in both xs and ys, sorted according to cmp.

    val fold_last : 'a list -> - init:'b -> - f:('b -> 'a -> 'b) -> - f_last:('b -> 'a -> 'b) -> + init:'b -> + f:('b -> 'a -> 'b) -> + f_last:('b -> 'a -> 'b) -> 'b

    like fold, but apply f_last to the last element

    val split_last_rev : 'a list -> ('a * 'a list) option

    split_last_rev l is Some (last, rev_prefix) where l == List.rev (last :: rev_prefix), None if l is empty

    val append_no_duplicates : - cmp:('a -> 'a -> int) -> - ('a list -> 'a list -> 'a list) IStdlib.IStd.Staged.t

    append_no_duplicates list1 list2, assuming that list1 and list2 have no duplicates on their own, it computes list1 @ (filtered list2), so it keeps the order of both lists and has no duplicates.

    val merge_dedup : 'a list -> 'a list -> compare:('a -> 'a -> int) -> 'a list
    val drop : 'a list -> int -> 'a list

    drop l n returns l without the first n elements, or the empty list if n > length l.

    val opt_cons : 'a option -> 'a list -> 'a list

    opt_cons None l returns l. opt_cons (Some x) l returns x :: l

    val remove_first : 'a list -> f:('a -> bool) -> 'a list option
    val eval_until_first_some : (unit -> 'a option) list -> 'a option

    given a list of functions taking unit, evaluate and return the first one to return Some x

    val product : 'a list list -> 'a list list

    n-ary cartesian product

    val pp_print_list : - max:int -> - ?pp_sep:(Stdlib.Format.formatter -> unit -> unit) -> + cmp:('a -> 'a -> int) -> + ('a list -> 'a list -> 'a list) IStdlib.IStd.Staged.t

    append_no_duplicates list1 list2, assuming that list1 and list2 have no duplicates on their own, it computes list1 @ (filtered list2), so it keeps the order of both lists and has no duplicates.

    val merge_dedup : 'a list -> 'a list -> compare:('a -> 'a -> int) -> 'a list
    val drop : 'a list -> int -> 'a list

    drop l n returns l without the first n elements, or the empty list if n > length l.

    val opt_cons : 'a option -> 'a list -> 'a list

    opt_cons None l returns l. opt_cons (Some x) l returns x :: l

    val remove_first : 'a list -> f:('a -> bool) -> 'a list option
    val eval_until_first_some : (unit -> 'a option) list -> 'a option

    given a list of functions taking unit, evaluate and return the first one to return Some x

    val product : 'a list list -> 'a list list

    n-ary cartesian product

    val pp_print_list : + max:int -> + ?pp_sep:(Stdlib.Format.formatter -> unit -> unit) -> (Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a list -> unit
    val fold2_result : - init:'acc -> - f:('acc -> 'a -> 'b -> ('acc, 'err) IStd.result) -> + init:'acc -> + f:('acc -> 'a -> 'b -> ('acc, 'err) IStd.result) -> 'a list -> 'b list -> ('acc, 'err) IStd.result Base.List.Or_unequal_lengths.t
    val foldi_result : - init:'acc -> - f:(int -> 'acc -> 'a -> ('acc, 'err) IStd.result) -> + init:'acc -> + f:(int -> 'acc -> 'a -> ('acc, 'err) IStd.result) -> 'a list -> - ('acc, 'err) IStd.result
    val move_last_to_first : 'a list -> 'a list
    val traverse_opt : 'a list -> f:('a -> 'b option) -> 'b list option

    Applies f to the elements of the list and returns None if any application results in None otherwise returns Some list'.

    \ No newline at end of file + ('acc, 'err) IStd.result
    val move_last_to_first : 'a list -> 'a list
    val traverse_opt : 'a list -> f:('a -> 'b option) -> 'b list option

    Applies f to the elements of the list and returns None if any application results in None otherwise returns Some list'.

    diff --git a/website/static/odoc/next/infer/IStdlib/IMtime/index.html b/website/static/odoc/next/infer/IStdlib/IMtime/index.html index 40a066b8ea2..a844065663c 100644 --- a/website/static/odoc/next/infer/IStdlib/IMtime/index.html +++ b/website/static/odoc/next/infer/IStdlib/IMtime/index.html @@ -1,2 +1,2 @@ -IMtime (infer.IStdlib.IMtime)

    Module IStdlib.IMtime

    val span_to_s_float : Mtime.Span.t -> float
    val span_to_us_int : Mtime.Span.t -> int
    val span_to_ms_int : Mtime.Span.t -> int
    \ No newline at end of file +IMtime (infer.IStdlib.IMtime)

    Module IStdlib.IMtime

    val span_to_s_float : Mtime.Span.t -> float
    val span_to_us_int : Mtime.Span.t -> int
    val span_to_ms_int : Mtime.Span.t -> int
    diff --git a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/Open_on_rhs/index.html b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/Open_on_rhs/index.html index daeb61dc531..f1a10f6f764 100644 --- a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/Open_on_rhs/index.html +++ b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/Open_on_rhs/index.html @@ -1,2 +1,2 @@ -Open_on_rhs (infer.IStdlib.IOption.Let_syntax.Let_syntax.Open_on_rhs)

    Module Let_syntax.Open_on_rhs

    \ No newline at end of file +Open_on_rhs (infer.IStdlib.IOption.Let_syntax.Let_syntax.Open_on_rhs)

    Module Let_syntax.Open_on_rhs

    diff --git a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/index.html b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/index.html index f26fd918ee3..a33c29783b1 100644 --- a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/index.html +++ b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/Let_syntax/index.html @@ -1,5 +1,5 @@ -Let_syntax (infer.IStdlib.IOption.Let_syntax.Let_syntax)

    Module Let_syntax.Let_syntax

    val return : 'a -> 'a Base__Option.t
    val bind : +Let_syntax (infer.IStdlib.IOption.Let_syntax.Let_syntax)

    Module Let_syntax.Let_syntax

    val return : 'a -> 'a Base__Option.t
    val bind : 'a Base__Option.t -> - f:('a -> 'b Base__Option.t) -> - 'b Base__Option.t
    val map : 'a Base__Option.t -> f:('a -> 'b) -> 'b Base__Option.t
    val both : 'a Base__Option.t -> 'b Base__Option.t -> ('a * 'b) Base__Option.t
    module Open_on_rhs : sig ... end
    \ No newline at end of file + f:('a -> 'b Base__Option.t) -> + 'b Base__Option.t
    val map : 'a Base__Option.t -> f:('a -> 'b) -> 'b Base__Option.t
    val both : 'a Base__Option.t -> 'b Base__Option.t -> ('a * 'b) Base__Option.t
    module Open_on_rhs : sig ... end
    diff --git a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/index.html b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/index.html index 175c2210b0d..d8e9624aa8a 100644 --- a/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/index.html +++ b/website/static/odoc/next/infer/IStdlib/IOption/Let_syntax/index.html @@ -1,2 +1,2 @@ -Let_syntax (infer.IStdlib.IOption.Let_syntax)

    Module IOption.Let_syntax

    Provides signatures for OCaml 4.08 binding operators

    include module type of IStdlib.IStd.Option.Let_syntax
    val return : 'a -> 'a Base__Option.t
    val (>>=) : 'a Base__Option.t -> ('a -> 'b Base__Option.t) -> 'b Base__Option.t
    val (>>|) : 'a Base__Option.t -> ('a -> 'b) -> 'b Base__Option.t
    module Let_syntax : sig ... end
    val let+ : 'a option -> ('a -> 'b) -> 'b option
    val and+ : 'a option -> 'b option -> ('a * 'b) option
    val let* : 'a option -> ('a -> 'b option) -> 'b option
    val and* : 'a option -> 'b option -> ('a * 'b) option
    \ No newline at end of file +Let_syntax (infer.IStdlib.IOption.Let_syntax)

    Module IOption.Let_syntax

    Provides signatures for OCaml 4.08 binding operators

    include module type of IStdlib.IStd.Option.Let_syntax
    val return : 'a -> 'a Base__Option.t
    val (>>=) : 'a Base__Option.t -> ('a -> 'b Base__Option.t) -> 'b Base__Option.t
    val (>>|) : 'a Base__Option.t -> ('a -> 'b) -> 'b Base__Option.t
    module Let_syntax : sig ... end
    val let+ : 'a option -> ('a -> 'b) -> 'b option
    val and+ : 'a option -> 'b option -> ('a * 'b) option
    val let* : 'a option -> ('a -> 'b option) -> 'b option
    val and* : 'a option -> 'b option -> ('a * 'b) option
    diff --git a/website/static/odoc/next/infer/IStdlib/IOption/index.html b/website/static/odoc/next/infer/IStdlib/IOption/index.html index 58c28d89cce..966afa3aa85 100644 --- a/website/static/odoc/next/infer/IStdlib/IOption/index.html +++ b/website/static/odoc/next/infer/IStdlib/IOption/index.html @@ -1,6 +1,6 @@ -IOption (infer.IStdlib.IOption)

    Module IStdlib.IOption

    val find_value_exn : 'a option -> 'a

    Like Option.value_exn but raises Caml.Not_found when called with None.

    val value_default_f : f:(unit -> 'a) -> 'a option -> 'a

    Like Option.value ~default:(f ()) but f is called only if None.

    val if_none_evalopt : f:(unit -> 'a option) -> 'a option -> 'a option

    if_none_evalopt ~f x evaluates to f () if x = None, otherwise returns x. Useful for chaining matchers where the first returning non-None determines the result.

    val if_none_eval : f:(unit -> 'a) -> 'a option -> 'a

    if_none_eval ~f x evaluates to y if x=Some y else to f (). Useful for terminating chains built with if_none_evalopt. This is exactly the same as value_default_f but with a better name.

    val exists2 : 'a option -> 'b option -> f:('a -> 'b -> bool) -> bool

    Like Option.exists but gets two parameters.

    val iter2 : 'a option -> 'b option -> f:('a -> 'b -> unit) -> unit

    Like Option.iter but gets two parameters.

    val map_changed : +IOption (infer.IStdlib.IOption)

    Module IStdlib.IOption

    val find_value_exn : 'a option -> 'a

    Like Option.value_exn but raises Caml.Not_found when called with None.

    val value_default_f : f:(unit -> 'a) -> 'a option -> 'a

    Like Option.value ~default:(f ()) but f is called only if None.

    val if_none_evalopt : f:(unit -> 'a option) -> 'a option -> 'a option

    if_none_evalopt ~f x evaluates to f () if x = None, otherwise returns x. Useful for chaining matchers where the first returning non-None determines the result.

    val if_none_eval : f:(unit -> 'a) -> 'a option -> 'a

    if_none_eval ~f x evaluates to y if x=Some y else to f (). Useful for terminating chains built with if_none_evalopt. This is exactly the same as value_default_f but with a better name.

    val exists2 : 'a option -> 'b option -> f:('a -> 'b -> bool) -> bool

    Like Option.exists but gets two parameters.

    val iter2 : 'a option -> 'b option -> f:('a -> 'b -> unit) -> unit

    Like Option.iter but gets two parameters.

    val map_changed : 'a option -> - equal:('a -> 'a -> bool) -> - f:('a -> 'a) -> - 'a option

    Like Option.map but maintain physical equality

    val continue : default:'a -> 'a option -> ('a -> 'a option) -> 'a option

    Like Option.bind but keeps continuing the further evaluation with default input when the first parameter is None.

    include sig ... end
    module Let_syntax : sig ... end

    Provides signatures for OCaml 4.08 binding operators

    \ No newline at end of file + equal:('a -> 'a -> bool) -> + f:('a -> 'a) -> + 'a option

    Like Option.map but maintain physical equality

    val continue : default:'a -> 'a option -> ('a -> 'a option) -> 'a option

    Like Option.bind but keeps continuing the further evaluation with default input when the first parameter is None.

    include sig ... end
    module Let_syntax : sig ... end

    Provides signatures for OCaml 4.08 binding operators

    diff --git a/website/static/odoc/next/infer/IStdlib/IResult/Let_syntax/index.html b/website/static/odoc/next/infer/IStdlib/IResult/Let_syntax/index.html index 642aee791f0..bfeb6704cdd 100644 --- a/website/static/odoc/next/infer/IStdlib/IResult/Let_syntax/index.html +++ b/website/static/odoc/next/infer/IStdlib/IResult/Let_syntax/index.html @@ -1,8 +1,8 @@ -Let_syntax (infer.IStdlib.IResult.Let_syntax)

    Module IResult.Let_syntax

    include module type of IStdlib.IStd.Result.Monad_infix
    val (>>=) : +Let_syntax (infer.IStdlib.IResult.Let_syntax)

    Module IResult.Let_syntax

    include module type of IStdlib.IStd.Result.Monad_infix
    val (>>=) : ('a, 'e) Core__Result.t -> ('a -> ('b, 'e) Core__Result.t) -> ('b, 'e) Core__Result.t
    val (>>|) : ('a, 'e) Core__Result.t -> ('a -> 'b) -> ('b, 'e) Core__Result.t
    val let+ : ('ok, 'err) IStd.result -> ('ok -> 'okk) -> ('okk, 'err) IStd.result
    val let* : ('ok, 'err) IStd.result -> ('ok -> ('okk, 'err) IStd.result) -> - ('okk, 'err) IStd.result
    \ No newline at end of file + ('okk, 'err) IStd.result
    diff --git a/website/static/odoc/next/infer/IStdlib/IResult/index.html b/website/static/odoc/next/infer/IStdlib/IResult/index.html index f447c0e9597..c105a1b6e55 100644 --- a/website/static/odoc/next/infer/IStdlib/IResult/index.html +++ b/website/static/odoc/next/infer/IStdlib/IResult/index.html @@ -1,2 +1,2 @@ -IResult (infer.IStdlib.IResult)

    Module IStdlib.IResult

    module Let_syntax : sig ... end
    \ No newline at end of file +IResult (infer.IStdlib.IResult)

    Module IStdlib.IResult

    module Let_syntax : sig ... end
    diff --git a/website/static/odoc/next/infer/IStdlib/ISequence/index.html b/website/static/odoc/next/infer/IStdlib/ISequence/index.html index 8af9299b724..306aba4e172 100644 --- a/website/static/odoc/next/infer/IStdlib/ISequence/index.html +++ b/website/static/odoc/next/infer/IStdlib/ISequence/index.html @@ -1,5 +1,5 @@ -ISequence (infer.IStdlib.ISequence)

    Module IStdlib.ISequence

    Utility functions for sequences

    val gen_sequence_list : - f:('a -> (unit, 'b) IStdlib.IStd.Sequence.Generator.t) -> +ISequence (infer.IStdlib.ISequence)

    Module IStdlib.ISequence

    Utility functions for sequences

    val gen_sequence_list : + f:('a -> (unit, 'b) IStdlib.IStd.Sequence.Generator.t) -> 'a list -> - (unit, 'b) IStdlib.IStd.Sequence.Generator.t
    \ No newline at end of file + (unit, 'b) IStdlib.IStd.Sequence.Generator.t
    diff --git a/website/static/odoc/next/infer/IStdlib/IStd/Filename/index.html b/website/static/odoc/next/infer/IStdlib/IStd/Filename/index.html index bf3d52fce51..e011647eb41 100644 --- a/website/static/odoc/next/infer/IStdlib/IStd/Filename/index.html +++ b/website/static/odoc/next/infer/IStdlib/IStd/Filename/index.html @@ -1,7 +1,7 @@ -Filename (infer.IStdlib.IStd.Filename)

    Module IStd.Filename

    type t = Core__.Import.string
    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val min : t -> t -> t
    val max : t -> t -> t
    val ascending : t -> t -> int
    val descending : t -> t -> int
    val between : t -> low:t -> high:t -> bool
    val clamp_exn : t -> min:t -> max:t -> t
    val clamp : t -> min:t -> max:t -> t Base__.Or_error.t
    type comparator_witness = Core__.String.comparator_witness
    val comparator : (t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:t Core__.Maybe_bound.t -> t Validate.check
    val validate_ubound : max:t Core__.Maybe_bound.t -> t Validate.check
    val validate_bound : - min:t Core__.Maybe_bound.t -> - max:t Core__.Maybe_bound.t -> +Filename (infer.IStdlib.IStd.Filename)

    Module IStd.Filename

    type t = Core__.Import.string
    val bin_size_t : t Bin_prot.Size.sizer
    val bin_write_t : t Bin_prot.Write.writer
    val bin_read_t : t Bin_prot.Read.reader
    val __bin_read_t__ : (int -> t) Bin_prot.Read.reader
    val bin_shape_t : Bin_prot.Shape.t
    val bin_writer_t : t Bin_prot.Type_class.writer
    val bin_reader_t : t Bin_prot.Type_class.reader
    val bin_t : t Bin_prot.Type_class.t
    val t_of_sexp : Sexplib0__.Sexp.t -> t
    val sexp_of_t : t -> Sexplib0__.Sexp.t
    val (>=) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (=) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<) : t -> t -> bool
    val (<>) : t -> t -> bool
    val equal : t -> t -> bool
    val min : t -> t -> t
    val max : t -> t -> t
    val ascending : t -> t -> int
    val descending : t -> t -> int
    val between : t -> low:t -> high:t -> bool
    val clamp_exn : t -> min:t -> max:t -> t
    val clamp : t -> min:t -> max:t -> t Base__.Or_error.t
    type comparator_witness = Core__.String.comparator_witness
    val comparator : (t, comparator_witness) Base__Comparator.comparator
    val validate_lbound : min:t Core__.Maybe_bound.t -> t Validate.check
    val validate_ubound : max:t Core__.Maybe_bound.t -> t Validate.check
    val validate_bound : + min:t Core__.Maybe_bound.t -> + max:t Core__.Maybe_bound.t -> t Validate.check
    module Replace_polymorphic_compare : sig ... end
    module Map : sig ... end
    module Set : sig ... end
    val compare : t Base__Ppx_compare_lib.compare
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val hashable : t Core__.Hashtbl.Hashable.t
    module Table : sig ... end
    module Hash_set : sig ... end
    module Hash_queue : sig ... end
    val root : Core__.Import.string
    val is_posix_pathname_component : Core__.Import.string -> Core__.Import.bool
    val temp_dir_name : Core__.Import.string
    val current_dir_name : Core__.Import.string
    val parent_dir_name : Core__.Import.string
    val dir_sep : Core__.Import.string
    val concat : Core__.Import.string -> Core__.Import.string -> @@ -12,27 +12,27 @@ Core__.Import.string -> Core__.Import.string -> Core__.Import.string
    val chop_suffix_opt : - suffix:Core__.Import.string -> + suffix:Core__.Import.string -> Core__.Import.string -> Core__.Import.string Core__.Import.option
    val chop_extension : Core__.Import.string -> Core__.Import.string
    val split_extension : Core__.Import.string -> Core__.Import.string * Core__.Import.string Core__.Import.option
    val basename : Core__.Import.string -> Core__.Import.string
    val dirname : Core__.Import.string -> Core__.Import.string
    val to_absolute_exn : Core__.Import.string -> - relative_to:Core__.Import.string -> + relative_to:Core__.Import.string -> Core__.Import.string
    val of_absolute_exn : Core__.Import.string -> - relative_to:Core__.Import.string -> + relative_to:Core__.Import.string -> Core__.Import.string
    val split : Core__.Import.string -> Core__.Import.string * Core__.Import.string
    val parts : Core__.Import.string -> Core__.Import.string Core__.Import.list
    val of_parts : Core__.Import.string Core__.Import.list -> Core__.Import.string
    val quote : Core__.Import.string -> Core__.Import.string
    module Stable : sig ... end
    include module type of struct include Filename_unix end
    val realpath : string -> string
    val open_temp_file : - ?perm:int -> - ?in_dir:string -> + ?perm:int -> + ?in_dir:string -> string -> string -> string * Core.Out_channel.t
    val open_temp_file_fd : - ?perm:int -> - ?in_dir:string -> + ?perm:int -> + ?in_dir:string -> string -> string -> - string * Filename_unix__.Import.Unix.file_descr
    val temp_file : ?perm:int -> ?in_dir:string -> string -> string -> string
    val temp_dir : ?perm:int -> ?in_dir:string -> string -> string -> string
    val create_arg_type : - ?key:'a Core.Univ_map.Multi.Key.t -> + string * Filename_unix__.Import.Unix.file_descr
    val temp_file : ?perm:int -> ?in_dir:string -> string -> string -> string
    val temp_dir : ?perm:int -> ?in_dir:string -> string -> string -> string
    val create_arg_type : + ?key:'a Core.Univ_map.Multi.Key.t -> (string -> 'a) -> - 'a Core.Command.Arg_type.t
    val arg_type : string Core.Command.Arg_type.t
    \ No newline at end of file + 'a Core.Command.Arg_type.t
    val arg_type : string Core.Command.Arg_type.t
    diff --git a/website/static/odoc/next/infer/IStdlib/IStd/Sys/index.html b/website/static/odoc/next/infer/IStdlib/IStd/Sys/index.html index 4bd5edfa475..fbd996bcf7a 100644 --- a/website/static/odoc/next/infer/IStdlib/IStd/Sys/index.html +++ b/website/static/odoc/next/infer/IStdlib/IStd/Sys/index.html @@ -1,4 +1,4 @@ -Sys (infer.IStdlib.IStd.Sys)

    Module IStd.Sys

    val get_argv : unit -> string array
    val argv : string array
    • deprecated [since 2019-08] Use [Sys.get_argv] instead, which has the correct behavior when [caml_sys_modify_argv] is called.
    val interactive : bool Stdlib.ref
    val os_type : string
    val unix : bool
    val win32 : bool
    val cygwin : bool
    type backend_type = Base__.Sys0.backend_type =
    1. | Native
    2. | Bytecode
    3. | Other of string
    val backend_type : backend_type
    val word_size_in_bits : int
    val int_size_in_bits : int
    val big_endian : bool
    val max_string_length : int
    val max_array_length : int
    val runtime_variant : unit -> string
    val runtime_parameters : unit -> string
    val ocaml_version : string
    val enable_runtime_warnings : bool -> unit
    val runtime_warnings_enabled : unit -> bool
    val getenv : string -> string option
    val getenv_exn : string -> string
    val opaque_identity : 'a -> 'a
    val quote : Core__.Import.string -> Core__.Import.string
    val concat_quoted : +Sys (infer.IStdlib.IStd.Sys)

    Module IStd.Sys

    val get_argv : unit -> string array
    val argv : string array
    • deprecated [since 2019-08] Use [Sys.get_argv] instead, which has the correct behavior when [caml_sys_modify_argv] is called.
    val interactive : bool Stdlib.ref
    val os_type : string
    val unix : bool
    val win32 : bool
    val cygwin : bool
    type backend_type = Base__.Sys0.backend_type =
    1. | Native
    2. | Bytecode
    3. | Other of string
    val backend_type : backend_type
    val word_size_in_bits : int
    val int_size_in_bits : int
    val big_endian : bool
    val max_string_length : int
    val max_array_length : int
    val runtime_variant : unit -> string
    val runtime_parameters : unit -> string
    val ocaml_version : string
    val enable_runtime_warnings : bool -> unit
    val runtime_warnings_enabled : unit -> bool
    val getenv : string -> string option
    val getenv_exn : string -> string
    val opaque_identity : 'a -> 'a
    val quote : Core__.Import.string -> Core__.Import.string
    val concat_quoted : Core__.Import.string Core__.Import.list -> - Core__.Import.string
    exception Break
    • deprecated [since 2021-04] Use [Sys_unix]
    module Private : sig ... end
    include module type of struct include Sys_unix end
    val executable_name : string
    val file_exists : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val file_exists_exn : ?follow_symlinks:bool -> string -> bool
    val is_directory : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val is_file : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val is_directory_exn : ?follow_symlinks:bool -> string -> bool
    val is_file_exn : ?follow_symlinks:bool -> string -> bool
    val remove : string -> unit
    val rename : string -> string -> unit
    val unsafe_getenv : string -> string option
    val unsafe_getenv_exn : string -> string
    val command : string -> int
    val command_exn : string -> unit
    val chdir : string -> unit
    val getcwd : unit -> string
    val readdir : string -> string array
    val fold_dir : init:'acc -> f:('acc -> string -> 'acc) -> string -> 'acc
    val ls_dir : string -> string list
    exception Break
    val catch_break : bool -> unit
    val execution_mode : unit -> [ `Bytecode | `Native ]
    val c_int_size : unit -> int
    val home_directory : unit -> string
    val override_argv : string array -> unit
    \ No newline at end of file + Core__.Import.string
    exception Break
    • deprecated [since 2021-04] Use [Sys_unix]
    module Private : sig ... end
    include module type of struct include Sys_unix end
    val executable_name : string
    val file_exists : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val file_exists_exn : ?follow_symlinks:bool -> string -> bool
    val is_directory : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val is_file : ?follow_symlinks:bool -> string -> [ `No | `Unknown | `Yes ]
    val is_directory_exn : ?follow_symlinks:bool -> string -> bool
    val is_file_exn : ?follow_symlinks:bool -> string -> bool
    val remove : string -> unit
    val rename : string -> string -> unit
    val unsafe_getenv : string -> string option
    val unsafe_getenv_exn : string -> string
    val command : string -> int
    val command_exn : string -> unit
    val chdir : string -> unit
    val getcwd : unit -> string
    val readdir : string -> string array
    val fold_dir : init:'acc -> f:('acc -> string -> 'acc) -> string -> 'acc
    val ls_dir : string -> string list
    exception Break
    val catch_break : bool -> unit
    val execution_mode : unit -> [ `Bytecode | `Native ]
    val c_int_size : unit -> int
    val home_directory : unit -> string
    val override_argv : string array -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/IStd/index.html b/website/static/odoc/next/infer/IStdlib/IStd/index.html index e0745ab39ff..12745a335d1 100644 --- a/website/static/odoc/next/infer/IStdlib/IStd/index.html +++ b/website/static/odoc/next/infer/IStdlib/IStd/index.html @@ -1,5 +1,5 @@ -IStd (infer.IStdlib.IStd)

    Module IStdlib.IStd

    include module type of struct include Core end
    module Applicative : sig ... end
    module Arg : sig ... end
    module Array : sig ... end
    module Avltree : sig ... end
    module Backtrace : sig ... end
    module Bag : sig ... end
    module Bigbuffer : sig ... end
    module Bigstring : sig ... end
    module Bigsubstring : sig ... end
    module Bin_prot : sig ... end
    module Binable : sig ... end
    module Binary_searchable : sig ... end
    module Blang : sig ... end
    module Blit : sig ... end
    module Bool : sig ... end
    module Bounded_index : sig ... end
    module Buffer = Base.Buffer
    module Byte_units : sig ... end
    module Bytes : sig ... end
    module Caml = Core.Caml
    module Char : sig ... end
    module Command : sig ... end
    module Comparable : sig ... end
    module Comparator : sig ... end
    module Comparisons : sig ... end
    module Container : sig ... end
    module Container_intf : sig ... end
    module Continue_or_stop : sig ... end
    module Core_kernel_stable : sig ... end
    module Core_stable : sig ... end
    module Date : sig ... end
    module Day_of_week : sig ... end
    module Debug : sig ... end
    module Deque : sig ... end
    module Deriving_hash : sig ... end
    module Digest : sig ... end
    module Doubly_linked : sig ... end
    module Either : sig ... end
    module Ephemeron : sig ... end
    module Equal : sig ... end
    module Error : sig ... end
    module Exn = Base.Exn
    module Expect_test_config = Expect_test_config
    module Fdeque : sig ... end
    module Field : sig ... end
    module Float : sig ... end
    module Float_with_finite_only_serialization : sig ... end
    module Floatable : sig ... end
    module Fn : sig ... end
    module Formatter : sig ... end
    module Fqueue : sig ... end
    module Gc : sig ... end
    module Hash : sig ... end
    module Hash_queue : sig ... end
    module Hash_set : sig ... end
    module Hashable : sig ... end
    module Hashtbl : sig ... end
    module Hashtbl_intf : sig ... end
    module Heap_block : sig ... end
    module Hexdump : sig ... end
    module Hexdump_intf : sig ... end
    module Host_and_port : sig ... end
    module Identifiable : sig ... end
    module Immediate_option : sig ... end
    module Immediate_option_intf : sig ... end
    module In_channel : sig ... end
    module Indexed_container : sig ... end
    module Info : sig ... end
    module Int : sig ... end
    module Int32 : sig ... end
    module Int63 : sig ... end
    module Int64 : sig ... end
    module Int_conversions : sig ... end
    module Int_intf : sig ... end
    module Int_math : sig ... end
    module Intable : sig ... end
    module Interfaces : sig ... end
    module Invariant : sig ... end
    module Lazy : sig ... end
    module Linked_queue : sig ... end
    module List : sig ... end
    module Map : sig ... end
    module Map_intf : sig ... end
    module Maybe_bound : sig ... end
    module Md5 : sig ... end
    module Memo : sig ... end
    module Monad : sig ... end
    module Month : sig ... end
    module Mutex = Core.Mutex
    module Nativeint : sig ... end
    module No_polymorphic_compare : sig ... end
    module Nothing : sig ... end
    module Only_in_test : sig ... end
    module Option : sig ... end
    module Option_array : sig ... end
    module Optional_syntax : sig ... end
    module Optional_syntax_intf : sig ... end
    module Or_error : sig ... end
    module Ordered_collection_common : sig ... end
    module Ordering : sig ... end
    module Out_channel : sig ... end
    module Percent : sig ... end
    module Perms : sig ... end
    module Pid : sig ... end
    module Poly : sig ... end
    module Polymorphic_compare = Poly
    module Popcount = Base.Popcount
    module Pretty_printer : sig ... end
    module Printexc : sig ... end
    module Printf : sig ... end
    module Queue : sig ... end
    module Quickcheck : sig ... end
    module Quickcheck_intf : sig ... end
    module Quickcheckable : sig ... end
    module Random = Base.Random
    module Ref : sig ... end
    module Result : sig ... end
    module Robustly_comparable : sig ... end
    module Sequence : sig ... end
    module Set : sig ... end
    module Set_intf : sig ... end
    module Set_once : sig ... end
    module Sexp_maybe : sig ... end
    module Sexp : sig ... end
    module Sexpable : sig ... end
    module Sign : sig ... end
    module Signal : sig ... end
    module Sign_or_nan : sig ... end
    module Source_code_position : sig ... end
    module Splittable_random = Splittable_random
    module Stable_comparable : sig ... end
    module Stable_unit_test : sig ... end
    module Stack : sig ... end
    module Staged = Base.Staged
    module String : sig ... end
    module String_id : sig ... end
    module Stringable : sig ... end
    module Substring : sig ... end
    module Substring_intf : sig ... end
    module Thread = Core.Thread
    module Time : sig ... end
    module Time_ns : sig ... end
    module Tuple : sig ... end
    module Tuple2 = Tuple.T2
    module Tuple3 = Tuple.T3
    module Type_equal : sig ... end
    module Type_immediacy : sig ... end
    module Uchar : sig ... end
    module Uniform_array : sig ... end
    module Union_find : sig ... end
    module Unique_id : sig ... end
    module Unit : sig ... end
    module Unit_of_time : sig ... end
    module Univ_map : sig ... end
    module Validate = Validate
    module Validated : sig ... end
    module Variant : sig ... end
    module Weak = Stdlib.Weak
    module With_return : sig ... end
    module Word_size : sig ... end
    module type Unique_id = Core.Unique_id
    module type T = Core.T
    module type T1 = Core.T1
    module type T2 = Core.T2
    module type T3 = Core.T3
    module type T_bin = Core.T_bin
    val raise : exn -> 'a
    val raise_notrace : exn -> 'a
    exception Exit
    val (==) : 'a -> 'a -> bool
    • deprecated [since 2014-10] Use [phys_equal]
    val (!=) : 'a -> 'a -> bool
    • deprecated [since 2014-10] Use [phys_equal]
    val not : bool -> bool
    val (&&) : bool -> bool -> bool
    val (&) : bool -> bool -> bool
    • deprecated [since 2010-01] {!Caml.( && )} should be used instead.
    val (||) : bool -> bool -> bool
    val or : bool -> bool -> bool
    • deprecated [since 2010-01] {!Caml.( || )} should be used instead.
    val __LOC__ : string
    val __FILE__ : string
    val __LINE__ : int
    val __MODULE__ : string
    val __POS__ : string * int * int * int
    val __FUNCTION__ : string
    val __LOC_OF__ : 'a -> string * 'a
    val __LINE_OF__ : 'a -> int * 'a
    val __POS_OF__ : 'a -> (string * int * int * int) * 'a
    val (|>) : 'a -> ('a -> 'b) -> 'b
    val (@@) : ('a -> 'b) -> 'a -> 'b
    val (~-) : int -> int
    val (~+) : int -> int
    val succ : int -> int
    val pred : int -> int
    val (+) : int -> int -> int
    val (-) : int -> int -> int
    val (*) : int -> int -> int
    val (/) : int -> int -> int
    val (mod) : int -> int -> int
    val abs : int -> int
    val max_int : int
    • deprecated [since 2014-10] Use [Int.max_value]
    val min_int : int
    • deprecated [since 2014-10] Use [Int.min_value]
    val (land) : int -> int -> int
    val (lor) : int -> int -> int
    val (lxor) : int -> int -> int
    val lnot : int -> int
    val (lsl) : int -> int -> int
    val (lsr) : int -> int -> int
    val (asr) : int -> int -> int
    val (~-.) : float -> float
    val (~+.) : float -> float
    val (+.) : float -> float -> float
    val (-.) : float -> float -> float
    val (*.) : float -> float -> float
    val (/.) : float -> float -> float
    val (**) : float -> float -> float
    val sqrt : float -> float
    val exp : float -> float
    val log : float -> float
    val log10 : float -> float
    • deprecated [since 2016-07] Use [Float.log10]
    val expm1 : float -> float
    • deprecated [since 2016-07] Use [Float.expm1]
    val log1p : float -> float
    • deprecated [since 2016-07] Use [Float.log1p]
    val cos : float -> float
    • deprecated [since 2016-07] Use [Float.cos]
    val sin : float -> float
    • deprecated [since 2016-07] Use [Float.sin]
    val tan : float -> float
    • deprecated [since 2016-07] Use [Float.tan]
    val acos : float -> float
    • deprecated [since 2016-07] Use [Float.acos]
    val asin : float -> float
    • deprecated [since 2016-07] Use [Float.asin]
    val atan : float -> float
    • deprecated [since 2016-07] Use [Float.atan]
    val atan2 : float -> float -> float
    • deprecated [since 2016-07] Use [Float.atan2]
    val hypot : float -> float -> float
    • deprecated [since 2016-07] Use [Float.hypot]
    val cosh : float -> float
    • deprecated [since 2016-07] Use [Float.cosh]
    val sinh : float -> float
    • deprecated [since 2016-07] Use [Float.sinh]
    val tanh : float -> float
    • deprecated [since 2016-07] Use [Float.tanh]
    val ceil : float -> float
    • deprecated [since 2014-10] Use [Float.round_up]
    val floor : float -> float
    • deprecated [since 2014-10] Use [Float.round_down]
    val abs_float : float -> float
    • deprecated [since 2014-10] Use [Float.abs]
    val copysign : float -> float -> float
    • deprecated [since 2016-07] Use [Float.copysign]
    val mod_float : float -> float -> float
    • deprecated [since 2014-10] Use [Float.mod_float]
    val frexp : float -> float * int
    • deprecated [since 2014-10] Use [Float.frexp]
    val ldexp : float -> int -> float
    • deprecated [since 2014-10] Use [Float.ldexp]
    val modf : float -> float * float
    • deprecated [since 2014-10] Use [Float.modf]
    val float : int -> float
    val float_of_int : int -> float
    val truncate : float -> int
    • deprecated [since 2014-10] Use [Float.iround_towards_zero_exn]
    val int_of_float : float -> int
    val infinity : float
    • deprecated [since 2014-10] Use [Float.infinity]
    val neg_infinity : float
    • deprecated [since 2014-10] Use [Float.neg_infinity]
    val nan : float
    • deprecated [since 2014-10] Use [Float.nan]
    val max_float : float
    • deprecated [since 2014-10] Use [Float.max_value]
    val min_float : float
    • deprecated [since 2014-10] Use [Float.min_value]
    val epsilon_float : float
    • deprecated [since 2014-10] Use [Float.epsilon_float]
    type fpclass = Caml.fpclass =
    1. | FP_normal
    2. | FP_subnormal
    3. | FP_zero
    4. | FP_infinite
    5. | FP_nan
    val classify_float : float -> fpclass
    • deprecated [since 2014-10] Use [Float.classify]
    val (^) : string -> string -> string
    val int_of_char : char -> int
    val char_of_int : int -> char
    val ignore : 'a -> unit
    val string_of_bool : bool -> string
    val bool_of_string : string -> bool
    val string_of_int : int -> string
    val int_of_string : string -> int
    val string_of_float : float -> string
    val float_of_string : string -> float
    val fst : ('a * 'b) -> 'a
    val snd : ('a * 'b) -> 'b
    type in_channel = Caml.in_channel
    • deprecated [since 2016-04] Use [In_channel.t]
    type out_channel = Caml.out_channel
    • deprecated [since 2016-04] Use [Out_channel.t]
    val stdin : Caml.in_channel
    • deprecated [since 2016-04] Use [In_channel.stdin]
    val stdout : Caml.out_channel
    val stderr : Caml.out_channel
    val print_char : char -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_char stdout]
    val print_string : string -> unit
    val print_bytes : bytes -> unit
    • deprecated [since 2016-04] Core doesn't support [bytes] yet.
    val print_int : int -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_string stdout]
    val print_float : float -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_string stdout]
    val print_endline : string -> unit
    val print_newline : unit -> unit
    • deprecated [since 2016-04] Use [Out_channel.newline stdout]
    val prerr_char : char -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_char stderr]
    val prerr_string : string -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
    val prerr_bytes : bytes -> unit
    • deprecated [since 2016-04] Core doesn't support [bytes] yet
    val prerr_int : int -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
    val prerr_float : float -> unit
    • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
    val prerr_endline : string -> unit
    val prerr_newline : unit -> unit
    • deprecated [since 2016-04] Use [Out_channel.newline stderr]
    val read_line : unit -> string
    • deprecated [since 2016-04] Use +IStd (infer.IStdlib.IStd)

      Module IStdlib.IStd

      include module type of struct include Core end
      module Applicative : sig ... end
      module Arg : sig ... end
      module Array : sig ... end
      module Avltree : sig ... end
      module Backtrace : sig ... end
      module Bag : sig ... end
      module Bigbuffer : sig ... end
      module Bigstring : sig ... end
      module Bigsubstring : sig ... end
      module Bin_prot : sig ... end
      module Binable : sig ... end
      module Binary_searchable : sig ... end
      module Blang : sig ... end
      module Blit : sig ... end
      module Bool : sig ... end
      module Bounded_index : sig ... end
      module Buffer = Base.Buffer
      module Byte_units : sig ... end
      module Bytes : sig ... end
      module Caml = Core.Caml
      module Char : sig ... end
      module Command : sig ... end
      module Comparable : sig ... end
      module Comparator : sig ... end
      module Comparisons : sig ... end
      module Container : sig ... end
      module Container_intf : sig ... end
      module Continue_or_stop : sig ... end
      module Core_kernel_stable : sig ... end
      module Core_stable : sig ... end
      module Date : sig ... end
      module Day_of_week : sig ... end
      module Debug : sig ... end
      module Deque : sig ... end
      module Deriving_hash : sig ... end
      module Digest : sig ... end
      module Doubly_linked : sig ... end
      module Either : sig ... end
      module Ephemeron : sig ... end
      module Equal : sig ... end
      module Error : sig ... end
      module Exn = Base.Exn
      module Expect_test_config = Expect_test_config
      module Fdeque : sig ... end
      module Field : sig ... end
      module Float : sig ... end
      module Float_with_finite_only_serialization : sig ... end
      module Floatable : sig ... end
      module Fn : sig ... end
      module Formatter : sig ... end
      module Fqueue : sig ... end
      module Gc : sig ... end
      module Hash : sig ... end
      module Hash_queue : sig ... end
      module Hash_set : sig ... end
      module Hashable : sig ... end
      module Hashtbl : sig ... end
      module Hashtbl_intf : sig ... end
      module Heap_block : sig ... end
      module Hexdump : sig ... end
      module Hexdump_intf : sig ... end
      module Host_and_port : sig ... end
      module Identifiable : sig ... end
      module Immediate_option : sig ... end
      module Immediate_option_intf : sig ... end
      module In_channel : sig ... end
      module Indexed_container : sig ... end
      module Info : sig ... end
      module Int : sig ... end
      module Int32 : sig ... end
      module Int63 : sig ... end
      module Int64 : sig ... end
      module Int_conversions : sig ... end
      module Int_intf : sig ... end
      module Int_math : sig ... end
      module Intable : sig ... end
      module Interfaces : sig ... end
      module Invariant : sig ... end
      module Lazy : sig ... end
      module Linked_queue : sig ... end
      module List : sig ... end
      module Map : sig ... end
      module Map_intf : sig ... end
      module Maybe_bound : sig ... end
      module Md5 : sig ... end
      module Memo : sig ... end
      module Monad : sig ... end
      module Month : sig ... end
      module Mutex = Core.Mutex
      module Nativeint : sig ... end
      module No_polymorphic_compare : sig ... end
      module Nothing : sig ... end
      module Only_in_test : sig ... end
      module Option : sig ... end
      module Option_array : sig ... end
      module Optional_syntax : sig ... end
      module Optional_syntax_intf : sig ... end
      module Or_error : sig ... end
      module Ordered_collection_common : sig ... end
      module Ordering : sig ... end
      module Out_channel : sig ... end
      module Percent : sig ... end
      module Perms : sig ... end
      module Pid : sig ... end
      module Poly : sig ... end
      module Polymorphic_compare = Poly
      module Popcount = Base.Popcount
      module Pretty_printer : sig ... end
      module Printexc : sig ... end
      module Printf : sig ... end
      module Queue : sig ... end
      module Quickcheck : sig ... end
      module Quickcheck_intf : sig ... end
      module Quickcheckable : sig ... end
      module Random = Base.Random
      module Ref : sig ... end
      module Result : sig ... end
      module Robustly_comparable : sig ... end
      module Sequence : sig ... end
      module Set : sig ... end
      module Set_intf : sig ... end
      module Set_once : sig ... end
      module Sexp_maybe : sig ... end
      module Sexp : sig ... end
      module Sexpable : sig ... end
      module Sign : sig ... end
      module Signal : sig ... end
      module Sign_or_nan : sig ... end
      module Source_code_position : sig ... end
      module Splittable_random = Splittable_random
      module Stable_comparable : sig ... end
      module Stable_unit_test : sig ... end
      module Stack : sig ... end
      module Staged = Base.Staged
      module String : sig ... end
      module String_id : sig ... end
      module Stringable : sig ... end
      module Substring : sig ... end
      module Substring_intf : sig ... end
      module Thread = Core.Thread
      module Time : sig ... end
      module Time_ns : sig ... end
      module Tuple : sig ... end
      module Tuple2 = Tuple.T2
      module Tuple3 = Tuple.T3
      module Type_equal : sig ... end
      module Type_immediacy : sig ... end
      module Uchar : sig ... end
      module Uniform_array : sig ... end
      module Union_find : sig ... end
      module Unique_id : sig ... end
      module Unit : sig ... end
      module Unit_of_time : sig ... end
      module Univ_map : sig ... end
      module Validate = Validate
      module Validated : sig ... end
      module Variant : sig ... end
      module Weak = Stdlib.Weak
      module With_return : sig ... end
      module Word_size : sig ... end
      module type Unique_id = Core.Unique_id
      module type T = Core.T
      module type T1 = Core.T1
      module type T2 = Core.T2
      module type T3 = Core.T3
      module type T_bin = Core.T_bin
      val raise : exn -> 'a
      val raise_notrace : exn -> 'a
      exception Exit
      val (==) : 'a -> 'a -> bool
      • deprecated [since 2014-10] Use [phys_equal]
      val (!=) : 'a -> 'a -> bool
      • deprecated [since 2014-10] Use [phys_equal]
      val not : bool -> bool
      val (&&) : bool -> bool -> bool
      val (&) : bool -> bool -> bool
      • deprecated [since 2010-01] {!Caml.( && )} should be used instead.
      val (||) : bool -> bool -> bool
      val or : bool -> bool -> bool
      • deprecated [since 2010-01] {!Caml.( || )} should be used instead.
      val __LOC__ : string
      val __FILE__ : string
      val __LINE__ : int
      val __MODULE__ : string
      val __POS__ : string * int * int * int
      val __FUNCTION__ : string
      val __LOC_OF__ : 'a -> string * 'a
      val __LINE_OF__ : 'a -> int * 'a
      val __POS_OF__ : 'a -> (string * int * int * int) * 'a
      val (|>) : 'a -> ('a -> 'b) -> 'b
      val (@@) : ('a -> 'b) -> 'a -> 'b
      val (~-) : int -> int
      val (~+) : int -> int
      val succ : int -> int
      val pred : int -> int
      val (+) : int -> int -> int
      val (-) : int -> int -> int
      val (*) : int -> int -> int
      val (/) : int -> int -> int
      val (mod) : int -> int -> int
      val abs : int -> int
      val max_int : int
      • deprecated [since 2014-10] Use [Int.max_value]
      val min_int : int
      • deprecated [since 2014-10] Use [Int.min_value]
      val (land) : int -> int -> int
      val (lor) : int -> int -> int
      val (lxor) : int -> int -> int
      val lnot : int -> int
      val (lsl) : int -> int -> int
      val (lsr) : int -> int -> int
      val (asr) : int -> int -> int
      val (~-.) : float -> float
      val (~+.) : float -> float
      val (+.) : float -> float -> float
      val (-.) : float -> float -> float
      val (*.) : float -> float -> float
      val (/.) : float -> float -> float
      val (**) : float -> float -> float
      val sqrt : float -> float
      val exp : float -> float
      val log : float -> float
      val log10 : float -> float
      • deprecated [since 2016-07] Use [Float.log10]
      val expm1 : float -> float
      • deprecated [since 2016-07] Use [Float.expm1]
      val log1p : float -> float
      • deprecated [since 2016-07] Use [Float.log1p]
      val cos : float -> float
      • deprecated [since 2016-07] Use [Float.cos]
      val sin : float -> float
      • deprecated [since 2016-07] Use [Float.sin]
      val tan : float -> float
      • deprecated [since 2016-07] Use [Float.tan]
      val acos : float -> float
      • deprecated [since 2016-07] Use [Float.acos]
      val asin : float -> float
      • deprecated [since 2016-07] Use [Float.asin]
      val atan : float -> float
      • deprecated [since 2016-07] Use [Float.atan]
      val atan2 : float -> float -> float
      • deprecated [since 2016-07] Use [Float.atan2]
      val hypot : float -> float -> float
      • deprecated [since 2016-07] Use [Float.hypot]
      val cosh : float -> float
      • deprecated [since 2016-07] Use [Float.cosh]
      val sinh : float -> float
      • deprecated [since 2016-07] Use [Float.sinh]
      val tanh : float -> float
      • deprecated [since 2016-07] Use [Float.tanh]
      val ceil : float -> float
      • deprecated [since 2014-10] Use [Float.round_up]
      val floor : float -> float
      • deprecated [since 2014-10] Use [Float.round_down]
      val abs_float : float -> float
      • deprecated [since 2014-10] Use [Float.abs]
      val copysign : float -> float -> float
      • deprecated [since 2016-07] Use [Float.copysign]
      val mod_float : float -> float -> float
      • deprecated [since 2014-10] Use [Float.mod_float]
      val frexp : float -> float * int
      • deprecated [since 2014-10] Use [Float.frexp]
      val ldexp : float -> int -> float
      • deprecated [since 2014-10] Use [Float.ldexp]
      val modf : float -> float * float
      • deprecated [since 2014-10] Use [Float.modf]
      val float : int -> float
      val float_of_int : int -> float
      val truncate : float -> int
      • deprecated [since 2014-10] Use [Float.iround_towards_zero_exn]
      val int_of_float : float -> int
      val infinity : float
      • deprecated [since 2014-10] Use [Float.infinity]
      val neg_infinity : float
      • deprecated [since 2014-10] Use [Float.neg_infinity]
      val nan : float
      • deprecated [since 2014-10] Use [Float.nan]
      val max_float : float
      • deprecated [since 2014-10] Use [Float.max_value]
      val min_float : float
      • deprecated [since 2014-10] Use [Float.min_value]
      val epsilon_float : float
      • deprecated [since 2014-10] Use [Float.epsilon_float]
      type fpclass = Caml.fpclass =
      1. | FP_normal
      2. | FP_subnormal
      3. | FP_zero
      4. | FP_infinite
      5. | FP_nan
      val classify_float : float -> fpclass
      • deprecated [since 2014-10] Use [Float.classify]
      val (^) : string -> string -> string
      val int_of_char : char -> int
      val char_of_int : int -> char
      val ignore : 'a -> unit
      val string_of_bool : bool -> string
      val bool_of_string : string -> bool
      val string_of_int : int -> string
      val int_of_string : string -> int
      val string_of_float : float -> string
      val float_of_string : string -> float
      val fst : ('a * 'b) -> 'a
      val snd : ('a * 'b) -> 'b
      type in_channel = Caml.in_channel
      • deprecated [since 2016-04] Use [In_channel.t]
      type out_channel = Caml.out_channel
      • deprecated [since 2016-04] Use [Out_channel.t]
      val stdin : Caml.in_channel
      • deprecated [since 2016-04] Use [In_channel.stdin]
      val stdout : Caml.out_channel
      val stderr : Caml.out_channel
      val print_char : char -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_char stdout]
      val print_string : string -> unit
      val print_bytes : bytes -> unit
      • deprecated [since 2016-04] Core doesn't support [bytes] yet.
      val print_int : int -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string stdout]
      val print_float : float -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string stdout]
      val print_endline : string -> unit
      val print_newline : unit -> unit
      • deprecated [since 2016-04] Use [Out_channel.newline stdout]
      val prerr_char : char -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_char stderr]
      val prerr_string : string -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
      val prerr_bytes : bytes -> unit
      • deprecated [since 2016-04] Core doesn't support [bytes] yet
      val prerr_int : int -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
      val prerr_float : float -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string stderr]
      val prerr_endline : string -> unit
      val prerr_newline : unit -> unit
      • deprecated [since 2016-04] Use [Out_channel.newline stderr]
      val read_line : unit -> string
      • deprecated [since 2016-04] Use [Out_channel.(flush stdout); In_channel.(input_line_exn stdin)]
      val read_int : unit -> int
      • deprecated [since 2016-04] Use [Out_channel.(flush stdout); Int.of_string In_channel.(input_line_exn stdin)]
      val read_float : unit -> float
      • deprecated [since 2016-04] Use [Out_channel.(flush stdout); Float.of_string In_channel.(input_line_exn stdin)]
      type open_flag = Caml.open_flag =
      1. | Open_rdonly
      2. | Open_wronly
      3. | Open_append
      4. | Open_creat
      5. | Open_trunc
      6. | Open_excl
      7. | Open_binary
      8. | Open_text
      9. | Open_nonblock
      • deprecated [since 2016-04] Use [In_channel.create] and [Out_channel.create]
      val open_out : string -> Caml.out_channel
      • deprecated [since 2016-04] Use [Out_channel.create]
      val open_out_bin : string -> Caml.out_channel
      • deprecated [since 2016-04] Use [Out_channel.create]
      val open_out_gen : Caml.open_flag list -> int -> string -> Caml.out_channel
      • deprecated [since 2016-04] Use [Out_channel.create]
      val flush : Caml.out_channel -> unit
      • deprecated [since 2016-04] Use [Out_channel.flush]
      val flush_all : unit -> unit
      • deprecated [since 2016-04]
      val output_char : Caml.out_channel -> char -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_char]
      val output_string : Caml.out_channel -> string -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_string]
      val output_bytes : Caml.out_channel -> bytes -> unit
      • deprecated [since 2016-04] Core doesn't yet support bytes.
      val output : Caml.out_channel -> bytes -> int -> int -> unit
      • deprecated [since 2016-04] Core doesn't yet support bytes.
      val output_substring : Caml.out_channel -> string -> int -> int -> unit
      • deprecated [since 2016-04] Use [Out_channel.output]
      val output_byte : Caml.out_channel -> int -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_byte]
      val output_binary_int : Caml.out_channel -> int -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_binary_int]
      val output_value : Caml.out_channel -> 'a -> unit
      • deprecated [since 2016-04] Use [Out_channel.output_value]
      val seek_out : Caml.out_channel -> int -> unit
      • deprecated [since 2014-10] Use [Out_channel.seek]
      val pos_out : Caml.out_channel -> int
      • deprecated [since 2014-10] Use [Out_channel.pos]
      val out_channel_length : Caml.out_channel -> int
      • deprecated [since 2014-10] Use [Out_channel.length]
      val close_out : Caml.out_channel -> unit
      • deprecated [since 2014-10] Use [Out_channel.close]
      val close_out_noerr : Caml.out_channel -> unit
      • deprecated [since 2016-04] Use [Out_channel.close] and catch exceptions
      val set_binary_mode_out : Caml.out_channel -> bool -> unit
      • deprecated [since 2016-04] Use [Out_channel.set_binary_mode]
      val open_in : string -> Caml.in_channel
      • deprecated [since 2016-04] Use [In_channel.create]
      val open_in_bin : string -> Caml.in_channel
      • deprecated [since 2016-04] Use [In_channel.create]
      val open_in_gen : Caml.open_flag list -> int -> string -> Caml.in_channel
      • deprecated [since 2016-04] Use [In_channel.create]
      val input_char : Caml.in_channel -> char
      • deprecated [since 2016-04] Use [In_channel.input_char]
      val input_line : Caml.in_channel -> string
      • deprecated [since 2016-04] Use [In_channel.input_line]
      val input : Caml.in_channel -> bytes -> int -> int -> int
      • deprecated [since 2016-04] Core doesn't yet support bytes.
      val really_input : Caml.in_channel -> bytes -> int -> int -> unit
      • deprecated [since 2016-04] Core doesn't yet support bytes.
      val really_input_string : Caml.in_channel -> int -> string
      • deprecated [since 2016-04] Use [In_channel.really_input_exn ~pos:0]
      val input_byte : Caml.in_channel -> int
      • deprecated [since 2016-04] Use [In_channel.input_byte]
      val input_binary_int : Caml.in_channel -> int
      • deprecated [since 2016-04] Use [In_channel.input_binary_int]
      val input_value : Caml.in_channel -> 'a
      • deprecated [since 2016-04] Use [In_channel.unsafe_input_value]
      val seek_in : Caml.in_channel -> int -> unit
      • deprecated [since 2014-10] Use [In_channel.seek]
      val pos_in : Caml.in_channel -> int
      • deprecated [since 2014-10] Use [In_channel.pos]
      val in_channel_length : Caml.in_channel -> int
      • deprecated [since 2014-10] Use [In_channel.length]
      val close_in : Caml.in_channel -> unit
      • deprecated [since 2014-10] Use [In_channel.close]
      val close_in_noerr : Caml.in_channel -> unit
      • deprecated [since 2016-04] Use [In_channel.close] and catch exceptions
      val set_binary_mode_in : Caml.in_channel -> bool -> unit
      • deprecated [since 2016-04] Use [In_channel.set_binary_mode]
      module LargeFile : sig ... end
      type !'a ref = 'a Caml.ref = {
      1. mutable contents : 'a;
      }
      val ref : 'a -> 'a ref
      val (!) : 'a ref -> 'a
      val (:=) : 'a ref -> 'a -> unit
      val incr : int ref -> unit
      val decr : int ref -> unit
      type (!'a, !'b) result = ('a, 'b) Caml.result =
      1. | Ok of 'a
      2. | Error of 'b
      type (!'a, !'b, !'c, !'d, !'e, !'f) format6 = @@ -83,29 +83,29 @@ 'a
      val const : 'a -> 'b -> 'a
      val eprintf : ('a, Stdlib.out_channel, Core__.Import.unit) Core__.Import.format -> 'a
      val error : - ?here:Base__.Source_code_position0.t -> - ?strict:unit -> + ?here:Base__.Source_code_position0.t -> + ?strict:unit -> string -> 'a -> ('a -> Base__.Sexp.t) -> 'b Core__.Or_error.t
      val error_s : Base__.Sexp.t -> 'a Core__.Or_error.t
      val failwithp : - ?strict:Core__.Import.unit -> + ?strict:Core__.Import.unit -> Core__.Source_code_position.t -> Core__.Import.string -> 'a -> ('a -> Core__.Sexp.t) -> 'b
      • deprecated [since 2020-03] Use [failwiths] instead.
      val failwiths : - ?strict:Core__.Import.unit -> - here:Stdlib.Lexing.position -> + ?strict:Core__.Import.unit -> + here:Stdlib.Lexing.position -> Core__.Import.string -> 'a -> ('a -> Base.Sexp.t) -> 'b
      val force : 'a Base.Lazy.t -> 'a
      val fprintf : Stdlib.out_channel -> ('a, Stdlib.out_channel, Core__.Import.unit) Core__.Import.format -> - 'a
      val ident : 'a -> 'a
      • deprecated [since 2021-08] Use [Fn.id] instead.
      val ifprintf : 'a -> ('b, 'a, 'c, unit) Stdlib.format4 -> 'b
      val is_none : 'a option -> bool
      val is_some : 'a option -> bool
      val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) Stdlib.format4 -> 'b
      val ok_exn : 'a Core__.Or_error.t -> 'a
      val phys_equal : 'a -> 'a -> bool
      val phys_same : 'a -> 'b -> bool
      val print_s : ?mach:Base.unit -> Base.Sexp.t -> Base.unit
      val eprint_s : ?mach:Base.unit -> Base.Sexp.t -> Base.unit
      val printf : + 'a
      val ident : 'a -> 'a
      • deprecated [since 2021-08] Use [Fn.id] instead.
      val ifprintf : 'a -> ('b, 'a, 'c, unit) Stdlib.format4 -> 'b
      val is_none : 'a option -> bool
      val is_some : 'a option -> bool
      val ksprintf : (string -> 'a) -> ('b, unit, string, 'a) Stdlib.format4 -> 'b
      val ok_exn : 'a Core__.Or_error.t -> 'a
      val phys_equal : 'a -> 'a -> bool
      val phys_same : 'a -> 'b -> bool
      val print_s : ?mach:Base.unit -> Base.Sexp.t -> Base.unit
      val eprint_s : ?mach:Base.unit -> Base.Sexp.t -> Base.unit
      val printf : ('a, Stdlib.out_channel, Core__.Import.unit) Core__.Import.format -> - 'a
      val protect : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a
      val protectx : f:('a -> 'b) -> 'a -> finally:('a -> unit) -> 'b
      val raise_s : Base__.Sexp.t -> 'a
      val round : ?dir:[ `Down | `Nearest | `Up | `Zero ] -> float -> float
      val (**.) : Base__Float.t -> Base__Float.t -> Base__Float.t
      val (%.) : Base__Float.t -> Base__Float.t -> Base__Float.t
      val sprintf : ('a, unit, string) Stdlib.format -> 'a
      val stage : 'a -> 'a Core__.Import.Staged.t
      val unstage : 'a Core__.Import.Staged.t -> 'a
      val with_return : ('a Core__.Import.With_return.return -> 'a) -> 'a
      val with_return_option : + 'a
      val protect : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a
      val protectx : f:('a -> 'b) -> 'a -> finally:('a -> unit) -> 'b
      val raise_s : Base__.Sexp.t -> 'a
      val round : ?dir:[ `Down | `Nearest | `Up | `Zero ] -> float -> float
      val (**.) : Base__Float.t -> Base__Float.t -> Base__Float.t
      val (%.) : Base__Float.t -> Base__Float.t -> Base__Float.t
      val sprintf : ('a, unit, string) Stdlib.format -> 'a
      val stage : 'a -> 'a Core__.Import.Staged.t
      val unstage : 'a Core__.Import.Staged.t -> 'a
      val with_return : ('a Core__.Import.With_return.return -> 'a) -> 'a
      val with_return_option : ('a Core__.Import.With_return.return -> unit) -> 'a option
      module Typerep : sig ... end
      val typerep_of_int63 : Base.Int63.t Typerep.t
      type tuple0 = Typerep_lib__Std_internal.tuple0
      val value_tuple0 : tuple0
      val typerep_of_function : 'a Typerep.t -> 'b Typerep.t -> ('a -> 'b) Typerep.t
      val typerep_of_tuple0 : tuple0 Typerep.t
      val typerep_of_tuple2 : 'a Typerep.t -> 'b Typerep.t -> ('a * 'b) Typerep.t
      val typerep_of_tuple3 : 'a Typerep.t -> @@ -383,4 +383,4 @@ (Core__.Import.int -> float_array) Bin_prot.Read.reader
      val bin_reader_float_array : float_array Bin_prot.Type_class.reader
      val bin_float_array : float_array Bin_prot.Type_class.t
      val compare_float_array : float_array -> float_array -> Core__.Import.int
      val sexp_of_float_array : float_array -> Sexplib0.Sexp.t
      val float_array_of_sexp : Sexplib0.Sexp.t -> float_array
      val float_array_sexp_grammar : float_array Sexplib0.Sexp_grammar.t
      val typerep_of_float_array : float_array Typerep_lib.Std.Typerep.t
      val typename_of_float_array : float_array Typerep_lib.Std.Typename.t
      val sexp_of_exn : Core__.Import.Exn.t -> Sexplib0.Sexp.t
      exception Not_found
      • deprecated [since 2018-02] Instead of raising [Not_found], consider using [raise_s] with an informative error message. If code needs to distinguish [Not_found] from other exceptions, please change it to handle both [Not_found] and [Not_found_s]. Then, instead -of raising [Not_found], raise [Not_found_s] with an informative error message.
      exception Not_found_s of Sexplib0.Sexp.t
      type !'a _maybe_bound = 'a Maybe_bound.t =
      1. | Incl of 'a
      2. | Excl of 'a
      3. | Unbounded
      val am_running_inline_test : bool
      val am_running_test : bool
      val does_raise : (unit -> 'a) -> bool
      val sec : Core__.Import.float -> Core__.Time_float.Span.t
      val (^/) : Core__.Import.string -> Core__.Import.string -> Core__.Import.string
      module Core_private = Core.Core_private
      module Core_kernel_private = Core_private
      module Unix = Core_unix
      module Filename : sig ... end
      module Sys : sig ... end
      val compare : No_polymorphic_compare.compare
      val equal : No_polymorphic_compare.compare
      val (=) : No_polymorphic_compare.compare
      val failwith : 'a -> [ `use_Logging_die_instead ]
      val failwithf : 'a -> [ `use_Logging_die_instead ]
      val invalid_arg : 'a -> [ `use_Logging_die_instead ]
      val invalid_argf : 'a -> [ `use_Logging_die_instead ]
      val exit : [> `In_general_prefer_using_Logging_exit_over_Pervasives_exit ]
      module ANSITerminal : module type of ANSITerminal
      \ No newline at end of file +of raising [Not_found], raise [Not_found_s] with an informative error message.
    exception Not_found_s of Sexplib0.Sexp.t
    type !'a _maybe_bound = 'a Maybe_bound.t =
    1. | Incl of 'a
    2. | Excl of 'a
    3. | Unbounded
    val am_running_inline_test : bool
    val am_running_test : bool
    val does_raise : (unit -> 'a) -> bool
    val sec : Core__.Import.float -> Core__.Time_float.Span.t
    val (^/) : Core__.Import.string -> Core__.Import.string -> Core__.Import.string
    module Core_private = Core.Core_private
    module Core_kernel_private = Core_private
    module Unix = Core_unix
    module Str = Re.Str
    module Filename : sig ... end
    module Sys : sig ... end
    val compare : No_polymorphic_compare.compare
    val equal : No_polymorphic_compare.compare
    val (=) : No_polymorphic_compare.compare
    val failwith : 'a -> [ `use_Logging_die_instead ]
    val failwithf : 'a -> [ `use_Logging_die_instead ]
    val invalid_arg : 'a -> [ `use_Logging_die_instead ]
    val invalid_argf : 'a -> [ `use_Logging_die_instead ]
    val exit : [> `In_general_prefer_using_Logging_exit_over_Pervasives_exit ]
    module ANSITerminal : module type of ANSITerminal
    diff --git a/website/static/odoc/next/infer/IStdlib/ISys/index.html b/website/static/odoc/next/infer/IStdlib/ISys/index.html index bbae1c16280..2e729664af2 100644 --- a/website/static/odoc/next/infer/IStdlib/ISys/index.html +++ b/website/static/odoc/next/infer/IStdlib/ISys/index.html @@ -1,2 +1,2 @@ -ISys (infer.IStdlib.ISys)

    Module IStdlib.ISys

    val file_exists : ?follow_symlinks:bool -> string -> bool

    Similar to Sys.file_exists_exn, but it returns false when the result is unknown, instead of raising an exception. follow_symlinks is true by default.

    \ No newline at end of file +ISys (infer.IStdlib.ISys)

    Module IStdlib.ISys

    val file_exists : ?follow_symlinks:bool -> string -> bool

    Similar to Sys.file_exists_exn, but it returns false when the result is unknown, instead of raising an exception. follow_symlinks is true by default.

    diff --git a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/Repr/index.html b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/Repr/index.html index aa9aacf3605..a0ec0f26677 100644 --- a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/Repr/index.html +++ b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/Repr/index.html @@ -1,2 +1,2 @@ -Repr (infer.IStdlib.ImperativeUnionFind.Make.Repr)

    Module Make.Repr

    type t = private Set.elt
    \ No newline at end of file +Repr (infer.IStdlib.ImperativeUnionFind.Make.Repr)

    Module Make.Repr

    type t = private Set.elt
    diff --git a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/argument-1-Set/index.html b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/argument-1-Set/index.html index c3e0b338293..5c3439160d4 100644 --- a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/argument-1-Set/index.html +++ b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/argument-1-Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IStdlib.ImperativeUnionFind.Make.Set)

    Parameter Make.Set

    type elt
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val merge : from:t -> to_:t -> unit
    \ No newline at end of file +Set (infer.IStdlib.ImperativeUnionFind.Make.Set)

    Parameter Make.Set

    type elt
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val merge : from:t -> to_:t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/index.html b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/index.html index 25695a66cf8..147159fd100 100644 --- a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib.ImperativeUnionFind.Make)

    Module ImperativeUnionFind.Make

    Parameters

    module Set : Set

    Signature

    module Repr : sig ... end
    type t
    val create : unit -> t
    val find : t -> Set.elt -> Repr.t
    val union : t -> Set.elt -> Set.elt -> (Set.elt * Set.elt) option

    union t e1 e2 returns None if e1 and e2 were already in the same set, Some (a, b) if a is merged into b (were (a, b) is either (e1, e2) or (e2, e1)).

    val find_create_set : t -> Repr.t -> Set.t
    val find_set : t -> Repr.t -> Set.t option
    val fold_sets : (t, Repr.t * Set.t, 'accum) IStdlib.IStd.Container.fold

    It is safe to call find or union while folding.

    \ No newline at end of file +Make (infer.IStdlib.ImperativeUnionFind.Make)

    Module ImperativeUnionFind.Make

    Parameters

    module Set : Set

    Signature

    module Repr : sig ... end
    type t
    val create : unit -> t
    val find : t -> Set.elt -> Repr.t
    val union : t -> Set.elt -> Set.elt -> (Set.elt * Set.elt) option

    union t e1 e2 returns None if e1 and e2 were already in the same set, Some (a, b) if a is merged into b (were (a, b) is either (e1, e2) or (e2, e1)).

    val find_create_set : t -> Repr.t -> Set.t
    val find_set : t -> Repr.t -> Set.t option
    val fold_sets : (t, Repr.t * Set.t, 'accum) IStdlib.IStd.Container.fold

    It is safe to call find or union while folding.

    diff --git a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/index.html b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/index.html index 4871383c4e0..bb981bfa549 100644 --- a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/index.html +++ b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/index.html @@ -1,2 +1,2 @@ -ImperativeUnionFind (infer.IStdlib.ImperativeUnionFind)

    Module IStdlib.ImperativeUnionFind

    module type Set = sig ... end
    module Make (Set : Set) : sig ... end
    \ No newline at end of file +ImperativeUnionFind (infer.IStdlib.ImperativeUnionFind)

    Module IStdlib.ImperativeUnionFind

    module type Set = sig ... end
    module Make (Set : Set) : sig ... end
    diff --git a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/module-type-Set/index.html b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/module-type-Set/index.html index b43929b0236..eb89ae90bfc 100644 --- a/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/module-type-Set/index.html +++ b/website/static/odoc/next/infer/IStdlib/ImperativeUnionFind/module-type-Set/index.html @@ -1,2 +1,2 @@ -Set (infer.IStdlib.ImperativeUnionFind.Set)

    Module type ImperativeUnionFind.Set

    type elt
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val merge : from:t -> to_:t -> unit
    \ No newline at end of file +Set (infer.IStdlib.ImperativeUnionFind.Set)

    Module type ImperativeUnionFind.Set

    type elt
    val compare_elt : elt -> elt -> int
    val equal_elt : elt -> elt -> bool
    type t
    val create : elt -> t
    val compare_size : t -> t -> int
    val merge : from:t -> to_:t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/IntMap/index.html b/website/static/odoc/next/infer/IStdlib/IntMap/index.html index 0e2417ccd4f..dc565c5bd3b 100644 --- a/website/static/odoc/next/infer/IStdlib/IntMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/IntMap/index.html @@ -1,6 +1,6 @@ -IntMap (infer.IStdlib.IntMap)

    Module IStdlib.IntMap

    include Core.Caml.Map.S with type key = int
    type key = int
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IntMap (infer.IStdlib.IntMap)

    Module IStdlib.IntMap

    include Core.Caml.Map.S with type key = int
    type key = int
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    \ No newline at end of file + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    diff --git a/website/static/odoc/next/infer/IStdlib/IntSet/index.html b/website/static/odoc/next/infer/IStdlib/IntSet/index.html index cc31d951174..b546cbdb823 100644 --- a/website/static/odoc/next/infer/IStdlib/IntSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/IntSet/index.html @@ -1,2 +1,2 @@ -IntSet (infer.IStdlib.IntSet)

    Module IStdlib.IntSet

    module F = Stdlib.Format
    include Core.Caml.Set.S with type elt = int
    type elt = int
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +IntSet (infer.IStdlib.IntSet)

    Module IStdlib.IntSet

    module F = Stdlib.Format
    include Core.Caml.Set.S with type elt = int
    type elt = int
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/Make/index.html b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/Make/index.html index d2bddceeb75..623e80426a0 100644 --- a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/Make/index.html @@ -1,7 +1,7 @@ -Make (infer.IStdlib.LRUHashtbl.Make)

    Module LRUHashtbl.Make

    Parameters

    module Key : IStdlib.IStd.Caml.Hashtbl.HashedType

    Signature

    type key = Key.t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : - pp_key:(Stdlib.Format.formatter -> key -> unit) -> - pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> +Make (infer.IStdlib.LRUHashtbl.Make)

    Module LRUHashtbl.Make

    Parameters

    module Key : IStdlib.IStd.Caml.Hashtbl.HashedType

    Signature

    type key = Key.t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : + pp_key:(Stdlib.Format.formatter -> key -> unit) -> + pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t -> - unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    \ No newline at end of file + unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    diff --git a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/index.html b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/index.html index a96c1a339eb..008a5791f82 100644 --- a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/index.html +++ b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/index.html @@ -1,4 +1,4 @@ -LRUHashtbl (infer.IStdlib.LRUHashtbl)

    Module IStdlib.LRUHashtbl

    Hash table the size of which is limited by LRU

    module type S = sig ... end
    module Make +LRUHashtbl (infer.IStdlib.LRUHashtbl)

    Module IStdlib.LRUHashtbl

    Hash table the size of which is limited by LRU

    module type S = sig ... end
    module Make (Key : IStdlib.IStd.Caml.Hashtbl.HashedType) : - S with type key = Key.t
    \ No newline at end of file + S with type key = Key.t
    diff --git a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/module-type-S/index.html index 2c03d3bae0a..6ab7acde386 100644 --- a/website/static/odoc/next/infer/IStdlib/LRUHashtbl/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib/LRUHashtbl/module-type-S/index.html @@ -1,7 +1,7 @@ -S (infer.IStdlib.LRUHashtbl.S)

    Module type LRUHashtbl.S

    type key
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : - pp_key:(Stdlib.Format.formatter -> key -> unit) -> - pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> +S (infer.IStdlib.LRUHashtbl.S)

    Module type LRUHashtbl.S

    type key
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : + pp_key:(Stdlib.Format.formatter -> key -> unit) -> + pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t -> - unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    \ No newline at end of file + unit
    val bindings : 'a t -> (key * 'a) list

    visible for testing mainly; makes linear number of hashtable lookups

    diff --git a/website/static/odoc/next/infer/IStdlib/PartialOrder/index.html b/website/static/odoc/next/infer/IStdlib/PartialOrder/index.html index 4519793b728..643c6f13a6a 100644 --- a/website/static/odoc/next/infer/IStdlib/PartialOrder/index.html +++ b/website/static/odoc/next/infer/IStdlib/PartialOrder/index.html @@ -1,6 +1,6 @@ -PartialOrder (infer.IStdlib.PartialOrder)

    Module IStdlib.PartialOrder

    type total = [
    1. | `LeftSmallerThanRight
    2. | `Equal
    3. | `RightSmallerThanLeft
    ]
    type t = [
    1. | total
    2. | `NotComparable
    ]
    val join : [< t ] -> [< t ] -> t
    type 'a xcompare = lhs:'a -> rhs:'a -> t
    type 'a xcompare_total = lhs:'a -> rhs:'a -> total
    val of_compare : compare:('a -> 'a -> int) -> 'a xcompare_total
    val of_le : le:('a -> 'a -> bool) -> 'a xcompare
    val of_opt : xcompare_elt:'a xcompare -> 'a option xcompare
    val container : - fold:('t, 'a * 'a, t) IStdlib.IStd.Container.fold -> +PartialOrder (infer.IStdlib.PartialOrder)

    Module IStdlib.PartialOrder

    type total = [
    1. | `LeftSmallerThanRight
    2. | `Equal
    3. | `RightSmallerThanLeft
    ]
    type t = [
    1. | total
    2. | `NotComparable
    ]
    val join : [< t ] -> [< t ] -> t
    type 'a xcompare = lhs:'a -> rhs:'a -> t
    type 'a xcompare_total = lhs:'a -> rhs:'a -> total
    val of_compare : compare:('a -> 'a -> int) -> 'a xcompare_total
    val of_le : le:('a -> 'a -> bool) -> 'a xcompare
    val of_opt : xcompare_elt:'a xcompare -> 'a option xcompare
    val container : + fold:('t, 'a * 'a, t) IStdlib.IStd.Container.fold -> 't -> - xcompare_elt:'a xcompare -> - t
    \ No newline at end of file + xcompare_elt:'a xcompare -> + t
    diff --git a/website/static/odoc/next/infer/IStdlib/PhysEqual/index.html b/website/static/odoc/next/infer/IStdlib/PhysEqual/index.html index 18ff450d1fd..de52a235305 100644 --- a/website/static/odoc/next/infer/IStdlib/PhysEqual/index.html +++ b/website/static/odoc/next/infer/IStdlib/PhysEqual/index.html @@ -1,5 +1,5 @@ -PhysEqual (infer.IStdlib.PhysEqual)

    Module IStdlib.PhysEqual

    Helpers function to enforce physical equality.

    Let suppose construct/deconstruct is a 1-level-allocation OCaml construction/deconstruction, such as variant type, tuple or record construction. Instead of writing

    let a = deconstruct a0 in
    +PhysEqual (infer.IStdlib.PhysEqual)

    Module IStdlib.PhysEqual

    Helpers function to enforce physical equality.

    Let suppose construct/deconstruct is a 1-level-allocation OCaml construction/deconstruction, such as variant type, tuple or record construction. Instead of writing

    let a = deconstruct a0 in
     let b = deconstruct b0 in
     let res = f a b in
    -if phys_equal res a then a0 else if phys_equal res b then b0 else construct res

    Simply write

    PhysEqual.optim2 ~res:(construct (f a b)) a0 b0
    val optim1 : res:'a -> 'a -> 'a
    val optim2 : res:'a -> 'a -> 'a -> 'a
    \ No newline at end of file +if phys_equal res a then a0 else if phys_equal res b then b0 else construct res

    Simply write

    PhysEqual.optim2 ~res:(construct (f a b)) a0 b0
    val optim1 : res:'a -> 'a -> 'a
    val optim2 : res:'a -> 'a -> 'a -> 'a
    diff --git a/website/static/odoc/next/infer/IStdlib/PolyVariantEqual/index.html b/website/static/odoc/next/infer/IStdlib/PolyVariantEqual/index.html index ba71f283160..5cd41af2847 100644 --- a/website/static/odoc/next/infer/IStdlib/PolyVariantEqual/index.html +++ b/website/static/odoc/next/infer/IStdlib/PolyVariantEqual/index.html @@ -1,2 +1,2 @@ -PolyVariantEqual (infer.IStdlib.PolyVariantEqual)

    Module IStdlib.PolyVariantEqual

    Open to bring equality (=) for polymorphic variants into scope

    val (=) : [> ] as 'a -> 'a -> bool

    Equality for polymorphic variants

    val (<>) : [> ] as 'a -> 'a -> bool

    Disequality for polymorphic variants

    \ No newline at end of file +PolyVariantEqual (infer.IStdlib.PolyVariantEqual)

    Module IStdlib.PolyVariantEqual

    Open to bring equality (=) for polymorphic variants into scope

    val (=) : [> ] as 'a -> 'a -> bool

    Equality for polymorphic variants

    val (<>) : [> ] as 'a -> 'a -> bool

    Disequality for polymorphic variants

    diff --git a/website/static/odoc/next/infer/IStdlib/Pp/index.html b/website/static/odoc/next/infer/IStdlib/Pp/index.html index edb2e115889..cb4efe24d72 100644 --- a/website/static/odoc/next/infer/IStdlib/Pp/index.html +++ b/website/static/odoc/next/infer/IStdlib/Pp/index.html @@ -1,32 +1,44 @@ -Pp (infer.IStdlib.Pp)

    Module IStdlib.Pp

    module F = Stdlib.Format

    Pretty Printing

    type color =
    1. | Black
    2. | Blue
    3. | Green
    4. | Orange
    5. | Red

    Colors supported in printing

    val compare_color : color -> color -> int
    val equal_color : color -> color -> bool
    type colormap = Stdlib.Obj.t -> color

    map subexpressions (as Obj.t element compared by physical equality) to colors

    type simple_kind =
    1. | SIM_DEFAULT
    2. | SIM_WITH_TYP

    Kind of simple printing: default or with full types

    type print_kind =
    1. | TEXT
    2. | HTML

    Kind of printing

    val compare_print_kind : print_kind -> print_kind -> int
    val equal_print_kind : print_kind -> print_kind -> bool
    type env = {
    1. opt : simple_kind;
      (*

      Current option for simple printing

      *)
    2. kind : print_kind;
      (*

      Current kind of printing

      *)
    3. break_lines : bool;
      (*

      whether to let Format add its own line breaks or not (false by default)

      *)
    4. cmap_norm : colormap;
      (*

      Current colormap for the normal part

      *)
    5. cmap_foot : colormap;
      (*

      Current colormap for the footprint part

      *)
    6. color : color;
      (*

      Current color

      *)
    7. obj_sub : (Stdlib.Obj.t -> Stdlib.Obj.t) option;
      (*

      generic object substitution

      *)
    }

    Print environment threaded through all the printing functions

    val reset_obj_sub : env -> env

    Reset the object substitution, so that no substitution takes place

    val set_obj_sub : env -> ('a -> 'a) -> env

    Set the object substitution, which is supposed to preserve the type. Currently only used for a map from (identifier) expressions to the program var containing them

    val extend_colormap : env -> Stdlib.Obj.t -> color -> env

    Extend the normal colormap for the given object with the given color

    val color_wrapper : +Pp (infer.IStdlib.Pp)

    Module IStdlib.Pp

    module F = Stdlib.Format

    Pretty Printing

    type color =
    1. | Black
    2. | Blue
    3. | Green
    4. | Orange
    5. | Red

    Colors supported in printing

    val compare_color : color -> color -> int
    val equal_color : color -> color -> bool
    type colormap = Stdlib.Obj.t -> color

    map subexpressions (as Obj.t element compared by physical equality) to colors

    type simple_kind =
    1. | SIM_DEFAULT
    2. | SIM_WITH_TYP

    Kind of simple printing: default or with full types

    type print_kind =
    1. | TEXT
    2. | HTML

    Kind of printing

    val compare_print_kind : print_kind -> print_kind -> int
    val equal_print_kind : print_kind -> print_kind -> bool
    type env = {
    1. opt : simple_kind;
      (*

      Current option for simple printing

      *)
    2. kind : print_kind;
      (*

      Current kind of printing

      *)
    3. break_lines : bool;
      (*

      whether to let Format add its own line breaks or not (false by default)

      *)
    4. cmap_norm : colormap;
      (*

      Current colormap for the normal part

      *)
    5. cmap_foot : colormap;
      (*

      Current colormap for the footprint part

      *)
    6. color : color;
      (*

      Current color

      *)
    7. obj_sub : (Stdlib.Obj.t -> Stdlib.Obj.t) option;
      (*

      generic object substitution

      *)
    }

    Print environment threaded through all the printing functions

    val reset_obj_sub : env -> env

    Reset the object substitution, so that no substitution takes place

    val set_obj_sub : env -> ('a -> 'a) -> env

    Set the object substitution, which is supposed to preserve the type. Currently only used for a map from (identifier) expressions to the program var containing them

    val extend_colormap : env -> Stdlib.Obj.t -> color -> env

    Extend the normal colormap for the given object with the given color

    val color_wrapper : env -> F.formatter -> 'a -> - f:(env -> F.formatter -> 'a -> unit) -> - unit
    val text : env

    Default text print environment

    val text_break : env

    text print environment that allows line breaks

    val html : color -> env

    Default html print environment

    val color_string : color -> string

    string representation of colors

    val html_with_color : + f:(env -> F.formatter -> 'a -> unit) -> + unit
    val text : env

    Default text print environment

    val text_break : env

    text print environment that allows line breaks

    val html : color -> env

    Default html print environment

    val color_string : color -> string

    string representation of colors

    val escape_xml : + (F.formatter -> 'a -> unit) -> + print_kind -> + F.formatter -> + 'a -> + unit

    escapes the output of the pretty printer parameter using HTML codes

    val with_color : + print_kind -> + color -> + (F.formatter -> 'a -> unit) -> + F.formatter -> + 'a -> + unit
    val html_with_color : color -> (F.formatter -> 'a -> unit) -> F.formatter -> 'a -> unit
    val html_collapsible_block : - name:string -> + name:string -> + print_kind -> (F.formatter -> 'a -> unit) -> F.formatter -> 'a -> unit

    Output the value in a named summary-details block. Both the name and the result of inner pretty-printer will be escaped.

    val option : (F.formatter -> 'a -> unit) -> F.formatter -> 'a option -> unit
    val cli_args : F.formatter -> string list -> unit

    pretty print command line arguments, expanding argument files to print their contents

    val cli_args_with_verbosity : - verbose:bool -> + verbose:bool -> F.formatter -> string list -> unit

    pretty print command line arguments, and expand argument files if verbose is true

    val seq : - ?print_env:env -> - ?sep:string -> - ?sep_html:string -> + ?print_env:env -> + ?sep:string -> + ?sep_html:string -> (F.formatter -> 'a -> unit) -> F.formatter -> 'a list -> unit

    Pretty print a sequence with sep followed by a space between each element. By default, print_env is text, sep is "", and sep_html set to sep.

    val comma_seq : - ?print_env:env -> + ?print_env:env -> (F.formatter -> 'a -> unit) -> F.formatter -> 'a list -> @@ -36,19 +48,20 @@ F.formatter -> 'a list -> unit
    val semicolon_seq : - ?print_env:env -> + ?print_env:env -> (F.formatter -> 'a -> unit) -> F.formatter -> 'a list -> - unit

    Pretty print a ;-separated sequence

    val of_string : f:('a -> string) -> F.formatter -> 'a -> unit

    If all you have is to_string, but you need pp_foo.

    val string_of_pp : (F.formatter -> 'a -> unit) -> 'a -> string

    If all you have is pp_foo, but you need to_string.

    val pair : - fst:(F.formatter -> 'a -> unit) -> - snd:(F.formatter -> 'b -> unit) -> + unit

    Pretty print a ;-separated sequence

    val of_string : f:('a -> string) -> F.formatter -> 'a -> unit

    If all you have is to_string, but you need pp_foo.

    val string_of_pp : (F.formatter -> 'a -> unit) -> 'a -> string

    If all you have is pp_foo, but you need to_string.

    val pair : + fst:(F.formatter -> 'a -> unit) -> + snd:(F.formatter -> 'b -> unit) -> F.formatter -> ('a * 'b) -> unit
    val in_backticks : (F.formatter -> 'a -> unit) -> F.formatter -> 'a -> unit
    val collection : - fold:('t, 'item, bool) IStdlib.IStd.Container.fold -> - sep:string -> - pp_item:(F.formatter -> 'item -> unit) -> + fold:('t, 'item, bool) IStdlib.IStd.Container.fold -> + sep:(unit, F.formatter, unit) IStd.format -> + ?filter:('item -> bool) -> + (F.formatter -> 'item -> unit) -> F.formatter -> 't -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/argument-1-Ord/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/argument-1-Ord/index.html index 6b07d6d3b70..0f506509f70 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/argument-1-Ord/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/argument-1-Ord/index.html @@ -1,2 +1,2 @@ -Ord (infer.IStdlib.PrettyPrintable.MakePPMap.Ord)

    Parameter MakePPMap.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Ord (infer.IStdlib.PrettyPrintable.MakePPMap.Ord)

    Parameter MakePPMap.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/index.html index adb4e93b2e5..f1cd790a9a9 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMap/index.html @@ -1,6 +1,6 @@ -MakePPMap (infer.IStdlib.PrettyPrintable.MakePPMap)

    Module PrettyPrintable.MakePPMap

    Parameters

    Signature

    include IStdlib.IStd.Caml.Map.S with type key = Ord.t
    type key = Ord.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +MakePPMap (infer.IStdlib.PrettyPrintable.MakePPMap)

    Module PrettyPrintable.MakePPMap

    Parameters

    Signature

    include IStdlib.IStd.Caml.Map.S with type key = Ord.t
    type key = Ord.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    \ No newline at end of file + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-1-Ord/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-1-Ord/index.html index 4ce7ecb0dd8..2f4c2441e9f 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-1-Ord/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-1-Ord/index.html @@ -1,2 +1,2 @@ -Ord (infer.IStdlib.PrettyPrintable.MakePPMonoMap.Ord)

    Parameter MakePPMonoMap.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Ord (infer.IStdlib.PrettyPrintable.MakePPMonoMap.Ord)

    Parameter MakePPMonoMap.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-2-Val/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-2-Val/index.html index 1439b6594c4..71441d5805b 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-2-Val/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/argument-2-Val/index.html @@ -1,2 +1,2 @@ -Val (infer.IStdlib.PrettyPrintable.MakePPMonoMap.Val)

    Parameter MakePPMonoMap.Val

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Val (infer.IStdlib.PrettyPrintable.MakePPMonoMap.Val)

    Parameter MakePPMonoMap.Val

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/index.html index c778125c302..64c90148c52 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPMonoMap/index.html @@ -1,6 +1,6 @@ -MakePPMonoMap (infer.IStdlib.PrettyPrintable.MakePPMonoMap)

    Module PrettyPrintable.MakePPMonoMap

    Parameters

    Signature

    include MonoMap with type key = Ord.t with type value = Val.t
    type key = Ord.t
    type value = Val.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +MakePPMonoMap (infer.IStdlib.PrettyPrintable.MakePPMonoMap)

    Module PrettyPrintable.MakePPMonoMap

    Parameters

    Signature

    include MonoMap with type key = Ord.t with type value = Val.t
    type key = Ord.t
    type value = Val.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> - t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    \ No newline at end of file + t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/argument-1-Ord/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/argument-1-Ord/index.html index be2a87cf464..3f5c0f89856 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/argument-1-Ord/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/argument-1-Ord/index.html @@ -1,2 +1,2 @@ -Ord (infer.IStdlib.PrettyPrintable.MakePPSet.Ord)

    Parameter MakePPSet.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Ord (infer.IStdlib.PrettyPrintable.MakePPSet.Ord)

    Parameter MakePPSet.Ord

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/index.html index ec7d5af59db..ff63bea13aa 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPSet/index.html @@ -1,2 +1,2 @@ -MakePPSet (infer.IStdlib.PrettyPrintable.MakePPSet)

    Module PrettyPrintable.MakePPSet

    Parameters

    Signature

    include IStdlib.IStd.Caml.Set.S with type elt = Ord.t
    type elt = Ord.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IContainer.singleton_or_more
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_element : F.formatter -> elt -> unit
    \ No newline at end of file +MakePPSet (infer.IStdlib.PrettyPrintable.MakePPSet)

    Module PrettyPrintable.MakePPSet

    Parameters

    Signature

    include IStdlib.IStd.Caml.Set.S with type elt = Ord.t
    type elt = Ord.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IContainer.singleton_or_more
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_element : F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-1-Rank/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-1-Rank/index.html index 39a9d755be9..4c8a5a72f54 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-1-Rank/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-1-Rank/index.html @@ -1,2 +1,2 @@ -Rank (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet.Rank)

    Parameter MakePPUniqRankSet.Rank

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableEquatableType with type t := t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    \ No newline at end of file +Rank (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet.Rank)

    Parameter MakePPUniqRankSet.Rank

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableEquatableType with type t := t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-2-Val/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-2-Val/index.html index c58d5b56490..d5affff2256 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-2-Val/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/argument-2-Val/index.html @@ -1,2 +1,2 @@ -Val (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet.Val)

    Parameter MakePPUniqRankSet.Val

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    type rank = Rank.t
    val to_rank : t -> rank
    \ No newline at end of file +Val (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet.Val)

    Parameter MakePPUniqRankSet.Val

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    type rank = Rank.t
    val to_rank : t -> rank
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/index.html index 363965b562c..d41f65e71f1 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/MakePPUniqRankSet/index.html @@ -1,6 +1,6 @@ -MakePPUniqRankSet (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet)

    Module PrettyPrintable.MakePPUniqRankSet

    Parameters

    module Val : PrintableRankedType with type rank = Rank.t

    Signature

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank = Rank.t
    type elt = Val.t
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : +MakePPUniqRankSet (infer.IStdlib.PrettyPrintable.MakePPUniqRankSet)

    Module PrettyPrintable.MakePPUniqRankSet

    Parameters

    module Val : PrintableRankedType with type rank = Rank.t

    Signature

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank = Rank.t
    type elt = Val.t
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : t -> - init:'accum -> - f:('accum -> elt -> 'accum * elt) -> - 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> F.formatter -> t -> unit
    \ No newline at end of file + init:'accum -> + f:('accum -> elt -> 'accum * elt) -> + 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val exists : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-1-M/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-1-M/index.html index e3f49562815..5b0160c58f1 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-1-M/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-1-M/index.html @@ -1,6 +1,6 @@ -M (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap.M)

    Parameter PPMonoMapOfPPMap.M

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +M (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap.M)

    Parameter PPMonoMapOfPPMap.M

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    \ No newline at end of file + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-2-Val/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-2-Val/index.html index 6c0111b4b16..51f2d7324fd 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-2-Val/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/argument-2-Val/index.html @@ -1,2 +1,2 @@ -Val (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap.Val)

    Parameter PPMonoMapOfPPMap.Val

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Val (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap.Val)

    Parameter PPMonoMapOfPPMap.Val

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/index.html index 612e56c920f..c9936fa90c2 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/PPMonoMapOfPPMap/index.html @@ -1,9 +1,9 @@ -PPMonoMapOfPPMap (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap)

    Module PrettyPrintable.PPMonoMapOfPPMap

    Parameters

    module M : PPMap

    Signature

    include MonoMap +PPMonoMapOfPPMap (infer.IStdlib.PrettyPrintable.PPMonoMapOfPPMap)

    Module PrettyPrintable.PPMonoMapOfPPMap

    Parameters

    module M : PPMap

    Signature

    include MonoMap with type key = M.key with type value = Val.t with type t = Val.t M.t
    type key = M.key
    type value = Val.t
    type t = Val.t M.t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> - t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    \ No newline at end of file + t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/index.html index 701a22fe6d3..9a449390e69 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/index.html @@ -1,6 +1,6 @@ -PrettyPrintable (infer.IStdlib.PrettyPrintable)

    Module IStdlib.PrettyPrintable

    module F = Stdlib.Format

    Wrappers for making pretty-printable modules

    val pp_collection : - pp_item:(F.formatter -> 'a -> unit) -> +PrettyPrintable (infer.IStdlib.PrettyPrintable)

    Module IStdlib.PrettyPrintable

    module F = Stdlib.Format

    Wrappers for making pretty-printable modules

    val pp_collection : + pp_item:(F.formatter -> 'a -> unit) -> F.formatter -> 'a list -> unit
    module type PrintableType = sig ... end
    module type PrintableEquatableType = sig ... end
    module type PrintableOrderedType = sig ... end
    module type PrintableEquatableOrderedType = sig ... end
    module type PPSet = sig ... end
    module type MonoMap = sig ... end
    module type PPMap = sig ... end
    module type PPMonoMap = sig ... end
    module MakePPSet (Ord : PrintableOrderedType) : PPSet with type elt = Ord.t
    module MakePPMap (Ord : PrintableOrderedType) : PPMap with type key = Ord.t
    module PPMonoMapOfPPMap @@ -12,4 +12,4 @@ PPMonoMap with type key = Ord.t and type value = Val.t
    module type PrintableRankedType = sig ... end
    module type PPUniqRankSet = sig ... end

    set where at most one element of a given rank can be present

    \ No newline at end of file + PPUniqRankSet with type elt = Val.t and type rank = Rank.t
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-MonoMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-MonoMap/index.html index ad83706f841..6a65b8a042c 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-MonoMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-MonoMap/index.html @@ -1,6 +1,6 @@ -MonoMap (infer.IStdlib.PrettyPrintable.MonoMap)

    Module type PrettyPrintable.MonoMap

    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +MonoMap (infer.IStdlib.PrettyPrintable.MonoMap)

    Module type PrettyPrintable.MonoMap

    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> - t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    \ No newline at end of file + t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMap/index.html index fd7562fc663..f128875f65c 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMap/index.html @@ -1,6 +1,6 @@ -PPMap (infer.IStdlib.PrettyPrintable.PPMap)

    Module type PrettyPrintable.PPMap

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +PPMap (infer.IStdlib.PrettyPrintable.PPMap)

    Module type PrettyPrintable.PPMap

    include IStdlib.IStd.Caml.Map.S
    type key
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    \ No newline at end of file + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IContainer.singleton_or_more
    val pp_key : F.formatter -> key -> unit
    val pp : pp_value:(F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMonoMap/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMonoMap/index.html index 24a3f8d3feb..a5e8ea67b13 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMonoMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPMonoMap/index.html @@ -1,6 +1,6 @@ -PPMonoMap (infer.IStdlib.PrettyPrintable.PPMonoMap)

    Module type PrettyPrintable.PPMonoMap

    include MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +PPMonoMap (infer.IStdlib.PrettyPrintable.PPMonoMap)

    Module type PrettyPrintable.PPMonoMap

    include MonoMap
    type key
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> - t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    \ No newline at end of file + t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val compare : (value -> value -> int) -> t -> t -> int
    val equal : (value -> value -> bool) -> t -> t -> bool
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> (key * value) IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_key : F.formatter -> key -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPSet/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPSet/index.html index d2ae128c74a..87108ccfe1c 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPSet/index.html @@ -1,2 +1,2 @@ -PPSet (infer.IStdlib.PrettyPrintable.PPSet)

    Module type PrettyPrintable.PPSet

    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IContainer.singleton_or_more
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_element : F.formatter -> elt -> unit
    \ No newline at end of file +PPSet (infer.IStdlib.PrettyPrintable.PPSet)

    Module type PrettyPrintable.PPSet

    include IStdlib.IStd.Caml.Set.S
    type elt
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IContainer.singleton_or_more
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val pp_element : F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPUniqRankSet/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPUniqRankSet/index.html index 7d2af663135..c4fe52bcad5 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPUniqRankSet/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PPUniqRankSet/index.html @@ -1,6 +1,6 @@ -PPUniqRankSet (infer.IStdlib.PrettyPrintable.PPUniqRankSet)

    Module type PrettyPrintable.PPUniqRankSet

    set where at most one element of a given rank can be present

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank
    type elt
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : +PPUniqRankSet (infer.IStdlib.PrettyPrintable.PPUniqRankSet)

    Module type PrettyPrintable.PPUniqRankSet

    set where at most one element of a given rank can be present

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank
    type elt
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : t -> - init:'accum -> - f:('accum -> elt -> 'accum * elt) -> - 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> F.formatter -> t -> unit
    \ No newline at end of file + init:'accum -> + f:('accum -> elt -> 'accum * elt) -> + 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val exists : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableOrderedType/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableOrderedType/index.html index 83b33c8de9d..54562123f54 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableOrderedType/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableOrderedType/index.html @@ -1,2 +1,2 @@ -PrintableEquatableOrderedType (infer.IStdlib.PrettyPrintable.PrintableEquatableOrderedType)

    Module type PrettyPrintable.PrintableEquatableOrderedType

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableEquatableType with type t := t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    \ No newline at end of file +PrintableEquatableOrderedType (infer.IStdlib.PrettyPrintable.PrintableEquatableOrderedType)

    Module type PrettyPrintable.PrintableEquatableOrderedType

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableEquatableType with type t := t
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableType/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableType/index.html index 23b3c2c78cc..50ae2a25203 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableType/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableEquatableType/index.html @@ -1,2 +1,2 @@ -PrintableEquatableType (infer.IStdlib.PrettyPrintable.PrintableEquatableType)

    Module type PrettyPrintable.PrintableEquatableType

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    \ No newline at end of file +PrintableEquatableType (infer.IStdlib.PrettyPrintable.PrintableEquatableType)

    Module type PrettyPrintable.PrintableEquatableType

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableOrderedType/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableOrderedType/index.html index 0de3b1b26e2..1e46b127dda 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableOrderedType/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableOrderedType/index.html @@ -1,2 +1,2 @@ -PrintableOrderedType (infer.IStdlib.PrettyPrintable.PrintableOrderedType)

    Module type PrettyPrintable.PrintableOrderedType

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +PrintableOrderedType (infer.IStdlib.PrettyPrintable.PrintableOrderedType)

    Module type PrettyPrintable.PrintableOrderedType

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrintableType with type t := t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableRankedType/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableRankedType/index.html index 88d4d3b3fad..3970d82e025 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableRankedType/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableRankedType/index.html @@ -1,2 +1,2 @@ -PrintableRankedType (infer.IStdlib.PrettyPrintable.PrintableRankedType)

    Module type PrettyPrintable.PrintableRankedType

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    type rank
    val to_rank : t -> rank
    \ No newline at end of file +PrintableRankedType (infer.IStdlib.PrettyPrintable.PrintableRankedType)

    Module type PrettyPrintable.PrintableRankedType

    include PrintableType
    type t
    val pp : F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    type rank
    val to_rank : t -> rank
    diff --git a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableType/index.html b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableType/index.html index 507f24cb440..98c6960e160 100644 --- a/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableType/index.html +++ b/website/static/odoc/next/infer/IStdlib/PrettyPrintable/module-type-PrintableType/index.html @@ -1,2 +1,2 @@ -PrintableType (infer.IStdlib.PrettyPrintable.PrintableType)

    Module type PrettyPrintable.PrintableType

    type t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +PrintableType (infer.IStdlib.PrettyPrintable.PrintableType)

    Module type PrettyPrintable.PrintableType

    type t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-1-Key/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-1-Key/index.html index b8f15bdad92..b097669bc3d 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-1-Key/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-1-Key/index.html @@ -1,2 +1,2 @@ -Key (infer.IStdlib.RecencyMap.Make.Key)

    Parameter Make.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrettyPrintable.PrintableEquatableType with type t := t
    include PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    \ No newline at end of file +Key (infer.IStdlib.RecencyMap.Make.Key)

    Parameter Make.Key

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrettyPrintable.PrintableEquatableType with type t := t
    include PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-2-Value/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-2-Value/index.html index 67d9c4eb98b..6ea8416b70c 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-2-Value/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-2-Value/index.html @@ -1,2 +1,2 @@ -Value (infer.IStdlib.RecencyMap.Make.Value)

    Parameter Make.Value

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    \ No newline at end of file +Value (infer.IStdlib.RecencyMap.Make.Value)

    Parameter Make.Value

    include IStdlib.IStd.Caml.Set.OrderedType
    type t
    val compare : t -> t -> int
    include PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-3-Config/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-3-Config/index.html index 2888f045d7a..555d3e19cfe 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-3-Config/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/argument-3-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.IStdlib.RecencyMap.Make.Config)

    Parameter Make.Config

    val limit : int

    the maximum number N of bindings to keep around

    \ No newline at end of file +Config (infer.IStdlib.RecencyMap.Make.Config)

    Parameter Make.Config

    val limit : int

    the maximum number N of bindings to keep around

    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html index 46f9172a155..37d9bea8d86 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html @@ -1,6 +1,6 @@ -Make (infer.IStdlib.RecencyMap.Make)

    Module RecencyMap.Make

    Parameters

    module Config : Config

    Signature

    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Key.t
    type value = Value.t
    val pp : F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : +Make (infer.IStdlib.RecencyMap.Make)

    Module RecencyMap.Make

    Parameters

    module Config : Config

    Signature

    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Key.t
    type value = Value.t
    val pp : F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mapi : t -> f:(key -> value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    \ No newline at end of file + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mapi : t -> f:(key -> value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/index.html index 0fa1d0cf9b1..0802f1d21f3 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/index.html @@ -1,6 +1,6 @@ -RecencyMap (infer.IStdlib.RecencyMap)

    Module IStdlib.RecencyMap

    module F = Stdlib.Format
    module type Config = sig ... end
    module type S = sig ... end

    A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

    module Make +RecencyMap (infer.IStdlib.RecencyMap)

    Module IStdlib.RecencyMap

    module F = Stdlib.Format
    module type Config = sig ... end
    module type S = sig ... end

    A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

    \ No newline at end of file + S with type key = Key.t and type value = Value.t
    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-Config/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-Config/index.html index 8b451bb6ae0..e16364e9f72 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-Config/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.IStdlib.RecencyMap.Config)

    Module type RecencyMap.Config

    val limit : int

    the maximum number N of bindings to keep around

    \ No newline at end of file +Config (infer.IStdlib.RecencyMap.Config)

    Module type RecencyMap.Config

    val limit : int

    the maximum number N of bindings to keep around

    diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html index 8f03d255584..3d8a579fdb9 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html @@ -1,6 +1,6 @@ -S (infer.IStdlib.RecencyMap.S)

    Module type RecencyMap.S

    A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key
    type value
    val pp : F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : +S (infer.IStdlib.RecencyMap.S)

    Module type RecencyMap.S

    A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key
    type value
    val pp : F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mapi : t -> f:(key -> value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    \ No newline at end of file + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mapi : t -> f:(key -> value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    diff --git a/website/static/odoc/next/infer/IStdlib/RevList/index.html b/website/static/odoc/next/infer/IStdlib/RevList/index.html index 72773652920..93707ba3d86 100644 --- a/website/static/odoc/next/infer/IStdlib/RevList/index.html +++ b/website/static/odoc/next/infer/IStdlib/RevList/index.html @@ -1,7 +1,7 @@ -RevList (infer.IStdlib.RevList)

    Module IStdlib.RevList

    type 'a t
    include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
    val compare : +RevList (infer.IStdlib.RevList)

    Module IStdlib.RevList

    type 'a t
    include Ppx_compare_lib.Comparable.S1 with type 'a t := 'a t
    val compare : 'a Base__Ppx_compare_lib.compare -> - 'a t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val empty : 'a t

    Return empty list

    val is_empty : 'a t -> bool

    Check if the list is empty

    val cons : 'a -> 'a t -> 'a t

    Add an element to the end of list

    val to_list : 'a t -> 'a list

    Return normal-ordered list

    val of_list : 'a list -> 'a t

    Make reverse-ordered list from normal-ordered one

    val append : 'a t -> 'a t -> 'a t

    append (of_list l1) (of_list l2) is the same as of_list (List.append l1 l2)

    val exists : 'a t -> f:('a -> bool) -> bool

    Similar to List.exists

    val map : 'a t -> f:('a -> 'b) -> 'b t

    Similar to List.map

    val rev_map : 'a t -> f:('a -> 'b) -> 'b list

    Similar to List.rev_map, so return normal-ordered list

    val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

    Similar to List.rev_map_append

    val rev_partition_map : + 'a t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val empty : 'a t

    Return empty list

    val is_empty : 'a t -> bool

    Check if the list is empty

    val cons : 'a -> 'a t -> 'a t

    Add an element to the end of list

    val to_list : 'a t -> 'a list

    Return normal-ordered list

    val of_list : 'a list -> 'a t

    Make reverse-ordered list from normal-ordered one

    val append : 'a t -> 'a t -> 'a t

    append (of_list l1) (of_list l2) is the same as of_list (List.append l1 l2)

    val exists : 'a t -> f:('a -> bool) -> bool

    Similar to List.exists

    val map : 'a t -> f:('a -> 'b) -> 'b t

    Similar to List.map

    val rev_map : 'a t -> f:('a -> 'b) -> 'b list

    Similar to List.rev_map, so return normal-ordered list

    val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

    Similar to List.rev_map_append

    val rev_partition_map : 'a t -> - f:('a -> ('b, 'c) IStdlib.IStd.Either.t) -> - 'b list * 'c list

    Similar to List.partition_map, but return normal-ordered lists

    \ No newline at end of file + f:('a -> ('b, 'c) IStdlib.IStd.Either.t) -> + 'b list * 'c list

    Similar to List.partition_map, but return normal-ordered lists

    diff --git a/website/static/odoc/next/infer/IStdlib/SpecialChars/index.html b/website/static/odoc/next/infer/IStdlib/SpecialChars/index.html index 6d8a53cfcbd..5a57582d03e 100644 --- a/website/static/odoc/next/infer/IStdlib/SpecialChars/index.html +++ b/website/static/odoc/next/infer/IStdlib/SpecialChars/index.html @@ -1,2 +1,2 @@ -SpecialChars (infer.IStdlib.SpecialChars)

    Module IStdlib.SpecialChars

    val dot_operator : string
    val down_tack : string
    val leftwards_double_arrow : string
    val multiplication_sign : string
    val right_tack : string
    val superscript_digits : string * string IStdlib.IStd.Array.t
    val up_tack : string
    \ No newline at end of file +SpecialChars (infer.IStdlib.SpecialChars)

    Module IStdlib.SpecialChars

    val dot_operator : string
    val down_tack : string
    val leftwards_double_arrow : string
    val multiplication_sign : string
    val right_tack : string
    val superscript_digits : string * string IStdlib.IStd.Array.t
    val up_tack : string
    diff --git a/website/static/odoc/next/infer/IStdlib/UnionFind/Make/argument-1-X/index.html b/website/static/odoc/next/infer/IStdlib/UnionFind/Make/argument-1-X/index.html index 4af2f610fca..b6030ae3694 100644 --- a/website/static/odoc/next/infer/IStdlib/UnionFind/Make/argument-1-X/index.html +++ b/website/static/odoc/next/infer/IStdlib/UnionFind/Make/argument-1-X/index.html @@ -1,2 +1,2 @@ -X (infer.IStdlib.UnionFind.Make.X)

    Parameter Make.X

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_simpler_than : t -> t -> bool

    will be used to choose a "simpler" representative for a given equivalence class when possible

    \ No newline at end of file +X (infer.IStdlib.UnionFind.Make.X)

    Parameter Make.X

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_simpler_than : t -> t -> bool

    will be used to choose a "simpler" representative for a given equivalence class when possible

    diff --git a/website/static/odoc/next/infer/IStdlib/UnionFind/Make/index.html b/website/static/odoc/next/infer/IStdlib/UnionFind/Make/index.html index 7a27d3331d5..5452884e9c6 100644 --- a/website/static/odoc/next/infer/IStdlib/UnionFind/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/UnionFind/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib.UnionFind.Make)

    Module UnionFind.Make

    Parameters

    module X : Element
    module XSet : IStdlib.IStd.Caml.Set.S with type elt = X.t
    module XMap : IStdlib.IStd.Caml.Map.S with type key = X.t

    Signature

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : (F.formatter -> X.t -> unit) -> F.formatter -> t -> unit
    type repr = private X.t
    val empty : t
    val is_empty : t -> bool
    val union : t -> X.t -> X.t -> t * (X.t * repr) option

    return the optional new equality added between the old representatives of the two items in the form of "old representative = new representative", None if they were already in the same congruence class

    val find : t -> X.t -> repr

    return the element given if it wasn't found in the relation

    val fold_congruences : (t, repr * XSet.t, 'acc) IStdlib.IStd.Container.fold

    fold over the equivalence classes of the relation, singling out the representative for each class

    val reorient : should_keep:(X.t -> bool) -> t -> X.t XMap.t

    the relation x -> x' derived from the equality relation that relates all x, x' such that ¬(should_keep x), should_keep x', and x=x', as well as y -> y' when no element in the equivalence class of y satisfies should_keep and y' is the representative of the class

    val apply_subst : _ XMap.t -> t -> t

    apply_subst subst uf eliminate all variables in the domain of subst from uf, keeping the smallest representative not in the domain of subst for each class. Classes without any such elements are kept intact.

    val filter : f:(X.t -> bool) -> t -> t

    only keep items satisfying f

    val fold_elements : (t, X.t, 'acc) IStdlib.IStd.Container.fold
    \ No newline at end of file +Make (infer.IStdlib.UnionFind.Make)

    Module UnionFind.Make

    Parameters

    module X : Element
    module XSet : IStdlib.IStd.Caml.Set.S with type elt = X.t
    module XMap : IStdlib.IStd.Caml.Map.S with type key = X.t

    Signature

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : (F.formatter -> X.t -> unit) -> F.formatter -> t -> unit
    type repr = private X.t
    val empty : t
    val is_empty : t -> bool
    val union : t -> X.t -> X.t -> t * (X.t * repr) option

    return the optional new equality added between the old representatives of the two items in the form of "old representative = new representative", None if they were already in the same congruence class

    val find : t -> X.t -> repr

    return the element given if it wasn't found in the relation

    val fold_congruences : (t, repr * XSet.t, 'acc) IStdlib.IStd.Container.fold

    fold over the equivalence classes of the relation, singling out the representative for each class

    val reorient : should_keep:(X.t -> bool) -> t -> X.t XMap.t

    the relation x -> x' derived from the equality relation that relates all x, x' such that ¬(should_keep x), should_keep x', and x=x', as well as y -> y' when no element in the equivalence class of y satisfies should_keep and y' is the representative of the class

    val apply_subst : _ XMap.t -> t -> t

    apply_subst subst uf eliminate all variables in the domain of subst from uf, keeping the smallest representative not in the domain of subst for each class. Classes without any such elements are kept intact.

    val filter : f:(X.t -> bool) -> t -> t

    only keep items satisfying f

    val fold_elements : (t, X.t, 'acc) IStdlib.IStd.Container.fold
    diff --git a/website/static/odoc/next/infer/IStdlib/UnionFind/index.html b/website/static/odoc/next/infer/IStdlib/UnionFind/index.html index f517d0a7595..aca18ff3682 100644 --- a/website/static/odoc/next/infer/IStdlib/UnionFind/index.html +++ b/website/static/odoc/next/infer/IStdlib/UnionFind/index.html @@ -1,6 +1,6 @@ -UnionFind (infer.IStdlib.UnionFind)

    Module IStdlib.UnionFind

    module F = Stdlib.Format

    A union-find data structure.

    module type Element = sig ... end
    module Make +UnionFind (infer.IStdlib.UnionFind)

    Module IStdlib.UnionFind

    module F = Stdlib.Format

    A union-find data structure.

    module type Element = sig ... end
    module Make (X : Element) (XSet : IStdlib.IStd.Caml.Set.S with type elt = X.t) (XMap : IStdlib.IStd.Caml.Map.S with type key = X.t) : - sig ... end
    \ No newline at end of file + sig ... end
    diff --git a/website/static/odoc/next/infer/IStdlib/UnionFind/module-type-Element/index.html b/website/static/odoc/next/infer/IStdlib/UnionFind/module-type-Element/index.html index 68077347cd6..f37f3c2741f 100644 --- a/website/static/odoc/next/infer/IStdlib/UnionFind/module-type-Element/index.html +++ b/website/static/odoc/next/infer/IStdlib/UnionFind/module-type-Element/index.html @@ -1,2 +1,2 @@ -Element (infer.IStdlib.UnionFind.Element)

    Module type UnionFind.Element

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_simpler_than : t -> t -> bool

    will be used to choose a "simpler" representative for a given equivalence class when possible

    \ No newline at end of file +Element (infer.IStdlib.UnionFind.Element)

    Module type UnionFind.Element

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_simpler_than : t -> t -> bool

    will be used to choose a "simpler" representative for a given equivalence class when possible

    diff --git a/website/static/odoc/next/infer/IStdlib/index.html b/website/static/odoc/next/infer/IStdlib/index.html index eccd7ffa4a2..b0256596de8 100644 --- a/website/static/odoc/next/infer/IStdlib/index.html +++ b/website/static/odoc/next/infer/IStdlib/index.html @@ -1,2 +1,2 @@ -IStdlib (infer.IStdlib)

    Module IStdlib

    module ARList : sig ... end
    module Escape : sig ... end

    Escape a string, eg replace reserved characters with escape sequences

    module GOption : sig ... end
    module HashNormalizer : sig ... end
    module HashSet : sig ... end

    Hash set interface for mutably constructing and iterating over unordered collections.

    module ICompare : sig ... end
    module IContainer : sig ... end
    module IExn : sig ... end
    module IFmt : sig ... end

    Low-level combinators built on Fmt. Sophisticated pretty-printing functions should rather go in Pp.

    module IList : sig ... end
    module IMtime : sig ... end
    module IOption : sig ... end
    module IResult : sig ... end
    module ISequence : sig ... end

    Utility functions for sequences

    module IStd : sig ... end
    module ISys : sig ... end
    module ImperativeUnionFind : sig ... end
    module IntMap : sig ... end
    module IntSet : sig ... end
    module LRUHashtbl : sig ... end

    Hash table the size of which is limited by LRU

    module PartialOrder : sig ... end
    module PhysEqual : sig ... end

    Helpers function to enforce physical equality.

    module PolyVariantEqual : sig ... end

    Open to bring equality (=) for polymorphic variants into scope

    module Pp : sig ... end
    module PrettyPrintable : sig ... end
    module RecencyMap : sig ... end
    module RevList : sig ... end
    module SpecialChars : sig ... end
    module UnionFind : sig ... end
    \ No newline at end of file +IStdlib (infer.IStdlib)

    Module IStdlib

    module ARList : sig ... end
    module Escape : sig ... end

    Escape a string, eg replace reserved characters with escape sequences

    module GOption : sig ... end
    module HashNormalizer : sig ... end
    module HashSet : sig ... end

    Hash set interface for mutably constructing and iterating over unordered collections.

    module ICompare : sig ... end
    module IContainer : sig ... end
    module IExn : sig ... end
    module IFmt : sig ... end

    Low-level combinators built on Fmt. Sophisticated pretty-printing functions should rather go in Pp.

    module IList : sig ... end
    module IMtime : sig ... end
    module IOption : sig ... end
    module IResult : sig ... end
    module ISequence : sig ... end

    Utility functions for sequences

    module IStd : sig ... end
    module ISys : sig ... end
    module ImperativeUnionFind : sig ... end
    module IntMap : sig ... end
    module IntSet : sig ... end
    module LRUHashtbl : sig ... end

    Hash table the size of which is limited by LRU

    module PartialOrder : sig ... end
    module PhysEqual : sig ... end

    Helpers function to enforce physical equality.

    module PolyVariantEqual : sig ... end

    Open to bring equality (=) for polymorphic variants into scope

    module Pp : sig ... end
    module PrettyPrintable : sig ... end
    module RecencyMap : sig ... end
    module RevList : sig ... end
    module SpecialChars : sig ... end
    module UnionFind : sig ... end
    diff --git a/website/static/odoc/next/infer/Integration.html b/website/static/odoc/next/infer/Integration.html index bf0382afa39..17aecddf274 100644 --- a/website/static/odoc/next/infer/Integration.html +++ b/website/static/odoc/next/infer/Integration.html @@ -1,2 +1,2 @@ -Integration (infer.Integration)

    Integration

    All modules: Integration

    \ No newline at end of file +Integration (infer.Integration)

    Integration

    All modules: Integration

    diff --git a/website/static/odoc/next/infer/Integration/Ant/index.html b/website/static/odoc/next/infer/Integration/Ant/index.html index 09f9b7cdf42..a151364ec22 100644 --- a/website/static/odoc/next/infer/Integration/Ant/index.html +++ b/website/static/odoc/next/infer/Integration/Ant/index.html @@ -1,2 +1,2 @@ -Ant (infer.Integration.Ant)

    Module Integration.Ant

    val capture : prog:string -> args:string list -> unit

    do an ant capture with the given prog (i.e. ant) and args

    \ No newline at end of file +Ant (infer.Integration.Ant)

    Module Integration.Ant

    val capture : prog:string -> args:string list -> unit

    do an ant capture with the given prog (i.e. ant) and args

    diff --git a/website/static/odoc/next/infer/Integration/Buck/Target/index.html b/website/static/odoc/next/infer/Integration/Buck/Target/index.html index d611b240936..613e81e9198 100644 --- a/website/static/odoc/next/infer/Integration/Buck/Target/index.html +++ b/website/static/odoc/next/infer/Integration/Buck/Target/index.html @@ -1,7 +1,7 @@ -Target (infer.Integration.Buck.Target)

    Module Buck.Target

    type t
    val of_string : string -> t
    val to_string : t -> string
    val add_flavor_v1 : +Target (infer.Integration.Buck.Target)

    Module Buck.Target

    type t
    val of_string : string -> t
    val to_string : t -> string
    val add_flavor_v1 : IBase.BuckMode.t -> ATDGenerated.InferCommand.t -> - extra_flavors:string list -> + extra_flavors:string list -> t -> - t

    Add flavors to given targets. NB flavors only exist in buck1, this must not be called for buck2

    \ No newline at end of file + t

    Add flavors to given targets. NB flavors only exist in buck1, this must not be called for buck2

    diff --git a/website/static/odoc/next/infer/Integration/Buck/index.html b/website/static/odoc/next/infer/Integration/Buck/index.html index 339cb72dcf0..034379d46f7 100644 --- a/website/static/odoc/next/infer/Integration/Buck/index.html +++ b/website/static/odoc/next/infer/Integration/Buck/index.html @@ -1,11 +1,11 @@ -Buck (infer.Integration.Buck)

    Module Integration.Buck

    type version =
    1. | V1
    2. | V2

    buck version

    module Target : sig ... end
    val wrap_buck_call : - ?extend_env:(string * string) list -> +Buck (infer.Integration.Buck)

    Module Integration.Buck

    type version =
    1. | V1
    2. | V2

    buck version

    module Target : sig ... end
    val wrap_buck_call : + ?extend_env:(string * string) list -> version -> - label:string -> + label:string -> string list -> string list

    Wrap a call to buck while (i) logging standard error to our standard error in real time; (ii) redirecting standard out to a file, the contents of which are returned; (iii) protect the child process from SIGQUIT.

    In a call wrap_buck_call ~extend_env ~label cmd, extend_env is a list of pairs (variable, value) that will extend the environment of the subprocess; label is appended to buck_ to make the prefix of the temporary file storing the standard output of the command, for quick identification; cmd is a list of strings making up the shell command to execute; the return value is the standard output of the command split on newlines.

    val config : IBase.BuckMode.t -> version -> string list

    return list of string parameters of the form "--config" :: param_a :: "--config" :: param_b :: ... describing the buck config flags for the given Buck mode.

    val parse_command_and_targets : IBase.BuckMode.t -> version -> string list -> - string * string list * string list

    parses given buck command, using the buck configuration returned by config above and returns a triple (buck_command, non_target_params, target_params)

    val store_args_in_file : identifier:string -> string list -> string list

    Given a list of arguments, stores them in a file if needed and returns the new command line ; identifier is the temporary filename prefix

    val filter_compatible : [> `Targets ] -> string list -> string list

    keep only the options compatible with the given Buck subcommand

    \ No newline at end of file + string * string list * string list

    parses given buck command, using the buck configuration returned by config above and returns a triple (buck_command, non_target_params, target_params)

    val store_args_in_file : identifier:string -> string list -> string list

    Given a list of arguments, stores them in a file if needed and returns the new command line ; identifier is the temporary filename prefix

    val filter_compatible : [> `Targets ] -> string list -> string list

    keep only the options compatible with the given Buck subcommand

    diff --git a/website/static/odoc/next/infer/Integration/Buck2Clang/index.html b/website/static/odoc/next/infer/Integration/Buck2Clang/index.html deleted file mode 100644 index fd0be564089..00000000000 --- a/website/static/odoc/next/infer/Integration/Buck2Clang/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Buck2Clang (infer.Integration.Buck2Clang)

    Module Integration.Buck2Clang

    val capture : string list -> unit

    do a buck2/clang capture given the prog and build command (buck args)

    \ No newline at end of file diff --git a/website/static/odoc/next/infer/Integration/BuckBuildReport/index.html b/website/static/odoc/next/infer/Integration/BuckBuildReport/index.html index b8272964141..861169c03c6 100644 --- a/website/static/odoc/next/infer/Integration/BuckBuildReport/index.html +++ b/website/static/odoc/next/infer/Integration/BuckBuildReport/index.html @@ -1,2 +1,2 @@ -BuckBuildReport (infer.Integration.BuckBuildReport)

    Module Integration.BuckBuildReport

    val parse_infer_deps : root:string -> build_report_file:string -> string list

    Parse a JSON build report by buck and return all capture DBs found in the infer_deps.txt format. Relative paths are interpreted wrt root.

    \ No newline at end of file +BuckBuildReport (infer.Integration.BuckBuildReport)

    Module Integration.BuckBuildReport

    val parse_infer_deps : root:string -> build_report_file:string -> string list

    Parse a JSON build report by buck and return all capture DBs found in the infer_deps.txt format. Relative paths are interpreted wrt root.

    diff --git a/website/static/odoc/next/infer/Integration/BuckFlavors/index.html b/website/static/odoc/next/infer/Integration/BuckFlavors/index.html index 70ca9d50a20..3d7d3029bc6 100644 --- a/website/static/odoc/next/infer/Integration/BuckFlavors/index.html +++ b/website/static/odoc/next/infer/Integration/BuckFlavors/index.html @@ -1,6 +1,6 @@ -BuckFlavors (infer.Integration.BuckFlavors)

    Module Integration.BuckFlavors

    type flavored_arguments = {
    1. command : string;
    2. rev_not_targets : string list;
    3. targets : string list;
    }
    val add_flavors_to_buck_arguments : +BuckFlavors (infer.Integration.BuckFlavors)

    Module Integration.BuckFlavors

    type flavored_arguments = {
    1. command : string;
    2. rev_not_targets : string list;
    3. targets : string list;
    }
    val add_flavors_to_buck_arguments : IBase.BuckMode.t -> - extra_flavors:string list -> + extra_flavors:string list -> string list -> - flavored_arguments

    Add infer flavors to the targets in the given buck arguments, depending on the infer analyzer. For instance, in clang capture mode, the buck command: build //foo/bar:baz#some,flavor becomes: build //foo/bar:baz#infer-capture-all,some,flavor NB this is for buck1 only.

    val capture : string list -> unit

    do a buck/clang flavor capture given the prog and build command (buck args)

    \ No newline at end of file + flavored_arguments

    Add infer flavors to the targets in the given buck arguments, depending on the infer analyzer. For instance, in clang capture mode, the buck command: build //foo/bar:baz#some,flavor becomes: build //foo/bar:baz#infer-capture-all,some,flavor NB this is for buck1 only.

    val capture : string list -> unit

    do a buck/clang flavor capture given the prog and build command (buck args)

    diff --git a/website/static/odoc/next/infer/Integration/BuckJavaFlavor/index.html b/website/static/odoc/next/infer/Integration/BuckJavaFlavor/index.html index 48142a38e0f..0237ddcf64a 100644 --- a/website/static/odoc/next/infer/Integration/BuckJavaFlavor/index.html +++ b/website/static/odoc/next/infer/Integration/BuckJavaFlavor/index.html @@ -1,2 +1,2 @@ -BuckJavaFlavor (infer.Integration.BuckJavaFlavor)

    Module Integration.BuckJavaFlavor

    val capture : string list -> unit

    do java capture using flavors with the given buck command line

    \ No newline at end of file +BuckJavaFlavor (infer.Integration.BuckJavaFlavor)

    Module Integration.BuckJavaFlavor

    val capture : string list -> unit

    do java capture using flavors with the given buck command line

    diff --git a/website/static/odoc/next/infer/Integration/BxlCapture/index.html b/website/static/odoc/next/infer/Integration/BxlCapture/index.html index c17b3d18ac2..ccb93689c44 100644 --- a/website/static/odoc/next/infer/Integration/BxlCapture/index.html +++ b/website/static/odoc/next/infer/Integration/BxlCapture/index.html @@ -1,2 +1,2 @@ -BxlCapture (infer.Integration.BxlCapture)

    Module Integration.BxlCapture

    val capture : string list -> unit

    do a bxl/clang capture given the prog and build command (buck args)

    \ No newline at end of file +BxlCapture (infer.Integration.BxlCapture)

    Module Integration.BxlCapture

    val capture : string list -> unit

    do a bxl/clang capture given the prog and build command (buck args)

    diff --git a/website/static/odoc/next/infer/Integration/CaptureCompilationDatabase/index.html b/website/static/odoc/next/infer/Integration/CaptureCompilationDatabase/index.html index be011cb1731..ea14e1dcb6d 100644 --- a/website/static/odoc/next/infer/Integration/CaptureCompilationDatabase/index.html +++ b/website/static/odoc/next/infer/Integration/CaptureCompilationDatabase/index.html @@ -1,12 +1,12 @@ -CaptureCompilationDatabase (infer.Integration.CaptureCompilationDatabase)

    Module Integration.CaptureCompilationDatabase

    val get_compilation_database_files_buck : +CaptureCompilationDatabase (infer.Integration.CaptureCompilationDatabase)

    Module Integration.CaptureCompilationDatabase

    val get_compilation_database_files_buck : IBase.BuckMode.clang_compilation_db_deps -> - prog:string -> - args:string list -> + prog:string -> + args:string list -> [> `Raw of string ] list

    Get the compilation database files that contain the compilation given by the buck command. It will be the compilation of the passed targets only or also the dependencies according to the flag --buck-compilation-database deps | no-deps

    val get_compilation_database_files_xcodebuild : - prog:string -> - args:string list -> + prog:string -> + args:string list -> [> `Escaped of string ] list

    Get the compilation database files that contain the compilation given by the xcodebuild command, using xcpretty.

    val capture : - changed_files:IBase.SourceFile.Set.t option -> - db_files:[< `Escaped of string | `Raw of string ] list -> - unit

    Run the capture of the files for which we have compilation commands in db_files and changed_files, if specified.

    \ No newline at end of file + changed_files:IBase.SourceFile.Set.t option -> + db_files:[< `Escaped of string | `Raw of string ] list -> + unit

    Run the capture of the files for which we have compilation commands in db_files and changed_files, if specified.

    diff --git a/website/static/odoc/next/infer/Integration/CaptureManipulation/index.html b/website/static/odoc/next/infer/Integration/CaptureManipulation/index.html index 65f05ed18a4..48f1d2d8c1e 100644 --- a/website/static/odoc/next/infer/Integration/CaptureManipulation/index.html +++ b/website/static/odoc/next/infer/Integration/CaptureManipulation/index.html @@ -1,2 +1,2 @@ -CaptureManipulation (infer.Integration.CaptureManipulation)

    Module Integration.CaptureManipulation

    val extract : files:IBase.SourceFile.Set.t -> input_capture_path:string -> unit

    Using the given capture DB as input, copy the given sources files and their procedures into the main capture DB in the results directory, which should be empty.

    val complete : input_capture_path:string -> bool

    Using the given capture DB as input, complete the current main capture DB by copying procedures and files listed as missing dependencies in the current results directory. See MissingDependencies module. Returns whether any changes were made. Deletes the missing dependency files after completion.

    \ No newline at end of file +CaptureManipulation (infer.Integration.CaptureManipulation)

    Module Integration.CaptureManipulation

    val extract : files:IBase.SourceFile.Set.t -> input_capture_path:string -> unit

    Using the given capture DB as input, copy the given sources files and their procedures into the main capture DB in the results directory, which should be empty.

    val complete : input_capture_path:string -> bool

    Using the given capture DB as input, complete the current main capture DB by copying procedures and files listed as missing dependencies in the current results directory. See MissingDependencies module. Returns whether any changes were made. Deletes the missing dependency files after completion.

    diff --git a/website/static/odoc/next/infer/Integration/CaptureSILJson/index.html b/website/static/odoc/next/infer/Integration/CaptureSILJson/index.html index c416b163274..b8da693fdf5 100644 --- a/website/static/odoc/next/infer/Integration/CaptureSILJson/index.html +++ b/website/static/odoc/next/infer/Integration/CaptureSILJson/index.html @@ -1,2 +1,2 @@ -CaptureSILJson (infer.Integration.CaptureSILJson)

    Module Integration.CaptureSILJson

    Capture module for the json analysis in the capture phase

    val capture : cfg_json:string -> tenv_json:string -> unit

    Run the capture of the files for which we have cfg in cfg_json, type environment tenv_json in and changed_files, if specified.

    \ No newline at end of file +CaptureSILJson (infer.Integration.CaptureSILJson)

    Module Integration.CaptureSILJson

    Capture module for the json analysis in the capture phase

    val capture : cfg_json:string -> tenv_json:string -> unit

    Run the capture of the files for which we have cfg in cfg_json, type environment tenv_json in and changed_files, if specified.

    diff --git a/website/static/odoc/next/infer/Integration/Clang/index.html b/website/static/odoc/next/infer/Integration/Clang/index.html index 37ed6c6aaf1..22b03bcb8ee 100644 --- a/website/static/odoc/next/infer/Integration/Clang/index.html +++ b/website/static/odoc/next/infer/Integration/Clang/index.html @@ -1,2 +1,2 @@ -Clang (infer.Integration.Clang)

    Module Integration.Clang

    type compiler =
    1. | Clang
    2. | Make
    val compare_compiler : compiler -> compiler -> int
    val capture : compiler -> prog:string -> args:string list -> unit
    \ No newline at end of file +Clang (infer.Integration.Clang)

    Module Integration.Clang

    type compiler =
    1. | Clang
    2. | Make
    val compare_compiler : compiler -> compiler -> int
    val capture : compiler -> prog:string -> args:string list -> unit
    diff --git a/website/static/odoc/next/infer/Integration/CompilationDatabase/index.html b/website/static/odoc/next/infer/Integration/CompilationDatabase/index.html index 96f0119b9b1..135ee03237b 100644 --- a/website/static/odoc/next/infer/Integration/CompilationDatabase/index.html +++ b/website/static/odoc/next/infer/Integration/CompilationDatabase/index.html @@ -1,5 +1,5 @@ -CompilationDatabase (infer.Integration.CompilationDatabase)

    Module Integration.CompilationDatabase

    type t
    type compilation_data = {
    1. directory : string;
    2. executable : string;
    3. escaped_arguments : string list;
      (*

      argument list, where each argument is already escaped for the shell. This is because in some cases the argument list contains arguments that are actually themselves a list of arguments, for instance because the compilation database only contains a "command" entry.

      *)
    }
    val filter_compilation_data : +CompilationDatabase (infer.Integration.CompilationDatabase)

    Module Integration.CompilationDatabase

    type t
    type compilation_data = {
    1. directory : string;
    2. executable : string;
    3. escaped_arguments : string list;
      (*

      argument list, where each argument is already escaped for the shell. This is because in some cases the argument list contains arguments that are actually themselves a list of arguments, for instance because the compilation database only contains a "command" entry.

      *)
    }
    val filter_compilation_data : t -> - f:(IBase.SourceFile.t -> bool) -> - (IBase.SourceFile.t * compilation_data) list
    val from_json_files : [< `Escaped of string | `Raw of string ] list -> t
    \ No newline at end of file + f:(IBase.SourceFile.t -> bool) -> + (IBase.SourceFile.t * compilation_data) list
    val from_json_files : [< `Escaped of string | `Raw of string ] list -> t
    diff --git a/website/static/odoc/next/infer/Integration/ConfigImpactIssuesTest/index.html b/website/static/odoc/next/infer/Integration/ConfigImpactIssuesTest/index.html index d16aac4a21e..5a937a96b92 100644 --- a/website/static/odoc/next/infer/Integration/ConfigImpactIssuesTest/index.html +++ b/website/static/odoc/next/infer/Integration/ConfigImpactIssuesTest/index.html @@ -1,2 +1,2 @@ -ConfigImpactIssuesTest (infer.Integration.ConfigImpactIssuesTest)

    Module Integration.ConfigImpactIssuesTest

    val write_from_json : json_path:string -> out_path:string -> unit
    \ No newline at end of file +ConfigImpactIssuesTest (infer.Integration.ConfigImpactIssuesTest)

    Module Integration.ConfigImpactIssuesTest

    val write_from_json : json_path:string -> out_path:string -> unit
    diff --git a/website/static/odoc/next/infer/Integration/ConfigImpactPostProcess/index.html b/website/static/odoc/next/infer/Integration/ConfigImpactPostProcess/index.html index f0c6c94715d..e804d5d6cec 100644 --- a/website/static/odoc/next/infer/Integration/ConfigImpactPostProcess/index.html +++ b/website/static/odoc/next/infer/Integration/ConfigImpactPostProcess/index.html @@ -1,4 +1,4 @@ -ConfigImpactPostProcess (infer.Integration.ConfigImpactPostProcess)

    Module Integration.ConfigImpactPostProcess

    val instantiate_unchecked_callees_cond : +ConfigImpactPostProcess (infer.Integration.ConfigImpactPostProcess)

    Module Integration.ConfigImpactPostProcess

    Instantiate conditional unchecked callees with collected config fields. WARN: This function must be called after the summaries for all procedures completed, because it evaluates a lazy value internally.

    val is_in_gated_classes : IR.Procname.t -> bool

    Check if a procedure is in a gated class. WARN: This function must be called after the summaries for all procedures completed, because it evaluates a lazy value internally.

    \ No newline at end of file + Costlib.ConfigImpactAnalysis.Summary.t

    Instantiate conditional unchecked callees with collected config fields. WARN: This function must be called after the summaries for all procedures completed, because it evaluates a lazy value internally.

    val is_in_gated_classes : IR.Procname.t -> bool

    Check if a procedure is in a gated class. WARN: This function must be called after the summaries for all procedures completed, because it evaluates a lazy value internally.

    diff --git a/website/static/odoc/next/infer/Integration/CostIssuesTest/index.html b/website/static/odoc/next/infer/Integration/CostIssuesTest/index.html index b18f74e910f..ece20b6956f 100644 --- a/website/static/odoc/next/infer/Integration/CostIssuesTest/index.html +++ b/website/static/odoc/next/infer/Integration/CostIssuesTest/index.html @@ -1,6 +1,6 @@ -CostIssuesTest (infer.Integration.CostIssuesTest)

    Module Integration.CostIssuesTest

    val write_from_json : - json_path:string -> - out_path:string -> +CostIssuesTest (infer.Integration.CostIssuesTest)

    Module Integration.CostIssuesTest

    val write_from_json : + json_path:string -> + out_path:string -> IBase.CostIssuesTestField.t list -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Integration/DatalogFacts/index.html b/website/static/odoc/next/infer/Integration/DatalogFacts/index.html index 12fb4d273d0..24a447477f6 100644 --- a/website/static/odoc/next/infer/Integration/DatalogFacts/index.html +++ b/website/static/odoc/next/infer/Integration/DatalogFacts/index.html @@ -1,2 +1,2 @@ -DatalogFacts (infer.Integration.DatalogFacts)

    Module Integration.DatalogFacts

    val create_from_json : datalog_dir:string -> report_json:string -> unit

    Produce .facts files in a subdirectory. Facts can be used as input for Soufflé.

    \ No newline at end of file +DatalogFacts (infer.Integration.DatalogFacts)

    Module Integration.DatalogFacts

    val create_from_json : datalog_dir:string -> report_json:string -> unit

    Produce .facts files in a subdirectory. Facts can be used as input for Soufflé.

    diff --git a/website/static/odoc/next/infer/Integration/Differential/index.html b/website/static/odoc/next/infer/Integration/Differential/index.html index 60a5dee1462..04b43f1c880 100644 --- a/website/static/odoc/next/infer/Integration/Differential/index.html +++ b/website/static/odoc/next/infer/Integration/Differential/index.html @@ -1,9 +1,9 @@ -Differential (infer.Integration.Differential)

    Module Integration.Differential

    type t = {
    1. introduced : ATDGenerated.Jsonbug_t.report;
    2. fixed : ATDGenerated.Jsonbug_t.report;
    3. preexisting : ATDGenerated.Jsonbug_t.report;
    4. costs_summary : Yojson.Basic.t;
    }
    val issues_of_reports : - current_report:ATDGenerated.Jsonbug_t.report -> - previous_report:ATDGenerated.Jsonbug_t.report -> - current_costs:ATDGenerated.Jsoncost_t.report -> - previous_costs:ATDGenerated.Jsoncost_t.report -> - current_config_impact:ATDGenerated.Jsonconfigimpact_t.report -> - previous_config_impact:ATDGenerated.Jsonconfigimpact_t.report -> - t
    val to_files : t -> string -> unit
    \ No newline at end of file +Differential (infer.Integration.Differential)

    Module Integration.Differential

    type t = {
    1. introduced : ATDGenerated.Jsonbug_t.report;
    2. fixed : ATDGenerated.Jsonbug_t.report;
    3. preexisting : ATDGenerated.Jsonbug_t.report;
    4. costs_summary : Yojson.Basic.t;
    }
    val issues_of_reports : + current_report:ATDGenerated.Jsonbug_t.report -> + previous_report:ATDGenerated.Jsonbug_t.report -> + current_costs:ATDGenerated.Jsoncost_t.report -> + previous_costs:ATDGenerated.Jsoncost_t.report -> + current_config_impact:ATDGenerated.Jsonconfigimpact_t.report -> + previous_config_impact:ATDGenerated.Jsonconfigimpact_t.report -> + t
    val to_files : t -> string -> unit
    diff --git a/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html b/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html index 9c70421efaa..c56d3232391 100644 --- a/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html +++ b/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html @@ -1,2 +1,2 @@ -VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.Integration.DifferentialFilters.FileRenamings.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module FileRenamings.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type renaming = {
    1. current : string;
    2. previous : string;
    }
    val of_list : renaming list -> t
    val equal : t -> t -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val find_previous : t -> string -> string
    val from_json : string -> t
    \ No newline at end of file +VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.Integration.DifferentialFilters.FileRenamings.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module FileRenamings.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type renaming = {
    1. current : string;
    2. previous : string;
    }
    val of_list : renaming list -> t
    val equal : t -> t -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val find_previous : t -> string -> string
    val from_json : string -> t
    diff --git a/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/index.html b/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/index.html index 65dfb7ae18d..c92a3b48992 100644 --- a/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/index.html +++ b/website/static/odoc/next/infer/Integration/DifferentialFilters/FileRenamings/index.html @@ -1,2 +1,2 @@ -FileRenamings (infer.Integration.DifferentialFilters.FileRenamings)

    Module DifferentialFilters.FileRenamings

    type t
    val empty : t
    val from_json_file : string -> t
    \ No newline at end of file +FileRenamings (infer.Integration.DifferentialFilters.FileRenamings)

    Module DifferentialFilters.FileRenamings

    type t
    val empty : t
    val from_json_file : string -> t
    diff --git a/website/static/odoc/next/infer/Integration/DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html b/website/static/odoc/next/infer/Integration/DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html index 1cfac38b43f..e2de9fff7c3 100644 --- a/website/static/odoc/next/infer/Integration/DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html +++ b/website/static/odoc/next/infer/Integration/DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html @@ -1,7 +1,7 @@ -VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.Integration.DifferentialFilters.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module DifferentialFilters.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    val relative_complements : - compare:('a -> 'a -> int) -> - pred:('a -> bool) -> +VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.Integration.DifferentialFilters.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module DifferentialFilters.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    val relative_complements : + compare:('a -> 'a -> int) -> + pred:('a -> bool) -> 'a list -> 'a list -> 'a list * 'a list * 'a list
    val skip_duplicated_types_on_filenames : @@ -10,4 +10,4 @@ Differential.t
    val interesting_paths_filter : IBase.SourceFile.t list option -> ATDGenerated.Jsonbug_t.jsonbug list -> - ATDGenerated.Jsonbug_t.jsonbug list
    \ No newline at end of file + ATDGenerated.Jsonbug_t.jsonbug list
    diff --git a/website/static/odoc/next/infer/Integration/DifferentialFilters/index.html b/website/static/odoc/next/infer/Integration/DifferentialFilters/index.html index 94e883a4630..5f936704005 100644 --- a/website/static/odoc/next/infer/Integration/DifferentialFilters/index.html +++ b/website/static/odoc/next/infer/Integration/DifferentialFilters/index.html @@ -1,7 +1,7 @@ -DifferentialFilters (infer.Integration.DifferentialFilters)

    Module Integration.DifferentialFilters

    module FileRenamings : sig ... end
    val do_filter : +DifferentialFilters (infer.Integration.DifferentialFilters)

    Module Integration.DifferentialFilters

    module FileRenamings : sig ... end
    val do_filter : Differential.t -> FileRenamings.t -> - skip_duplicated_types:bool -> - interesting_paths:IBase.SourceFile.t list option -> - Differential.t
    \ No newline at end of file + skip_duplicated_types:bool -> + interesting_paths:IBase.SourceFile.t list option -> + Differential.t
    diff --git a/website/static/odoc/next/infer/Integration/Driver/index.html b/website/static/odoc/next/infer/Integration/Driver/index.html index 5f253308581..a6107232d24 100644 --- a/website/static/odoc/next/infer/Integration/Driver/index.html +++ b/website/static/odoc/next/infer/Integration/Driver/index.html @@ -1,5 +1,5 @@ -Driver (infer.Integration.Driver)

    Module Integration.Driver

    entry points for top-level functionalities such as capture under various build systems, analysis, and reporting

    type mode =
    1. | Analyze
    2. | Ant of {
      1. prog : string;
      2. args : string list;
      }
    3. | Buck2Clang of {
      1. build_cmd : string list;
      }
    4. | BuckClangFlavor of {
      1. build_cmd : string list;
      }
    5. | BuckCompilationDB of {
      1. deps : IBase.BuckMode.clang_compilation_db_deps;
      2. prog : string;
      3. args : string list;
      }
    6. | BuckErlang of {
      1. prog : string;
      2. args : string list;
      }
    7. | BuckGenrule of {
      1. prog : string;
      }
    8. | BuckJavaFlavor of {
      1. build_cmd : string list;
      }
    9. | BxlClang of {
      1. build_cmd : string list;
      }
    10. | BxlJava of {
      1. build_cmd : string list;
      }
    11. | Clang of {
      1. compiler : Clang.compiler;
      2. prog : string;
      3. args : string list;
      }
    12. | ClangCompilationDB of {
      1. db_files : [ `Escaped of string | `Raw of string ] list;
      }
    13. | Gradle of {
      1. prog : string;
      2. args : string list;
      }
    14. | Javac of {
      1. compiler : Javac.compiler;
      2. prog : string;
      3. args : string list;
      }
    15. | Kotlinc of {
      1. prog : string;
      2. args : string list;
      }
    16. | JsonSIL of {
      1. cfg_json : string;
      2. tenv_json : string;
      }
    17. | Maven of {
      1. prog : string;
      2. args : string list;
      }
    18. | NdkBuild of {
      1. build_cmd : string list;
      }
    19. | Python of {
      1. prog : string;
      2. args : string list;
      }
    20. | PythonBytecode of {
      1. files : string list;
      }
    21. | Rebar3 of {
      1. args : string list;
      }
    22. | Erlc of {
      1. args : string list;
      }
    23. | Hackc of {
      1. prog : string;
      2. args : string list;
      }
    24. | Textual of {
      1. textualfiles : string list;
      }
    25. | XcodeBuild of {
      1. prog : string;
      2. args : string list;
      }
    26. | XcodeXcpretty of {
      1. prog : string;
      2. args : string list;
      }

    based on the build_system and options passed to infer, we run in different driver modes

    val is_analyze_mode : mode -> bool
    val is_compatible_with_textual_generation : mode -> bool
    val mode_from_command_line : mode IStdlib.IStd.Lazy.t

    driver mode computed from the command-line arguments and settings in Config

    val run_prologue : mode -> unit

    prepare the environment for running the given mode

    val capture : changed_files:IBase.SourceFile.Set.t option -> mode -> unit

    run the capture for the given mode

    val analyze_and_report : - changed_files:IBase.SourceFile.Set.t option -> +Driver (infer.Integration.Driver)

    Module Integration.Driver

    entry points for top-level functionalities such as capture under various build systems, analysis, and reporting

    type mode =
    1. | Analyze
    2. | Ant of {
      1. prog : string;
      2. args : string list;
      }
    3. | BuckClangFlavor of {
      1. build_cmd : string list;
      }
    4. | BuckCompilationDB of {
      1. deps : IBase.BuckMode.clang_compilation_db_deps;
      2. prog : string;
      3. args : string list;
      }
    5. | BuckErlang of {
      1. prog : string;
      2. args : string list;
      }
    6. | BuckGenrule of {
      1. prog : string;
      }
    7. | BuckJavaFlavor of {
      1. build_cmd : string list;
      }
    8. | BxlClang of {
      1. build_cmd : string list;
      }
    9. | BxlJava of {
      1. build_cmd : string list;
      }
    10. | Clang of {
      1. compiler : Clang.compiler;
      2. prog : string;
      3. args : string list;
      }
    11. | ClangCompilationDB of {
      1. db_files : [ `Escaped of string | `Raw of string ] list;
      }
    12. | Gradle of {
      1. prog : string;
      2. args : string list;
      }
    13. | Javac of {
      1. compiler : Javac.compiler;
      2. prog : string;
      3. args : string list;
      }
    14. | Kotlinc of {
      1. prog : string;
      2. args : string list;
      }
    15. | JsonSIL of {
      1. cfg_json : string;
      2. tenv_json : string;
      }
    16. | Maven of {
      1. prog : string;
      2. args : string list;
      }
    17. | NdkBuild of {
      1. build_cmd : string list;
      }
    18. | Python of {
      1. prog : string;
      2. args : string list;
      }
    19. | PythonBytecode of {
      1. files : string list;
      }
    20. | Rebar3 of {
      1. args : string list;
      }
    21. | Erlc of {
      1. args : string list;
      }
    22. | Hackc of {
      1. prog : string;
      2. args : string list;
      }
    23. | Textual of {
      1. textualfiles : string list;
      }
    24. | XcodeBuild of {
      1. prog : string;
      2. args : string list;
      }
    25. | XcodeXcpretty of {
      1. prog : string;
      2. args : string list;
      }

    based on the build_system and options passed to infer, we run in different driver modes

    val is_analyze_mode : mode -> bool
    val is_compatible_with_textual_generation : mode -> bool
    val mode_from_command_line : mode IStdlib.IStd.Lazy.t

    driver mode computed from the command-line arguments and settings in Config

    val run_prologue : mode -> unit

    prepare the environment for running the given mode

    val capture : changed_files:IBase.SourceFile.Set.t option -> mode -> unit

    run the capture for the given mode

    val analyze_and_report : + changed_files:IBase.SourceFile.Set.t option -> mode -> - unit

    run the analysis for the given mode

    val report : unit -> unit
    val run_epilogue : unit -> unit

    cleanup infer-out/ for Buck, generate stats, and generally post-process the results of a run

    \ No newline at end of file + unit

    run the analysis for the given mode

    val report : unit -> unit
    val run_epilogue : unit -> unit

    cleanup infer-out/ for Buck, generate stats, and generally post-process the results of a run

    diff --git a/website/static/odoc/next/infer/Integration/Erlang/index.html b/website/static/odoc/next/infer/Integration/Erlang/index.html index 2facf0e378f..32244f3ef61 100644 --- a/website/static/odoc/next/infer/Integration/Erlang/index.html +++ b/website/static/odoc/next/infer/Integration/Erlang/index.html @@ -1,2 +1,2 @@ -Erlang (infer.Integration.Erlang)

    Module Integration.Erlang

    val capture : command:string -> args:string list -> unit
    val capture_buck : command:string -> args:string list -> unit
    \ No newline at end of file +Erlang (infer.Integration.Erlang)

    Module Integration.Erlang

    val capture : command:string -> args:string list -> unit
    val capture_buck : command:string -> args:string list -> unit
    diff --git a/website/static/odoc/next/infer/Integration/Gradle/index.html b/website/static/odoc/next/infer/Integration/Gradle/index.html index d6cbce07ec7..9e2e55a8761 100644 --- a/website/static/odoc/next/infer/Integration/Gradle/index.html +++ b/website/static/odoc/next/infer/Integration/Gradle/index.html @@ -1,2 +1,2 @@ -Gradle (infer.Integration.Gradle)

    Module Integration.Gradle

    type javac_data = {
    1. files : string list;
    2. opts : string list;
    }
    val parse_gradle_line : kotlin:bool -> line:string -> javac_data

    parse a single gradle output line and extract files and javac opts

    val capture : prog:string -> args:string list -> unit

    do a gradle capture with the given prog (i.e. gradle) and args

    \ No newline at end of file +Gradle (infer.Integration.Gradle)

    Module Integration.Gradle

    type javac_data = {
    1. files : string list;
    2. opts : string list;
    }
    val parse_gradle_line : kotlin:bool -> line:string -> javac_data

    parse a single gradle output line and extract files and javac opts

    val capture : prog:string -> args:string list -> unit

    do a gradle capture with the given prog (i.e. gradle) and args

    diff --git a/website/static/odoc/next/infer/Integration/Hack/index.html b/website/static/odoc/next/infer/Integration/Hack/index.html index 9602f83a37c..5cc59e3ccbe 100644 --- a/website/static/odoc/next/infer/Integration/Hack/index.html +++ b/website/static/odoc/next/infer/Integration/Hack/index.html @@ -1,8 +1,8 @@ -Hack (infer.Integration.Hack)

    Module Integration.Hack

    val capture : prog:string -> args:string list -> unit
    val location_of_class_db : +Hack (infer.Integration.Hack)

    Module Integration.Hack

    val capture : prog:string -> args:string list -> unit
    val location_of_class_db : Sqlite3.db -> - class_name:string -> + class_name:string -> Sqlite3.Rc.t * string list
    val location_of_class : - naming_table:string -> - class_name:string -> - Sqlite3.Rc.t * string list
    \ No newline at end of file + naming_table:string -> + class_name:string -> + Sqlite3.Rc.t * string list
    diff --git a/website/static/odoc/next/infer/Integration/Help/index.html b/website/static/odoc/next/infer/Integration/Help/index.html index 4641148dfae..9539b756f33 100644 --- a/website/static/odoc/next/infer/Integration/Help/index.html +++ b/website/static/odoc/next/infer/Integration/Help/index.html @@ -1,2 +1,2 @@ -Help (infer.Integration.Help)

    Module Integration.Help

    val list_checkers : unit -> unit

    print the list of all checkers

    val list_issue_types : unit -> unit

    print the list of all known issue types

    val show_checkers : IBase.Checker.t list -> unit

    show information about the given checkers

    val show_issue_types : IBase.IssueType.t list -> unit

    show information about the given issue_types

    val write_website : website_root:string -> unit

    generate files for the fbinfer.com website

    val abs_url_of_issue_type : string -> string

    given an issue type unique ID, return the URL relative to the root of the website, e.g. abs_url_of_issue_type "NULL_DEREFERENCE" is "/docs/all-issue-types#null_dereference"

    \ No newline at end of file +Help (infer.Integration.Help)

    Module Integration.Help

    val list_checkers : unit -> unit

    print the list of all checkers

    val list_issue_types : unit -> unit

    print the list of all known issue types

    val show_checkers : IBase.Checker.t list -> unit

    show information about the given checkers

    val show_issue_types : IBase.IssueType.t list -> unit

    show information about the given issue_types

    val write_website : website_root:string -> unit

    generate files for the fbinfer.com website

    val abs_url_of_issue_type : string -> string

    given an issue type unique ID, return the URL relative to the root of the website, e.g. abs_url_of_issue_type "NULL_DEREFERENCE" is "/docs/all-issue-types#null_dereference"

    diff --git a/website/static/odoc/next/infer/Integration/InferCommandImplementation/index.html b/website/static/odoc/next/infer/Integration/InferCommandImplementation/index.html index c6e3b7987e4..711c2807b06 100644 --- a/website/static/odoc/next/infer/Integration/InferCommandImplementation/index.html +++ b/website/static/odoc/next/infer/Integration/InferCommandImplementation/index.html @@ -1,2 +1,2 @@ -InferCommandImplementation (infer.Integration.InferCommandImplementation)

    Module Integration.InferCommandImplementation

    implementations of infer commands

    val debug : unit -> unit
    val explore : unit -> unit
    val help : unit -> unit
    val report : unit -> unit
    val report_diff : unit -> unit
    \ No newline at end of file +InferCommandImplementation (infer.Integration.InferCommandImplementation)

    Module Integration.InferCommandImplementation

    implementations of infer commands

    val debug : unit -> unit
    val explore : unit -> unit
    val help : unit -> unit
    val report : unit -> unit
    val report_diff : unit -> unit
    diff --git a/website/static/odoc/next/infer/Integration/IssuesTest/index.html b/website/static/odoc/next/infer/Integration/IssuesTest/index.html index 91b2c839db6..9996175031c 100644 --- a/website/static/odoc/next/infer/Integration/IssuesTest/index.html +++ b/website/static/odoc/next/infer/Integration/IssuesTest/index.html @@ -1,14 +1,14 @@ -IssuesTest (infer.Integration.IssuesTest)

    Module Integration.IssuesTest

    val pp_custom_of_report : +IssuesTest (infer.Integration.IssuesTest)

    Module Integration.IssuesTest

    val pp_custom_of_report : Stdlib.Format.formatter -> ATDGenerated.Jsonbug_t.jsonbug list -> IBase.IssuesTestField.t list -> unit
    val write_from_json : - json_path:string -> - out_path:string -> + json_path:string -> + out_path:string -> IBase.IssuesTestField.t list -> unit
    val pp_trace : Stdlib.Format.formatter -> ATDGenerated.Jsonbug_t.json_trace_item list -> string -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Integration/Javac/index.html b/website/static/odoc/next/infer/Integration/Javac/index.html index d9a96da1139..b35f7bdc03c 100644 --- a/website/static/odoc/next/infer/Integration/Javac/index.html +++ b/website/static/odoc/next/infer/Integration/Javac/index.html @@ -1,2 +1,2 @@ -Javac (infer.Integration.Javac)

    Module Integration.Javac

    type compiler =
    1. | Java
    2. | Javac
    val compare_compiler : compiler -> compiler -> int
    val call_infer_javac_capture : javac_args:string list -> unit

    perform a javac catpure given args to javac, this will shell out to 'infer capture -- javac

    val capture : compiler -> prog:string -> args:string list -> unit

    perform capture when given prog and args, this is the entrypoint for infer being called with 'capture -- javac'

    \ No newline at end of file +Javac (infer.Integration.Javac)

    Module Integration.Javac

    type compiler =
    1. | Java
    2. | Javac
    val compare_compiler : compiler -> compiler -> int
    val call_infer_javac_capture : javac_args:string list -> unit

    perform a javac catpure given args to javac, this will shell out to 'infer capture -- javac

    val capture : compiler -> prog:string -> args:string list -> unit

    perform capture when given prog and args, this is the entrypoint for infer being called with 'capture -- javac'

    diff --git a/website/static/odoc/next/infer/Integration/JsonReports/index.html b/website/static/odoc/next/infer/Integration/JsonReports/index.html index 03a7ffc1576..c73e3bd29b0 100644 --- a/website/static/odoc/next/infer/Integration/JsonReports/index.html +++ b/website/static/odoc/next/infer/Integration/JsonReports/index.html @@ -1,14 +1,14 @@ -JsonReports (infer.Integration.JsonReports)

    Module Integration.JsonReports

    val potential_exception_message : string
    val loc_trace_to_jsonbug_record : +JsonReports (infer.Integration.JsonReports)

    Module Integration.JsonReports

    val potential_exception_message : string
    val loc_trace_to_jsonbug_record : Absint.Errlog.loc_trace_elem list -> ATDGenerated.Jsonbug_t.json_trace_item list
    val censored_reason : IBase.IssueType.t -> IBase.SourceFile.t -> string option
    val sanitize_qualifier : string -> string
    val compute_hash : - severity:string -> - bug_type:string -> - proc_name:IR.Procname.t -> - file:string -> - qualifier:string -> + severity:string -> + bug_type:string -> + proc_name:IR.Procname.t -> + file:string -> + qualifier:string -> string
    val write_reports : - issues_json:string -> - costs_json:string -> - config_impact_json:string -> - unit
    \ No newline at end of file + issues_json:string -> + costs_json:string -> + config_impact_json:string -> + unit
    diff --git a/website/static/odoc/next/infer/Integration/Kotlinc/index.html b/website/static/odoc/next/infer/Integration/Kotlinc/index.html index 1263833a4f5..da6c28eedfa 100644 --- a/website/static/odoc/next/infer/Integration/Kotlinc/index.html +++ b/website/static/odoc/next/infer/Integration/Kotlinc/index.html @@ -1,2 +1,2 @@ -Kotlinc (infer.Integration.Kotlinc)

    Module Integration.Kotlinc

    val capture : prog:string -> args:string list -> unit

    perform capture when given prog and args, this is the entrypoint for infer being called with 'capture -- kotlinc'

    \ No newline at end of file +Kotlinc (infer.Integration.Kotlinc)

    Module Integration.Kotlinc

    val capture : prog:string -> args:string list -> unit

    perform capture when given prog and args, this is the entrypoint for infer being called with 'capture -- kotlinc'

    diff --git a/website/static/odoc/next/infer/Integration/Maven/index.html b/website/static/odoc/next/infer/Integration/Maven/index.html index 42b0e75a322..0a6e444480b 100644 --- a/website/static/odoc/next/infer/Integration/Maven/index.html +++ b/website/static/odoc/next/infer/Integration/Maven/index.html @@ -1,2 +1,2 @@ -Maven (infer.Integration.Maven)

    Module Integration.Maven

    val capture : prog:string -> args:string list -> unit
    \ No newline at end of file +Maven (infer.Integration.Maven)

    Module Integration.Maven

    val capture : prog:string -> args:string list -> unit
    diff --git a/website/static/odoc/next/infer/Integration/MergeCapture/index.html b/website/static/odoc/next/infer/Integration/MergeCapture/index.html index 4d64acccb63..058943baa22 100644 --- a/website/static/odoc/next/infer/Integration/MergeCapture/index.html +++ b/website/static/odoc/next/infer/Integration/MergeCapture/index.html @@ -1,2 +1,2 @@ -MergeCapture (infer.Integration.MergeCapture)

    Module Integration.MergeCapture

    val merge_global_tenv : normalize:bool -> IBase.DB.filename list -> unit

    Merge tenvs from the given paths and store the result as a global tenv

    val merge_captured_targets : root:string -> unit
    val merge_changed_functions : unit -> unit
    \ No newline at end of file +MergeCapture (infer.Integration.MergeCapture)

    Module Integration.MergeCapture

    val merge_global_tenv : normalize:bool -> IBase.DB.filename list -> unit

    Merge tenvs from the given paths and store the result as a global tenv

    val merge_captured_targets : root:string -> unit
    val merge_changed_functions : unit -> unit
    diff --git a/website/static/odoc/next/infer/Integration/NdkBuild/index.html b/website/static/odoc/next/infer/Integration/NdkBuild/index.html index 865a6fb91c5..886c4976309 100644 --- a/website/static/odoc/next/infer/Integration/NdkBuild/index.html +++ b/website/static/odoc/next/infer/Integration/NdkBuild/index.html @@ -1,2 +1,2 @@ -NdkBuild (infer.Integration.NdkBuild)

    Module Integration.NdkBuild

    val capture : build_cmd:string list -> unit

    do an ndk-build capture with the given the build commands

    \ No newline at end of file +NdkBuild (infer.Integration.NdkBuild)

    Module Integration.NdkBuild

    val capture : build_cmd:string list -> unit

    do an ndk-build capture with the given the build commands

    diff --git a/website/static/odoc/next/infer/Integration/NullsafeAnnotationGraphUtils/index.html b/website/static/odoc/next/infer/Integration/NullsafeAnnotationGraphUtils/index.html index ccc2fcbdb62..811d157a37f 100644 --- a/website/static/odoc/next/infer/Integration/NullsafeAnnotationGraphUtils/index.html +++ b/website/static/odoc/next/infer/Integration/NullsafeAnnotationGraphUtils/index.html @@ -1,5 +1,5 @@ -NullsafeAnnotationGraphUtils (infer.Integration.NullsafeAnnotationGraphUtils)

    Module Integration.NullsafeAnnotationGraphUtils

    A helper module to deal with Nullsafe annotation graph's JSON representation

    val pp_annotation_graph : +NullsafeAnnotationGraphUtils (infer.Integration.NullsafeAnnotationGraphUtils)

    Module Integration.NullsafeAnnotationGraphUtils

    A helper module to deal with Nullsafe annotation graph's JSON representation

    val pp_annotation_graph : Stdlib.Format.formatter -> ATDGenerated.Jsonbug_t.annotation_point list -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Integration/Python/index.html b/website/static/odoc/next/infer/Integration/Python/index.html index be4286cafb3..e8df58180d9 100644 --- a/website/static/odoc/next/infer/Integration/Python/index.html +++ b/website/static/odoc/next/infer/Integration/Python/index.html @@ -1,2 +1,2 @@ -Python (infer.Integration.Python)

    Module Integration.Python

    type kind =
    1. | Bytecode of {
      1. files : string list;
      }
    2. | Files of {
      1. prog : string;
      2. args : string list;
      }

    Bytecode is mostly used for debugging purpose: it takes a single bytecode .pyc file as input and captures it. It is used with --dump-textual to quickly check the result of the Python -> Textual translation.

    Files is a list of Python source files, which are then captured and analyzed. This is the main way of running infer on Python code.

    val capture : kind -> unit
    \ No newline at end of file +Python (infer.Integration.Python)

    Module Integration.Python

    type kind =
    1. | Bytecode of {
      1. files : string list;
      }
    2. | Files of {
      1. prog : string;
      2. args : string list;
      }

    Bytecode is mostly used for debugging purpose: it takes a single bytecode .pyc file as input and captures it. It is used with --dump-textual to quickly check the result of the Python -> Textual translation.

    Files is a list of Python source files, which are then captured and analyzed. This is the main way of running infer on Python code.

    val capture : kind -> unit
    diff --git a/website/static/odoc/next/infer/Integration/ReportDataFlows/index.html b/website/static/odoc/next/infer/Integration/ReportDataFlows/index.html index 5bdc3c79984..42be59aaa26 100644 --- a/website/static/odoc/next/infer/Integration/ReportDataFlows/index.html +++ b/website/static/odoc/next/infer/Integration/ReportDataFlows/index.html @@ -1,2 +1,2 @@ -ReportDataFlows (infer.Integration.ReportDataFlows)

    Module Integration.ReportDataFlows

    type flow_type =
    1. | FromSource
    2. | ToSink
    val report_data_flows_of_procname : string -> flow_type:flow_type -> unit
    \ No newline at end of file +ReportDataFlows (infer.Integration.ReportDataFlows)

    Module Integration.ReportDataFlows

    type flow_type =
    1. | FromSource
    2. | ToSink
    val report_data_flows_of_procname : string -> flow_type:flow_type -> unit
    diff --git a/website/static/odoc/next/infer/Integration/ReportDiff/index.html b/website/static/odoc/next/infer/Integration/ReportDiff/index.html index 099053b6009..f37e919711b 100644 --- a/website/static/odoc/next/infer/Integration/ReportDiff/index.html +++ b/website/static/odoc/next/infer/Integration/ReportDiff/index.html @@ -1,9 +1,9 @@ -ReportDiff (infer.Integration.ReportDiff)

    Module Integration.ReportDiff

    val reportdiff : - report_current:string option -> - report_previous:string option -> - costs_current:string option -> - costs_previous:string option -> - config_impact_current:string option -> - config_impact_previous:string option -> - unit
    \ No newline at end of file +ReportDiff (infer.Integration.ReportDiff)

    Module Integration.ReportDiff

    val reportdiff : + report_current:string option -> + report_previous:string option -> + costs_current:string option -> + costs_previous:string option -> + config_impact_current:string option -> + config_impact_previous:string option -> + unit
    diff --git a/website/static/odoc/next/infer/Integration/ReportLineage/index.html b/website/static/odoc/next/infer/Integration/ReportLineage/index.html index 4df9feaa47a..9e5653666fd 100644 --- a/website/static/odoc/next/infer/Integration/ReportLineage/index.html +++ b/website/static/odoc/next/infer/Integration/ReportLineage/index.html @@ -1,2 +1,2 @@ -ReportLineage (infer.Integration.ReportLineage)

    Module Integration.ReportLineage

    val report : unit -> unit
    \ No newline at end of file +ReportLineage (infer.Integration.ReportLineage)

    Module Integration.ReportLineage

    val report_json : unit -> unit
    val report_taint : lineage_source:string -> lineage_sink:string -> unit
    diff --git a/website/static/odoc/next/infer/Integration/SarifReport/index.html b/website/static/odoc/next/infer/Integration/SarifReport/index.html index ab9e302b8a3..a77a9215e97 100644 --- a/website/static/odoc/next/infer/Integration/SarifReport/index.html +++ b/website/static/odoc/next/infer/Integration/SarifReport/index.html @@ -1,2 +1,2 @@ -SarifReport (infer.Integration.SarifReport)

    Module Integration.SarifReport

    val create_from_json : report_sarif:string -> report_json:string -> unit

    Read report_json and produce a textual output in report_sarif.

    \ No newline at end of file +SarifReport (infer.Integration.SarifReport)

    Module Integration.SarifReport

    val create_from_json : report_sarif:string -> report_json:string -> unit

    Read report_json and produce a textual output in report_sarif.

    diff --git a/website/static/odoc/next/infer/Integration/StatsDiff/index.html b/website/static/odoc/next/infer/Integration/StatsDiff/index.html index 221ceee422b..eccc8ca2fca 100644 --- a/website/static/odoc/next/infer/Integration/StatsDiff/index.html +++ b/website/static/odoc/next/infer/Integration/StatsDiff/index.html @@ -1,2 +1,2 @@ -StatsDiff (infer.Integration.StatsDiff)

    Module Integration.StatsDiff

    val diff : previous:string -> current:string -> unit
    \ No newline at end of file +StatsDiff (infer.Integration.StatsDiff)

    Module Integration.StatsDiff

    val diff : previous:string -> current:string -> unit
    diff --git a/website/static/odoc/next/infer/Integration/TextReport/index.html b/website/static/odoc/next/infer/Integration/TextReport/index.html index 5fa92130c6d..2fd6b5d7e8e 100644 --- a/website/static/odoc/next/infer/Integration/TextReport/index.html +++ b/website/static/odoc/next/infer/Integration/TextReport/index.html @@ -1,14 +1,14 @@ -TextReport (infer.Integration.TextReport)

    Module Integration.TextReport

    module F = Stdlib.Format
    val create_from_json : - quiet:bool -> - console_limit:int option -> - report_txt:string -> - report_json:string -> +TextReport (infer.Integration.TextReport)

    Module Integration.TextReport

    module F = Stdlib.Format
    val create_from_json : + quiet:bool -> + console_limit:int option -> + report_txt:string -> + report_json:string -> unit

    Read report_json and produce a textual output in report_txt. If not quiet then display at most console_limit issues on stdout. If console_limit is None then display all the issues.

    val pp_jsonbug : F.formatter -> ATDGenerated.Jsonbug_t.jsonbug -> unit
    val pp_jsonbug_with_number : F.formatter -> (int * ATDGenerated.Jsonbug_t.jsonbug) -> unit

    pretty-print an issue together with a number, e.g. to identify it in a list

    val pp_source_context : - indent:int -> + indent:int -> F.formatter -> ATDGenerated.Jsonbug_t.loc -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Integration/TraceBugs/index.html b/website/static/odoc/next/infer/Integration/TraceBugs/index.html index e20480474b0..f47154ecbcf 100644 --- a/website/static/odoc/next/infer/Integration/TraceBugs/index.html +++ b/website/static/odoc/next/infer/Integration/TraceBugs/index.html @@ -1,14 +1,14 @@ -TraceBugs (infer.Integration.TraceBugs)

    Module Integration.TraceBugs

    val explore : - selector_limit:int option -> - report_txt:string -> - report_json:string -> - show_source_context:bool -> - selected:[ `All | `Select of int ] option -> - max_nested_level:int option -> +TraceBugs (infer.Integration.TraceBugs)

    Module Integration.TraceBugs

    val explore : + selector_limit:int option -> + report_txt:string -> + report_json:string -> + show_source_context:bool -> + selected:[ `All | `Select of int ] option -> + max_nested_level:int option -> unit
    val gen_html_report : - show_source_context:bool -> - max_nested_level:int option -> - report_json:string -> - report_html_dir:string -> - unit
    \ No newline at end of file + show_source_context:bool -> + max_nested_level:int option -> + report_json:string -> + report_html_dir:string -> + unit
    diff --git a/website/static/odoc/next/infer/Integration/XMLReport/index.html b/website/static/odoc/next/infer/Integration/XMLReport/index.html index 294753999ae..ba76bf4850d 100644 --- a/website/static/odoc/next/infer/Integration/XMLReport/index.html +++ b/website/static/odoc/next/infer/Integration/XMLReport/index.html @@ -1,2 +1,2 @@ -XMLReport (infer.Integration.XMLReport)

    Module Integration.XMLReport

    val write : xml_path:string -> json_path:string -> unit

    read the JSON report at json_path and translates it to a PMD-style XML report in xml_path

    \ No newline at end of file +XMLReport (infer.Integration.XMLReport)

    Module Integration.XMLReport

    val write : xml_path:string -> json_path:string -> unit

    read the JSON report at json_path and translates it to a PMD-style XML report in xml_path

    diff --git a/website/static/odoc/next/infer/Integration/XcodeBuild/index.html b/website/static/odoc/next/infer/Integration/XcodeBuild/index.html index 9334e6ae808..30d269abbde 100644 --- a/website/static/odoc/next/infer/Integration/XcodeBuild/index.html +++ b/website/static/odoc/next/infer/Integration/XcodeBuild/index.html @@ -1,2 +1,2 @@ -XcodeBuild (infer.Integration.XcodeBuild)

    Module Integration.XcodeBuild

    val capture : prog:string -> args:string list -> unit

    do an xcodebuild capture with the given prog (i.e. xcodebuild) and args

    \ No newline at end of file +XcodeBuild (infer.Integration.XcodeBuild)

    Module Integration.XcodeBuild

    val capture : prog:string -> args:string list -> unit

    do an xcodebuild capture with the given prog (i.e. xcodebuild) and args

    diff --git a/website/static/odoc/next/infer/Integration/index.html b/website/static/odoc/next/infer/Integration/index.html index 35f722fd2ea..659b2fe0f6b 100644 --- a/website/static/odoc/next/infer/Integration/index.html +++ b/website/static/odoc/next/infer/Integration/index.html @@ -1,2 +1,2 @@ -Integration (infer.Integration)

    Module Integration

    module Ant : sig ... end
    module Buck : sig ... end
    module Buck2Clang : sig ... end
    module BuckBuildReport : sig ... end
    module BuckFlavors : sig ... end
    module BuckJavaFlavor : sig ... end
    module BxlCapture : sig ... end
    module CaptureCompilationDatabase : sig ... end
    module CaptureManipulation : sig ... end
    module CaptureSILJson : sig ... end

    Capture module for the json analysis in the capture phase

    module Clang : sig ... end
    module CompilationDatabase : sig ... end
    module ConfigImpactIssuesTest : sig ... end
    module ConfigImpactPostProcess : sig ... end
    module CostIssuesTest : sig ... end
    module DatalogFacts : sig ... end
    module Differential : sig ... end
    module DifferentialFilters : sig ... end
    module Driver : sig ... end

    entry points for top-level functionalities such as capture under various build systems, analysis, and reporting

    module Erlang : sig ... end
    module Gradle : sig ... end
    module Hack : sig ... end
    module Help : sig ... end
    module InferCommandImplementation : sig ... end

    implementations of infer commands

    module IssuesTest : sig ... end
    module Javac : sig ... end
    module JsonReports : sig ... end
    module Kotlinc : sig ... end
    module Maven : sig ... end
    module MergeCapture : sig ... end
    module NdkBuild : sig ... end
    module NullsafeAnnotationGraphUtils : sig ... end

    A helper module to deal with Nullsafe annotation graph's JSON representation

    module Python : sig ... end
    module ReportDataFlows : sig ... end
    module ReportDiff : sig ... end
    module ReportLineage : sig ... end
    module SarifReport : sig ... end
    module StatsDiff : sig ... end
    module TextReport : sig ... end
    module TraceBugs : sig ... end
    module XMLReport : sig ... end
    module XcodeBuild : sig ... end
    \ No newline at end of file +Integration (infer.Integration)

    Module Integration

    module Ant : sig ... end
    module Buck : sig ... end
    module BuckBuildReport : sig ... end
    module BuckFlavors : sig ... end
    module BuckJavaFlavor : sig ... end
    module BxlCapture : sig ... end
    module CaptureCompilationDatabase : sig ... end
    module CaptureManipulation : sig ... end
    module CaptureSILJson : sig ... end

    Capture module for the json analysis in the capture phase

    module Clang : sig ... end
    module CompilationDatabase : sig ... end
    module ConfigImpactIssuesTest : sig ... end
    module ConfigImpactPostProcess : sig ... end
    module CostIssuesTest : sig ... end
    module DatalogFacts : sig ... end
    module Differential : sig ... end
    module DifferentialFilters : sig ... end
    module Driver : sig ... end

    entry points for top-level functionalities such as capture under various build systems, analysis, and reporting

    module Erlang : sig ... end
    module Gradle : sig ... end
    module Hack : sig ... end
    module Help : sig ... end
    module InferCommandImplementation : sig ... end

    implementations of infer commands

    module IssuesTest : sig ... end
    module Javac : sig ... end
    module JsonReports : sig ... end
    module Kotlinc : sig ... end
    module Maven : sig ... end
    module MergeCapture : sig ... end
    module NdkBuild : sig ... end
    module NullsafeAnnotationGraphUtils : sig ... end

    A helper module to deal with Nullsafe annotation graph's JSON representation

    module Python : sig ... end
    module ReportDataFlows : sig ... end
    module ReportDiff : sig ... end
    module ReportLineage : sig ... end
    module SarifReport : sig ... end
    module StatsDiff : sig ... end
    module TextReport : sig ... end
    module TraceBugs : sig ... end
    module XMLReport : sig ... end
    module XcodeBuild : sig ... end
    diff --git a/website/static/odoc/next/infer/JavaFrontend.html b/website/static/odoc/next/infer/JavaFrontend.html index 0b5287bed66..241a755981e 100644 --- a/website/static/odoc/next/infer/JavaFrontend.html +++ b/website/static/odoc/next/infer/JavaFrontend.html @@ -1,2 +1,2 @@ -JavaFrontend (infer.JavaFrontend)

    Java Frontend

    This is the frontend for Java compilers.

    All modules: JavaFrontend

    \ No newline at end of file +JavaFrontend (infer.JavaFrontend)

    Java Frontend

    This is the frontend for Java compilers.

    All modules: JavaFrontend

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JAnnotation/index.html b/website/static/odoc/next/infer/JavaFrontend/JAnnotation/index.html index 859bb2e2d42..30f0c7627bc 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JAnnotation/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JAnnotation/index.html @@ -1,6 +1,6 @@ -JAnnotation (infer.JavaFrontend.JAnnotation)

    Module JavaFrontend.JAnnotation

    val translate_item : +JAnnotation (infer.JavaFrontend.JAnnotation)

    Module JavaFrontend.JAnnotation

    val translate_item : (Javalib_pack.JBasics.annotation * Javalib_pack.Javalib.visibility) list -> IR.Annot.Item.t

    Translate an item annotation.

    val translate_method : Javalib_pack.Javalib.method_annotations -> - IR.Annot.Item.t * IR.Annot.Item.t list

    Translate annotations for a method.

    \ No newline at end of file + IR.Annot.Item.t * IR.Annot.Item.t list

    Translate annotations for a method.

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JClasspath/index.html b/website/static/odoc/next/infer/JavaFrontend/JClasspath/index.html index f147f3a0789..1e50623d69d 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JClasspath/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JClasspath/index.html @@ -1,2 +1,2 @@ -JClasspath (infer.JavaFrontend.JClasspath)

    Module JavaFrontend.JClasspath

    type file_entry =
    1. | Singleton of IBase.SourceFile.t
    2. | Duplicate of (string list * IBase.SourceFile.t) list

    map entry for source files with potential basename collision within the same compiler call

    type t = {
    1. classpath_channel : Javalib_pack.Javalib.class_path;
    2. sources : file_entry IStdlib.IStd.String.Map.t;
    3. classes : Javalib_pack.JBasics.ClassSet.t;
    }
    type source =
    1. | FromVerboseOut of {
      1. verbose_out_file : string;
      }
      (*

      load the list of source files and the list of classes from the javac verbose file

      *)
    2. | FromArguments of {
      1. path : string;
      2. sources : string list;
      }
      (*

      load the list of source files and the list of classes from Config.generated_classes

      *)
    val with_classpath : f:(t -> unit) -> source -> unit

    load a class path, pass it to f and cleanup after f is done

    \ No newline at end of file +JClasspath (infer.JavaFrontend.JClasspath)

    Module JavaFrontend.JClasspath

    type file_entry =
    1. | Singleton of IBase.SourceFile.t
    2. | Duplicate of (string list * IBase.SourceFile.t) list

    map entry for source files with potential basename collision within the same compiler call

    type t = {
    1. classpath_channel : Javalib_pack.Javalib.class_path;
    2. sources : file_entry IStdlib.IStd.String.Map.t;
    3. classes : Javalib_pack.JBasics.ClassSet.t;
    }
    type source =
    1. | FromVerboseOut of {
      1. verbose_out_file : string;
      }
      (*

      load the list of source files and the list of classes from the javac verbose file

      *)
    2. | FromArguments of {
      1. path : string;
      2. sources : string list;
      }
      (*

      load the list of source files and the list of classes from Config.generated_classes

      *)
    val with_classpath : f:(t -> unit) -> source -> unit

    load a class path, pass it to f and cleanup after f is done

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JContext/index.html b/website/static/odoc/next/infer/JavaFrontend/JContext/index.html index 24902e25c04..3bb55edfaa5 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JContext/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JContext/index.html @@ -1,9 +1,9 @@ -JContext (infer.JavaFrontend.JContext)

    Module JavaFrontend.JContext

    type jump_kind =
    1. | Next
    2. | Jump of int
    3. | Exit

    data structure for representing whether an instruction is a goto, a return or a standard instruction.

    module NodeTbl : IStdlib.IStd.Caml.Hashtbl.S with type key = IR.Procdesc.Node.t

    Hastable for storing nodes that correspond to if-instructions. These are used when adding the edges in the contrl flow graph.

    type icfg = {
    1. tenv : IR.Tenv.t;
    2. cfg : IR.Cfg.t;
    }

    data structure for saving the three structures tht contain the intermediate representation of a file: the type environment, the control graph and the control flow graph

    type t = private {
    1. icfg : icfg;
    2. procdesc : IR.Procdesc.t;
    3. impl : Sawja_pack.JBir.t;
    4. mutable var_map : (IR.Pvar.t * IR.Typ.t * IR.Typ.t) Sawja_pack.JBir.VarMap.t;
    5. if_jumps : int NodeTbl.t;
    6. goto_jumps : (int, jump_kind) IStdlib.IStd.Caml.Hashtbl.t;
    7. cn : Javalib_pack.JBasics.class_name;
    8. source_file : IBase.SourceFile.t;
    9. program : JProgramDesc.t;
    }

    data structure for storing the context elements.

    val create_context : +JContext (infer.JavaFrontend.JContext)

    Module JavaFrontend.JContext

    type jump_kind =
    1. | Next
    2. | Jump of int
    3. | Exit

    data structure for representing whether an instruction is a goto, a return or a standard instruction.

    module NodeTbl : IStdlib.IStd.Caml.Hashtbl.S with type key = IR.Procdesc.Node.t

    Hastable for storing nodes that correspond to if-instructions. These are used when adding the edges in the contrl flow graph.

    type icfg = {
    1. tenv : IR.Tenv.t;
    2. cfg : IR.Cfg.t;
    }

    data structure for saving the three structures tht contain the intermediate representation of a file: the type environment, the control graph and the control flow graph

    type t = private {
    1. icfg : icfg;
    2. procdesc : IR.Procdesc.t;
    3. impl : Sawja_pack.JBir.t;
    4. mutable var_map : (IR.Pvar.t * IR.Typ.t * IR.Typ.t) Sawja_pack.JBir.VarMap.t;
    5. if_jumps : int NodeTbl.t;
    6. goto_jumps : (int, jump_kind) IStdlib.IStd.Caml.Hashtbl.t;
    7. cn : Javalib_pack.JBasics.class_name;
    8. source_file : IBase.SourceFile.t;
    9. program : JProgramDesc.t;
    }

    data structure for storing the context elements.

    val create_context : icfg -> IR.Procdesc.t -> Sawja_pack.JBir.t -> Javalib_pack.JBasics.class_name -> IBase.SourceFile.t -> JProgramDesc.t -> - t

    cretes a context for a given method.

    val get_tenv : t -> IR.Tenv.t

    returns the type environment that corresponds to the current file.

    val add_if_jump : t -> IR.Procdesc.Node.t -> int -> unit

    adds to the context the line that an if-node will jump to

    val get_if_jump : t -> IR.Procdesc.Node.t -> int option

    returns whether the given node corresponds to an if-instruction

    val add_goto_jump : t -> int -> jump_kind -> unit

    adds to the context the line that the node in the given line will jump to.

    val get_goto_jump : t -> int -> jump_kind

    if the given line corresponds to a goto instruction, then returns the line where it jumps to, otherwise returns the next line.

    val is_goto_jump : t -> int -> bool

    returns whether the given line corresponds to a goto instruction.

    val set_pvar : t -> Sawja_pack.JBir.var -> IR.Typ.t -> IR.Pvar.t

    set_pvar context var type adds a variable with a type to the context

    val get_var_type : t -> Sawja_pack.JBir.var -> IR.Typ.t option

    get_var_type context var returns the type of the variable, if the variable is in the context

    val reset_pvar_type : t -> unit

    resets the dynamic type of the variables in the context.

    val reset_exn_node_table : unit -> unit

    resets the hashtable mapping methods to their exception nodes

    val add_exn_node : IR.Procname.t -> IR.Procdesc.Node.t -> unit

    adds the exception node for a given method

    \ No newline at end of file + t

    cretes a context for a given method.

    val get_tenv : t -> IR.Tenv.t

    returns the type environment that corresponds to the current file.

    val add_if_jump : t -> IR.Procdesc.Node.t -> int -> unit

    adds to the context the line that an if-node will jump to

    val get_if_jump : t -> IR.Procdesc.Node.t -> int option

    returns whether the given node corresponds to an if-instruction

    val add_goto_jump : t -> int -> jump_kind -> unit

    adds to the context the line that the node in the given line will jump to.

    val get_goto_jump : t -> int -> jump_kind

    if the given line corresponds to a goto instruction, then returns the line where it jumps to, otherwise returns the next line.

    val is_goto_jump : t -> int -> bool

    returns whether the given line corresponds to a goto instruction.

    val set_pvar : t -> Sawja_pack.JBir.var -> IR.Typ.t -> IR.Pvar.t

    set_pvar context var type adds a variable with a type to the context

    val get_var_type : t -> Sawja_pack.JBir.var -> IR.Typ.t option

    get_var_type context var returns the type of the variable, if the variable is in the context

    val reset_pvar_type : t -> unit

    resets the dynamic type of the variables in the context.

    val reset_exn_node_table : unit -> unit

    resets the hashtable mapping methods to their exception nodes

    val add_exn_node : IR.Procname.t -> IR.Procdesc.Node.t -> unit

    adds the exception node for a given method

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JFrontend/index.html b/website/static/odoc/next/infer/JavaFrontend/JFrontend/index.html index 24568481713..c089aaff295 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JFrontend/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JFrontend/index.html @@ -1,5 +1,5 @@ -JFrontend (infer.JavaFrontend.JFrontend)

    Module JavaFrontend.JFrontend

    val classname_path : Javalib_pack.JBasics.class_name -> string

    path_of_cached_classname cn returns the path of a cached classname

    val cache_classname : Javalib_pack.JBasics.class_name -> unit

    cache_classname cn stores the classname to the disk

    val is_classname_cached : Javalib_pack.JBasics.class_name -> bool

    is_classname_cached cn

    val compute_source_icfg : +JFrontend (infer.JavaFrontend.JFrontend)

    Module JavaFrontend.JFrontend

    val classname_path : Javalib_pack.JBasics.class_name -> string

    path_of_cached_classname cn returns the path of a cached classname

    val cache_classname : Javalib_pack.JBasics.class_name -> unit

    cache_classname cn stores the classname to the disk

    val is_classname_cached : Javalib_pack.JBasics.class_name -> bool

    is_classname_cached cn

    val compute_source_icfg : JProgramDesc.t -> IR.Tenv.t -> string -> @@ -10,4 +10,4 @@ JProgramDesc.t -> IR.Tenv.t -> Javalib_pack.JCode.jcode Javalib_pack.Javalib.interface_or_class -> - IR.Cfg.t

    Compute the CFG for a class

    \ No newline at end of file + IR.Cfg.t

    Compute the CFG for a class

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JMain/index.html b/website/static/odoc/next/infer/JavaFrontend/JMain/index.html index 29c4e1d814e..61c2dde8437 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JMain/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JMain/index.html @@ -1,2 +1,2 @@ -JMain (infer.JavaFrontend.JMain)

    Module JavaFrontend.JMain

    val from_arguments : sources:string list -> string -> unit

    loads the source files from command line arguments and translates them

    val from_verbose_out : string -> unit

    loads the source files from javac's verbose output translates them

    \ No newline at end of file +JMain (infer.JavaFrontend.JMain)

    Module JavaFrontend.JMain

    val from_arguments : sources:string list -> string -> unit

    loads the source files from command line arguments and translates them

    val from_verbose_out : string -> unit

    loads the source files from javac's verbose output translates them

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JModels/index.html b/website/static/odoc/next/infer/JavaFrontend/JModels/index.html index 5111244525a..6e66a16ad9e 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JModels/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JModels/index.html @@ -1,5 +1,5 @@ -JModels (infer.JavaFrontend.JModels)

    Module JavaFrontend.JModels

    val load_models : jar_filename:string -> unit

    Sets the procnames in the given jar file as models

    val get_classmap : +JModels (infer.JavaFrontend.JModels)

    Module JavaFrontend.JModels

    val load_models : jar_filename:string -> unit

    Sets the procnames in the given jar file as models

    val get_classmap : unit -> Javalib_pack.JCode.jcode Javalib_pack.Javalib.interface_or_class - Javalib_pack.JBasics.ClassMap.t

    get map of model classes

    \ No newline at end of file + Javalib_pack.JBasics.ClassMap.t

    get map of model classes

    diff --git a/website/static/odoc/next/infer/JavaFrontend/JProgramDesc/index.html b/website/static/odoc/next/infer/JavaFrontend/JProgramDesc/index.html index dd3e11d85df..670ee5cf42e 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JProgramDesc/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JProgramDesc/index.html @@ -1,5 +1,5 @@ -JProgramDesc (infer.JavaFrontend.JProgramDesc)

    Module JavaFrontend.JProgramDesc

    module Classmap : +JProgramDesc (infer.JavaFrontend.JProgramDesc)

    Module JavaFrontend.JProgramDesc

    module Classmap : IStdlib.IStd.Caml.Hashtbl.S with type key = Javalib_pack.JBasics.class_name
    type classmap = Javalib_pack.JCode.jcode Javalib_pack.Javalib.interface_or_class Classmap.t
    type t
    val get_classmap : t -> classmap
    val get_matching_class_names : t -> @@ -21,9 +21,9 @@ Javalib_pack.JBasics.method_signature -> unit

    add the class name of method signature to the list of callees

    val set_callee_translated : t -> IR.Procname.t -> unit

    set that the CFG for the procedure has been created

    val iter_missing_callees : t -> - f: + f: (IR.Procname.t -> Javalib_pack.JBasics.class_name -> Javalib_pack.JBasics.method_signature -> unit) -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceAST/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceAST/index.html index 59359b554d9..db5cca4a87f 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceAST/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceAST/index.html @@ -1,5 +1,5 @@ -JSourceAST (infer.JavaFrontend.JSourceAST)

    Module JavaFrontend.JSourceAST

    type location = {
    1. line : int;
    2. col : int;
    }
    type class_kind =
    1. | Class of string
    2. | Interface of string
    3. | AnonymousClass
    4. | Enum of string
    type class_or_interface = {
    1. location : location;
    2. kind : class_kind;
    3. inner_elements : class_or_interface list;
    }
    type file_content = {
    1. package : string option;
    2. classes : class_or_interface list;
    }
    val iter_on_declarations : - action_on_class_location:(classname:string -> col:int -> line:int -> unit) -> +JSourceAST (infer.JavaFrontend.JSourceAST)

    Module JavaFrontend.JSourceAST

    type location = {
    1. line : int;
    2. col : int;
    }
    type class_kind =
    1. | Class of string
    2. | Interface of string
    3. | AnonymousClass
    4. | Enum of string
    type class_or_interface = {
    1. location : location;
    2. kind : class_kind;
    3. inner_elements : class_or_interface list;
    }
    type file_content = {
    1. package : string option;
    2. classes : class_or_interface list;
    }
    val iter_on_declarations : + action_on_class_location:(classname:string -> col:int -> line:int -> unit) -> file_content -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/Array/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/Array/index.html index 55a0af0ca49..df9c81822ff 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/Array/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/Array/index.html @@ -1,5 +1,5 @@ -Array (infer.JavaFrontend.JSourceFileInfo.Array)

    Module JSourceFileInfo.Array

    include module type of struct include IStdlib.IStd.Array end
    type !'a t = 'a Base.Array.t
    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    val quickcheck_generator : +Array (infer.JavaFrontend.JSourceFileInfo.Array)

    Module JSourceFileInfo.Array

    include module type of struct include IStdlib.IStd.Array end
    type !'a t = 'a Base.Array.t
    val bin_shape_t : Bin_prot.Shape.t -> Bin_prot.Shape.t
    val bin_size_t : ('a, 'a t) Bin_prot.Size.sizer1
    val bin_write_t : ('a, 'a t) Bin_prot.Write.writer1
    val bin_read_t : ('a, 'a t) Bin_prot.Read.reader1
    val __bin_read_t__ : ('a, int -> 'a t) Bin_prot.Read.reader1
    val bin_writer_t : ('a, 'a t) Bin_prot.Type_class.S1.writer
    val bin_reader_t : ('a, 'a t) Bin_prot.Type_class.S1.reader
    val bin_t : ('a, 'a t) Bin_prot.Type_class.S1.t
    val quickcheck_generator : 'a Base_quickcheck.Generator.t -> 'a t Base_quickcheck.Generator.t
    val quickcheck_observer : 'a Base_quickcheck.Observer.t -> @@ -10,25 +10,25 @@ 'a t Typerep_lib.Std_internal.Typerep.t
    val typename_of_t : 'a Typerep_lib.Typename.t -> 'a t Typerep_lib.Typename.t
    val compare : 'a Base__Ppx_compare_lib.compare -> 'a t Base__Ppx_compare_lib.compare
    val t_of_sexp : (Sexplib0__.Sexp.t -> 'a) -> Sexplib0__.Sexp.t -> 'a t
    val sexp_of_t : ('a -> Sexplib0__.Sexp.t) -> 'a t -> Sexplib0__.Sexp.t
    val t_sexp_grammar : 'a Sexplib0.Sexp_grammar.t -> 'a t Sexplib0.Sexp_grammar.t
    val binary_search_segmented : - ('a t, 'a) Base__Binary_searchable_intf.binary_search_segmented
    val mem : 'a t -> 'a -> equal:('a -> 'a -> bool) -> bool
    val is_empty : 'a t -> bool
    val iter : 'a t -> f:('a -> unit) -> unit
    val fold : 'a t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accum
    val fold_result : + ('a t, 'a) Base__Binary_searchable_intf.binary_search_segmented
    val mem : 'a t -> 'a -> equal:('a -> 'a -> bool) -> bool
    val is_empty : 'a t -> bool
    val iter : 'a t -> f:('a -> unit) -> unit
    val fold : 'a t -> init:'accum -> f:('accum -> 'a -> 'accum) -> 'accum
    val fold_result : 'a t -> - init:'accum -> - f:('accum -> 'a -> ('accum, 'e) Base__.Result.t) -> + init:'accum -> + f:('accum -> 'a -> ('accum, 'e) Base__.Result.t) -> ('accum, 'e) Base__.Result.t
    val fold_until : 'a t -> - init:'accum -> - f:('accum -> 'a -> ('accum, 'final) Base__Container_intf.Continue_or_stop.t) -> - finish:('accum -> 'final) -> - 'final
    val exists : 'a t -> f:('a -> bool) -> bool
    val for_all : 'a t -> f:('a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val sum : + init:'accum -> + f:('accum -> 'a -> ('accum, 'final) Base__Container_intf.Continue_or_stop.t) -> + finish:('accum -> 'final) -> + 'final
    val exists : 'a t -> f:('a -> bool) -> bool
    val for_all : 'a t -> f:('a -> bool) -> bool
    val count : 'a t -> f:('a -> bool) -> int
    val sum : (module Base__Container_intf.Summable with type t = 'sum) -> 'a t -> - f:('a -> 'sum) -> - 'sum
    val find : 'a t -> f:('a -> bool) -> 'a option
    val find_map : 'a t -> f:('a -> 'b option) -> 'b option
    val to_list : 'a t -> 'a list
    val to_array : 'a t -> 'a array
    val min_elt : 'a t -> compare:('a -> 'a -> int) -> 'a option
    val max_elt : 'a t -> compare:('a -> 'a -> int) -> 'a option
    val invariant : 'a Base__Invariant_intf.inv -> 'a t Base__Invariant_intf.inv
    val max_length : int
    val length : 'a array -> int
    val get : 'a t -> int -> 'a
    val set : 'a t -> int -> 'a -> unit
    val unsafe_get : 'a t -> int -> 'a
    val unsafe_set : 'a t -> int -> 'a -> unit
    val create : len:int -> 'a -> 'a t
    val create_float_uninitialized : len:int -> float t
    val init : int -> f:(int -> 'a) -> 'a t
    val make_matrix : dimx:int -> dimy:int -> 'a -> 'a t t
    val copy_matrix : 'a t t -> 'a t t
    val append : 'a t -> 'a t -> 'a t
    val concat : 'a t list -> 'a t
    val copy : 'a t -> 'a t
    val fill : 'a t -> pos:int -> len:int -> 'a -> unit
    val blit : ('a t, 'a t) Base__Blit_intf.blit
    val blito : ('a t, 'a t) Base__Blit_intf.blito
    val unsafe_blit : ('a t, 'a t) Base__Blit_intf.blit
    val sub : ('a t, 'a t) Base__Blit_intf.sub
    val subo : ('a t, 'a t) Base__Blit_intf.subo
    val of_list : 'a list -> 'a t
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val folding_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'c t
    val folding_mapi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b * 'c) -> 'c t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val iteri : 'a t -> f:(int -> 'a -> unit) -> unit
    val mapi : 'a t -> f:(int -> 'a -> 'b) -> 'b t
    val foldi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b) -> 'b
    val fold_right : 'a t -> f:('a -> 'b -> 'b) -> init:'b -> 'b
    val sort : ?pos:int -> ?len:int -> 'a t -> compare:('a -> 'a -> int) -> unit
    val stable_sort : 'a t -> compare:('a -> 'a -> int) -> unit
    val is_sorted : 'a t -> compare:('a -> 'a -> int) -> bool
    val is_sorted_strictly : 'a t -> compare:('a -> 'a -> int) -> bool
    val merge : 'a t -> 'a t -> compare:('a -> 'a -> int) -> 'a t
    val concat_map : 'a t -> f:('a -> 'b array) -> 'b array
    val concat_mapi : 'a t -> f:(int -> 'a -> 'b array) -> 'b array
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val partitioni_tf : 'a t -> f:(int -> 'a -> bool) -> 'a t * 'a t
    val cartesian_product : 'a t -> 'b t -> ('a * 'b) t
    val transpose : 'a t t -> 'a t t option
    val transpose_exn : 'a t t -> 'a t t
    val filter_opt : 'a option t -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(int -> 'a -> 'b option) -> 'b t
    val for_alli : 'a t -> f:(int -> 'a -> bool) -> bool
    val existsi : 'a t -> f:(int -> 'a -> bool) -> bool
    val counti : 'a t -> f:(int -> 'a -> bool) -> int
    val iter2_exn : 'a t -> 'b t -> f:('a -> 'b -> unit) -> unit
    val map2_exn : 'a t -> 'b t -> f:('a -> 'b -> 'c) -> 'c t
    val fold2_exn : 'a t -> 'b t -> init:'c -> f:('c -> 'a -> 'b -> 'c) -> 'c
    val for_all2_exn : 'a t -> 'b t -> f:('a -> 'b -> bool) -> bool
    val exists2_exn : 'a t -> 'b t -> f:('a -> 'b -> bool) -> bool
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(int -> 'a -> bool) -> 'a t
    val swap : 'a t -> int -> int -> unit
    val rev_inplace : 'a t -> unit
    val rev : 'a t -> 'a t
    val of_list_rev : 'a list -> 'a t
    val of_list_map : 'a list -> f:('a -> 'b) -> 'b t
    val of_list_mapi : 'a list -> f:(int -> 'a -> 'b) -> 'b t
    val of_list_rev_map : 'a list -> f:('a -> 'b) -> 'b t
    val of_list_rev_mapi : 'a list -> f:(int -> 'a -> 'b) -> 'b t
    val map_inplace : 'a t -> f:('a -> 'a) -> unit
    val find_exn : 'a t -> f:('a -> bool) -> 'a
    val find_map_exn : 'a t -> f:('a -> 'b option) -> 'b
    val findi : 'a t -> f:(int -> 'a -> bool) -> (int * 'a) option
    val findi_exn : 'a t -> f:(int -> 'a -> bool) -> int * 'a
    val find_mapi : 'a t -> f:(int -> 'a -> 'b option) -> 'b option
    val find_mapi_exn : 'a t -> f:(int -> 'a -> 'b option) -> 'b
    val find_consecutive_duplicate : + f:('a -> 'sum) -> + 'sum
    val find : 'a t -> f:('a -> bool) -> 'a option
    val find_map : 'a t -> f:('a -> 'b option) -> 'b option
    val to_list : 'a t -> 'a list
    val to_array : 'a t -> 'a array
    val min_elt : 'a t -> compare:('a -> 'a -> int) -> 'a option
    val max_elt : 'a t -> compare:('a -> 'a -> int) -> 'a option
    val invariant : 'a Base__Invariant_intf.inv -> 'a t Base__Invariant_intf.inv
    val max_length : int
    val length : 'a array -> int
    val get : 'a t -> int -> 'a
    val set : 'a t -> int -> 'a -> unit
    val unsafe_get : 'a t -> int -> 'a
    val unsafe_set : 'a t -> int -> 'a -> unit
    val create : len:int -> 'a -> 'a t
    val create_float_uninitialized : len:int -> float t
    val init : int -> f:(int -> 'a) -> 'a t
    val make_matrix : dimx:int -> dimy:int -> 'a -> 'a t t
    val copy_matrix : 'a t t -> 'a t t
    val append : 'a t -> 'a t -> 'a t
    val concat : 'a t list -> 'a t
    val copy : 'a t -> 'a t
    val fill : 'a t -> pos:int -> len:int -> 'a -> unit
    val blit : ('a t, 'a t) Base__Blit_intf.blit
    val blito : ('a t, 'a t) Base__Blit_intf.blito
    val unsafe_blit : ('a t, 'a t) Base__Blit_intf.blit
    val sub : ('a t, 'a t) Base__Blit_intf.sub
    val subo : ('a t, 'a t) Base__Blit_intf.subo
    val of_list : 'a list -> 'a t
    val map : 'a t -> f:('a -> 'b) -> 'b t
    val folding_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'c t
    val folding_mapi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b * 'c) -> 'c t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val iteri : 'a t -> f:(int -> 'a -> unit) -> unit
    val mapi : 'a t -> f:(int -> 'a -> 'b) -> 'b t
    val foldi : 'a t -> init:'b -> f:(int -> 'b -> 'a -> 'b) -> 'b
    val fold_right : 'a t -> f:('a -> 'b -> 'b) -> init:'b -> 'b
    val sort : ?pos:int -> ?len:int -> 'a t -> compare:('a -> 'a -> int) -> unit
    val stable_sort : 'a t -> compare:('a -> 'a -> int) -> unit
    val is_sorted : 'a t -> compare:('a -> 'a -> int) -> bool
    val is_sorted_strictly : 'a t -> compare:('a -> 'a -> int) -> bool
    val merge : 'a t -> 'a t -> compare:('a -> 'a -> int) -> 'a t
    val concat_map : 'a t -> f:('a -> 'b array) -> 'b array
    val concat_mapi : 'a t -> f:(int -> 'a -> 'b array) -> 'b array
    val partition_tf : 'a t -> f:('a -> bool) -> 'a t * 'a t
    val partitioni_tf : 'a t -> f:(int -> 'a -> bool) -> 'a t * 'a t
    val cartesian_product : 'a t -> 'b t -> ('a * 'b) t
    val transpose : 'a t t -> 'a t t option
    val transpose_exn : 'a t t -> 'a t t
    val filter_opt : 'a option t -> 'a t
    val filter_map : 'a t -> f:('a -> 'b option) -> 'b t
    val filter_mapi : 'a t -> f:(int -> 'a -> 'b option) -> 'b t
    val for_alli : 'a t -> f:(int -> 'a -> bool) -> bool
    val existsi : 'a t -> f:(int -> 'a -> bool) -> bool
    val counti : 'a t -> f:(int -> 'a -> bool) -> int
    val iter2_exn : 'a t -> 'b t -> f:('a -> 'b -> unit) -> unit
    val map2_exn : 'a t -> 'b t -> f:('a -> 'b -> 'c) -> 'c t
    val fold2_exn : 'a t -> 'b t -> init:'c -> f:('c -> 'a -> 'b -> 'c) -> 'c
    val for_all2_exn : 'a t -> 'b t -> f:('a -> 'b -> bool) -> bool
    val exists2_exn : 'a t -> 'b t -> f:('a -> 'b -> bool) -> bool
    val filter : 'a t -> f:('a -> bool) -> 'a t
    val filteri : 'a t -> f:(int -> 'a -> bool) -> 'a t
    val swap : 'a t -> int -> int -> unit
    val rev_inplace : 'a t -> unit
    val rev : 'a t -> 'a t
    val of_list_rev : 'a list -> 'a t
    val of_list_map : 'a list -> f:('a -> 'b) -> 'b t
    val of_list_mapi : 'a list -> f:(int -> 'a -> 'b) -> 'b t
    val of_list_rev_map : 'a list -> f:('a -> 'b) -> 'b t
    val of_list_rev_mapi : 'a list -> f:(int -> 'a -> 'b) -> 'b t
    val map_inplace : 'a t -> f:('a -> 'a) -> unit
    val find_exn : 'a t -> f:('a -> bool) -> 'a
    val find_map_exn : 'a t -> f:('a -> 'b option) -> 'b
    val findi : 'a t -> f:(int -> 'a -> bool) -> (int * 'a) option
    val findi_exn : 'a t -> f:(int -> 'a -> bool) -> int * 'a
    val find_mapi : 'a t -> f:(int -> 'a -> 'b option) -> 'b option
    val find_mapi_exn : 'a t -> f:(int -> 'a -> 'b option) -> 'b
    val find_consecutive_duplicate : 'a t -> - equal:('a -> 'a -> bool) -> - ('a * 'a) option
    val reduce : 'a t -> f:('a -> 'a -> 'a) -> 'a option
    val reduce_exn : 'a t -> f:('a -> 'a -> 'a) -> 'a
    val permute : - ?random_state:Base__.Random.State.t -> - ?pos:int -> - ?len:int -> + equal:('a -> 'a -> bool) -> + ('a * 'a) option
    val reduce : 'a t -> f:('a -> 'a -> 'a) -> 'a option
    val reduce_exn : 'a t -> f:('a -> 'a -> 'a) -> 'a
    val permute : + ?random_state:Base__.Random.State.t -> + ?pos:int -> + ?len:int -> 'a t -> - unit
    val random_element : ?random_state:Base__.Random.State.t -> 'a t -> 'a option
    val random_element_exn : ?random_state:Base__.Random.State.t -> 'a t -> 'a
    val zip : 'a t -> 'b t -> ('a * 'b) t option
    val zip_exn : 'a t -> 'b t -> ('a * 'b) t
    val unzip : ('a * 'b) t -> 'a t * 'b t
    val sorted_copy : 'a t -> compare:('a -> 'a -> int) -> 'a t
    val last : 'a t -> 'a
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val to_sequence : 'a t -> 'a Base__.Sequence.t
    val to_sequence_mutable : 'a t -> 'a Base__.Sequence.t
    module Private : sig ... end
    module Int : sig ... end
    module Float : sig ... end
    val normalize : 'a t -> Core__.Import.int -> Core__.Import.int
    val slice : 'a t -> Core__.Import.int -> Core__.Import.int -> 'a t
    val nget : 'a t -> Core__.Import.int -> 'a
    val nset : 'a t -> Core__.Import.int -> 'a -> Core__.Import.unit
    module Permissioned : sig ... end
    val make : int -> 'a -> 'a t
    \ No newline at end of file + unit
    val random_element : ?random_state:Base__.Random.State.t -> 'a t -> 'a option
    val random_element_exn : ?random_state:Base__.Random.State.t -> 'a t -> 'a
    val zip : 'a t -> 'b t -> ('a * 'b) t option
    val zip_exn : 'a t -> 'b t -> ('a * 'b) t
    val unzip : ('a * 'b) t -> 'a t * 'b t
    val sorted_copy : 'a t -> compare:('a -> 'a -> int) -> 'a t
    val last : 'a t -> 'a
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val to_sequence : 'a t -> 'a Base__.Sequence.t
    val to_sequence_mutable : 'a t -> 'a Base__.Sequence.t
    module Private : sig ... end
    module Int : sig ... end
    module Float : sig ... end
    val normalize : 'a t -> Core__.Import.int -> Core__.Import.int
    val slice : 'a t -> Core__.Import.int -> Core__.Import.int -> 'a t
    val nget : 'a t -> Core__.Import.int -> 'a
    val nset : 'a t -> Core__.Import.int -> 'a -> Core__.Import.unit
    module Permissioned : sig ... end
    val make : int -> 'a -> 'a t
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/index.html index 88b23ad2806..802f65de2e4 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceFileInfo/index.html @@ -1,5 +1,5 @@ -JSourceFileInfo (infer.JavaFrontend.JSourceFileInfo)

    Module JavaFrontend.JSourceFileInfo

    module Array : sig ... end
    val incr_linenum : Stdlib.Lexing.lexbuf -> unit

    classic Ocamllex function to update current lexbuf line at each end of line

    val end_pos : Stdlib.Lexing.lexbuf -> int * int

    position of the char just after lexbuf

    val location_suffix : string -> Stdlib.Lexing.lexbuf -> int * int

    return the exact position start of the suffix classname in lexbuf

    val location_start : Stdlib.Lexing.lexbuf -> int * int

    return the position start of lexbuf

    type expr =
    1. | AllocExpr
    2. | OtherExpr

    We traverse the structure of the source file by recording the encompassing blocks in a stack of frame. We use the stack to recover the full inner class name at bytecode level

    type frame = {
    1. short_class_name : string;
    2. is_enum : bool;
    3. next_anonymous_class : int;
    4. opened_blocks : int;
    5. exprs : expr list;
    }
    type state = {
    1. stack : frame list;
    2. record_location : classname:string -> col:int -> line:int -> unit;
    }
    val push : frame -> state -> state
    exception Missing_opening_bracket
    exception Missing_opening_parenthesis
    val add_package : string -> state -> state
    val pop_class : state -> state
    val incr_next_anonymous : state -> state
    val add_expr : expr -> state -> state
    val pop_exprs : state -> expr * state
    val in_field_declaration_area : state -> bool
    val get_opened_blocks : state -> int
    val is_enum : state -> bool
    val get_next_anonymous_class : state -> string
    val decr_opened_blocks : state -> state
    val incr_opened_blocks : state -> state
    val long_class_name : string -> state -> string
    val __ocaml_lex_tables : Stdlib.Lexing.lex_tables
    val class_scan : state -> Stdlib.Lexing.lexbuf -> unit
    val __ocaml_lex_class_scan_rec : state -> Stdlib.Lexing.lexbuf -> int -> unit
    val do_at_next_left_bracket : +JSourceFileInfo (infer.JavaFrontend.JSourceFileInfo)

    Module JavaFrontend.JSourceFileInfo

    module Array : sig ... end
    val incr_linenum : Stdlib.Lexing.lexbuf -> unit

    classic Ocamllex function to update current lexbuf line at each end of line

    val end_pos : Stdlib.Lexing.lexbuf -> int * int

    position of the char just after lexbuf

    val location_suffix : string -> Stdlib.Lexing.lexbuf -> int * int

    return the exact position start of the suffix classname in lexbuf

    val location_start : Stdlib.Lexing.lexbuf -> int * int

    return the position start of lexbuf

    type expr =
    1. | AllocExpr
    2. | OtherExpr

    We traverse the structure of the source file by recording the encompassing blocks in a stack of frame. We use the stack to recover the full inner class name at bytecode level

    type frame = {
    1. short_class_name : string;
    2. is_enum : bool;
    3. next_anonymous_class : int;
    4. opened_blocks : int;
    5. exprs : expr list;
    }
    type state = {
    1. stack : frame list;
    2. record_location : classname:string -> col:int -> line:int -> unit;
    }
    val push : frame -> state -> state
    exception Missing_opening_bracket
    exception Missing_opening_parenthesis
    val add_package : string -> state -> state
    val pop_class : state -> state
    val incr_next_anonymous : state -> state
    val add_expr : expr -> state -> state
    val pop_exprs : state -> expr * state
    val in_field_declaration_area : state -> bool
    val get_opened_blocks : state -> int
    val is_enum : state -> bool
    val get_next_anonymous_class : state -> string
    val decr_opened_blocks : state -> state
    val incr_opened_blocks : state -> state
    val long_class_name : string -> state -> string
    val __ocaml_lex_tables : Stdlib.Lexing.lex_tables
    val class_scan : state -> Stdlib.Lexing.lexbuf -> unit
    val __ocaml_lex_class_scan_rec : state -> Stdlib.Lexing.lexbuf -> int -> unit
    val do_at_next_left_bracket : (Stdlib.Lexing.lexbuf -> unit) -> Stdlib.Lexing.lexbuf -> unit
    val __ocaml_lex_do_at_next_left_bracket_rec : @@ -46,4 +46,4 @@ (Stdlib.Lexing.lexbuf -> unit) -> Stdlib.Lexing.lexbuf -> int -> - unit
    val collect_class_location : JProgramDesc.t -> IBase.SourceFile.t -> Base.unit

    We scan source file file and record location of each class declaration

    val debug_on_file : Base.string -> Base.unit
    \ No newline at end of file + unit
    val collect_class_location : JProgramDesc.t -> IBase.SourceFile.t -> Base.unit

    We scan source file file and record location of each class declaration

    val debug_on_file : Base.string -> Base.unit
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceLexer/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceLexer/index.html index 082d5d9c7e0..07316c45dbf 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceLexer/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceLexer/index.html @@ -1,5 +1,5 @@ -JSourceLexer (infer.JavaFrontend.JSourceLexer)

    Module JavaFrontend.JSourceLexer

    val incr_linenum : Stdlib.Lexing.lexbuf -> unit

    classic Ocamllex function to update current lexbuf line at each end of line

    val __ocaml_lex_tables : Stdlib.Lexing.lex_tables
    val class_scan : Stdlib.Lexing.lexbuf -> JSourceParser.token
    val __ocaml_lex_class_scan_rec : +JSourceLexer (infer.JavaFrontend.JSourceLexer)

    Module JavaFrontend.JSourceLexer

    val incr_linenum : Stdlib.Lexing.lexbuf -> unit

    classic Ocamllex function to update current lexbuf line at each end of line

    val __ocaml_lex_tables : Stdlib.Lexing.lex_tables
    val class_scan : Stdlib.Lexing.lexbuf -> JSourceParser.token
    val __ocaml_lex_class_scan_rec : Stdlib.Lexing.lexbuf -> int -> JSourceParser.token
    val skip_well_parenthesized_parentheses : @@ -25,4 +25,4 @@ (Stdlib.Lexing.lexbuf -> JSourceParser.token) -> Stdlib.Lexing.lexbuf -> int -> - JSourceParser.token
    \ No newline at end of file + JSourceParser.token
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceLocations/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceLocations/index.html index e73c20019cc..68abf4885ac 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceLocations/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceLocations/index.html @@ -1,2 +1,2 @@ -JSourceLocations (infer.JavaFrontend.JSourceLocations)

    Module JavaFrontend.JSourceLocations

    val collect_class_location : JProgramDesc.t -> IBase.SourceFile.t -> unit
    val debug_on_file : string -> unit
    \ No newline at end of file +JSourceLocations (infer.JavaFrontend.JSourceLocations)

    Module JavaFrontend.JSourceLocations

    val collect_class_location : JProgramDesc.t -> IBase.SourceFile.t -> unit
    val debug_on_file : string -> unit
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/Incremental/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/Incremental/index.html index c20703989f8..f84a5fd5f80 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/Incremental/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/Incremental/index.html @@ -1,4 +1,4 @@ -Incremental (infer.JavaFrontend.JSourceParser.Incremental)

    Module JSourceParser.Incremental

    val main : +Incremental (infer.JavaFrontend.JSourceParser.Incremental)

    Module JSourceParser.Incremental

    val main : Stdlib.Lexing.position -> - JSourceAST.file_content MenhirInterpreter.checkpoint
    \ No newline at end of file + JSourceAST.file_content MenhirInterpreter.checkpoint
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/MenhirInterpreter/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/MenhirInterpreter/index.html index c3367704a18..c5ae0baeab2 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/MenhirInterpreter/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/MenhirInterpreter/index.html @@ -1,17 +1,17 @@ -MenhirInterpreter (infer.JavaFrontend.JSourceParser.MenhirInterpreter)

    Module JSourceParser.MenhirInterpreter

    include MenhirLib.IncrementalEngine.INCREMENTAL_ENGINE with type token = token
    type token = token
    type production
    type 'a env
    type !'a checkpoint = private
    1. | InputNeeded of 'a env
    2. | Shifting of 'a env * 'a env * bool
    3. | AboutToReduce of 'a env * production
    4. | HandlingError of 'a env
    5. | Accepted of 'a
    6. | Rejected
    val offer : +MenhirInterpreter (infer.JavaFrontend.JSourceParser.MenhirInterpreter)

    Module JSourceParser.MenhirInterpreter

    include MenhirLib.IncrementalEngine.INCREMENTAL_ENGINE with type token = token
    type token = token
    type production
    type 'a env
    type !'a checkpoint = private
    1. | InputNeeded of 'a env
    2. | Shifting of 'a env * 'a env * bool
    3. | AboutToReduce of 'a env * production
    4. | HandlingError of 'a env
    5. | Accepted of 'a
    6. | Rejected
    val offer : 'a checkpoint -> (token * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position) -> - 'a checkpoint
    type strategy = [
    1. | `Legacy
    2. | `Simplified
    ]
    val resume : ?strategy:strategy -> 'a checkpoint -> 'a checkpoint
    type supplier = + 'a checkpoint
    type strategy = [
    1. | `Legacy
    2. | `Simplified
    ]
    val resume : ?strategy:strategy -> 'a checkpoint -> 'a checkpoint
    type supplier = unit -> token * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position
    val lexer_lexbuf_to_supplier : (Stdlib.Lexing.lexbuf -> token) -> Stdlib.Lexing.lexbuf -> - supplier
    val loop : ?strategy:strategy -> supplier -> 'a checkpoint -> 'a
    val loop_handle : + supplier
    val loop : ?strategy:strategy -> supplier -> 'a checkpoint -> 'a
    val loop_handle : ('a -> 'answer) -> ('a checkpoint -> 'answer) -> supplier -> @@ -30,4 +30,4 @@ * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position -> element
    type stack = element MenhirLib.General.stream
    val stack : 'a env -> stack
    val top : 'a env -> element option
    val pop_many : int -> 'a env -> 'a env option
    val get : int -> 'a env -> element option
    val current_state_number : 'a env -> int
    val equal : 'a env -> 'a env -> bool
    val positions : 'a env -> - MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position
    val env_has_default_reduction : 'a env -> bool
    val state_has_default_reduction : 'a lr1state -> bool
    val pop : 'a env -> 'a env option
    val force_reduction : production -> 'a env -> 'a env
    val input_needed : 'a env -> 'a checkpoint
    \ No newline at end of file + MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position
    val env_has_default_reduction : 'a env -> bool
    val state_has_default_reduction : 'a lr1state -> bool
    val pop : 'a env -> 'a env option
    val force_reduction : production -> 'a env -> 'a env
    val input_needed : 'a env -> 'a checkpoint
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/index.html b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/index.html index ed7b049ec50..705ced7f8e2 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JSourceParser/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JSourceParser/index.html @@ -1,5 +1,5 @@ -JSourceParser (infer.JavaFrontend.JSourceParser)

    Module JavaFrontend.JSourceParser

    type token =
    1. | YIELD
    2. | WHILE
    3. | VOID
    4. | VAR
    5. | TRY
    6. | TRUE
    7. | TILDE
    8. | THROWS
    9. | THROW
    10. | THREEDOTS
    11. | THIS
    12. | SYNCHRONIZED
    13. | STRING of string
    14. | SEMICOLON
    15. | RSBRACKET
    16. | RPAREN
    17. | RETURN
    18. | RBRACKET
    19. | RANGLE
    20. | QMARK
    21. | PRIMTYPE
    22. | PIPE
    23. | PACKAGE
    24. | NULL
    25. | NEW
    26. | LSBRACKET
    27. | LPAREN
    28. | LBRACKET
    29. | LANGLE
    30. | INTERFACE
    31. | INTEGER of string
    32. | INSTANCEOF
    33. | INCR_DECR
    34. | IMPORT
    35. | IMPLEMENTS
    36. | IF
    37. | IDENT of string
    38. | FOR
    39. | FLOATINGPOINT of string
    40. | FINALLY
    41. | FALSE
    42. | EXTENDS
    43. | EQ
    44. | EOF
    45. | ENUM
    46. | ELSE
    47. | DOT
    48. | DO
    49. | CONTINUE
    50. | COMMA
    51. | COLON
    52. | CLASS
    53. | CHAR of string
    54. | CATCH
    55. | BREAK
    56. | BINOP
    57. | BANG
    58. | ASSIGNOP
    59. | ASSERT
    exception Error
    val main : +JSourceParser (infer.JavaFrontend.JSourceParser)

    Module JavaFrontend.JSourceParser

    type token =
    1. | YIELD
    2. | WHILE
    3. | VOID
    4. | VAR
    5. | TRY
    6. | TRUE
    7. | TILDE
    8. | THROWS
    9. | THROW
    10. | THREEDOTS
    11. | THIS
    12. | SYNCHRONIZED
    13. | STRING of string
    14. | SEMICOLON
    15. | RSBRACKET
    16. | RPAREN
    17. | RETURN
    18. | RBRACKET
    19. | RANGLE
    20. | QMARK
    21. | PRIMTYPE
    22. | PIPE
    23. | PACKAGE
    24. | NULL
    25. | NEW
    26. | LSBRACKET
    27. | LPAREN
    28. | LBRACKET
    29. | LANGLE
    30. | INTERFACE
    31. | INTEGER of string
    32. | INSTANCEOF
    33. | INCR_DECR
    34. | IMPORT
    35. | IMPLEMENTS
    36. | IF
    37. | IDENT of string
    38. | FOR
    39. | FLOATINGPOINT of string
    40. | FINALLY
    41. | FALSE
    42. | EXTENDS
    43. | EQ
    44. | EOF
    45. | ENUM
    46. | ELSE
    47. | DOT
    48. | DO
    49. | CONTINUE
    50. | COMMA
    51. | COLON
    52. | CLASS
    53. | CHAR of string
    54. | CATCH
    55. | BREAK
    56. | BINOP
    57. | BANG
    58. | ASSIGNOP
    59. | ASSERT
    exception Error
    val main : (Stdlib.Lexing.lexbuf -> token) -> Stdlib.Lexing.lexbuf -> - JSourceAST.file_content
    module MenhirInterpreter : sig ... end
    module Incremental : sig ... end
    \ No newline at end of file + JSourceAST.file_content
    module MenhirInterpreter : sig ... end
    module Incremental : sig ... end
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JTrans/index.html b/website/static/odoc/next/infer/JavaFrontend/JTrans/index.html index 91574614af4..4fb4ca77f9b 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JTrans/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JTrans/index.html @@ -1,5 +1,5 @@ -JTrans (infer.JavaFrontend.JTrans)

    Module JavaFrontend.JTrans

    Data structure for storing the results of the translation of an instruction.

    val is_java_native : +JTrans (infer.JavaFrontend.JTrans)

    Module JavaFrontend.JTrans

    Data structure for storing the results of the translation of an instruction.

    val is_java_native : Javalib_pack.JCode.jcode Javalib_pack.Javalib.concrete_method -> bool
    val create_callee_attributes : IR.Tenv.t -> @@ -36,4 +36,4 @@ * IR.Procdesc.Node.t * IR.Procdesc.Node.t * Sawja_pack.JBir.t) - option

    create_procdesc source_file program linereader icfg cm proc_name creates a procedure description for the concrete method cm and adds it to cfg

    val instruction : JContext.t -> int -> Sawja_pack.JBir.instr -> translation

    translates an instruction into a statement node or prune nodes in the cfg

    exception Frontend_error of string
    \ No newline at end of file + option

    create_procdesc source_file program linereader icfg cm proc_name creates a procedure description for the concrete method cm and adds it to cfg

    val instruction : JContext.t -> int -> Sawja_pack.JBir.instr -> translation

    translates an instruction into a statement node or prune nodes in the cfg

    exception Frontend_error of string
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JTransExn/index.html b/website/static/odoc/next/infer/JavaFrontend/JTransExn/index.html index 78eb167b2e2..20d18ae8793 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JTransExn/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JTransExn/index.html @@ -1,8 +1,8 @@ -JTransExn (infer.JavaFrontend.JTransExn)

    Module JavaFrontend.JTransExn

    val create_exception_handlers : +JTransExn (infer.JavaFrontend.JTransExn)

    Module JavaFrontend.JTransExn

    val create_exception_handlers : JContext.t -> IR.Procdesc.Node.t list -> (int -> IR.Procdesc.Node.t list) -> Sawja_pack.JBir.t -> int -> - IR.Procdesc.Node.t list
    \ No newline at end of file + IR.Procdesc.Node.t list
    diff --git a/website/static/odoc/next/infer/JavaFrontend/JTransType/index.html b/website/static/odoc/next/infer/JavaFrontend/JTransType/index.html index ab74fb97425..cd3976816a8 100644 --- a/website/static/odoc/next/infer/JavaFrontend/JTransType/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/JTransType/index.html @@ -1,5 +1,5 @@ -JTransType (infer.JavaFrontend.JTransType)

    Module JavaFrontend.JTransType

    val create_fieldname : +JTransType (infer.JavaFrontend.JTransType)

    Module JavaFrontend.JTransType

    val create_fieldname : Javalib_pack.JBasics.class_name -> Javalib_pack.JBasics.field_signature -> IR.Fieldname.t

    translate the name of the field

    val get_method_kind : @@ -45,4 +45,4 @@ JProgramDesc.t -> IR.Tenv.t -> Javalib_pack.JBasics.method_signature -> - IR.Typ.t

    Returns the return type of the method based on the return type specified in ms.

    val expr_type : JContext.t -> Sawja_pack.JBir.expr -> IR.Typ.t

    translates the type of an expression

    val cast_type : Sawja_pack.JBir.conv -> IR.Typ.t

    translates a conversion type from Java to Sil.

    val create_array_type : IR.Typ.t -> int -> IR.Typ.t

    create_array_type typ dim creates an array type with dimension dim and content typ

    val object_type_to_string : Javalib_pack.JBasics.object_type -> string

    returns a string representation of an object Java type

    \ No newline at end of file + IR.Typ.t

    Returns the return type of the method based on the return type specified in ms.

    val expr_type : JContext.t -> Sawja_pack.JBir.expr -> IR.Typ.t

    translates the type of an expression

    val cast_type : Sawja_pack.JBir.conv -> IR.Typ.t

    translates a conversion type from Java to Sil.

    val create_array_type : IR.Typ.t -> int -> IR.Typ.t

    create_array_type typ dim creates an array type with dimension dim and content typ

    val object_type_to_string : Javalib_pack.JBasics.object_type -> string

    returns a string representation of an object Java type

    diff --git a/website/static/odoc/next/infer/JavaFrontend/index.html b/website/static/odoc/next/infer/JavaFrontend/index.html index 102516ea5a7..29191088465 100644 --- a/website/static/odoc/next/infer/JavaFrontend/index.html +++ b/website/static/odoc/next/infer/JavaFrontend/index.html @@ -1,2 +1,2 @@ -JavaFrontend (infer.JavaFrontend)

    Module JavaFrontend

    module JAnnotation : sig ... end
    module JClasspath : sig ... end
    module JContext : sig ... end
    module JFrontend : sig ... end
    module JMain : sig ... end
    module JModels : sig ... end
    module JProgramDesc : sig ... end
    module JSourceAST : sig ... end
    module JSourceFileInfo : sig ... end
    module JSourceLexer : sig ... end
    module JSourceLocations : sig ... end
    module JSourceParser : sig ... end
    module JTrans : sig ... end
    module JTransExn : sig ... end
    module JTransType : sig ... end
    \ No newline at end of file +JavaFrontend (infer.JavaFrontend)

    Module JavaFrontend

    module JAnnotation : sig ... end
    module JClasspath : sig ... end
    module JContext : sig ... end
    module JFrontend : sig ... end
    module JMain : sig ... end
    module JModels : sig ... end
    module JProgramDesc : sig ... end
    module JSourceAST : sig ... end
    module JSourceFileInfo : sig ... end
    module JSourceLexer : sig ... end
    module JSourceLocations : sig ... end
    module JSourceParser : sig ... end
    module JTrans : sig ... end
    module JTransExn : sig ... end
    module JTransType : sig ... end
    diff --git a/website/static/odoc/next/infer/Labs/ResourceLeakDomain/index.html b/website/static/odoc/next/infer/Labs/ResourceLeakDomain/index.html index f83642ce38c..14ac32812b7 100644 --- a/website/static/odoc/next/infer/Labs/ResourceLeakDomain/index.html +++ b/website/static/odoc/next/infer/Labs/ResourceLeakDomain/index.html @@ -1,2 +1,2 @@ -ResourceLeakDomain (infer.Labs.ResourceLeakDomain)

    Module Labs.ResourceLeakDomain

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t
    type summary = t
    \ No newline at end of file +ResourceLeakDomain (infer.Labs.ResourceLeakDomain)

    Module Labs.ResourceLeakDomain

    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val initial : t
    type summary = t
    diff --git a/website/static/odoc/next/infer/Labs/ResourceLeaks/index.html b/website/static/odoc/next/infer/Labs/ResourceLeaks/index.html index 8be8b9014bd..3c3b5618f9e 100644 --- a/website/static/odoc/next/infer/Labs/ResourceLeaks/index.html +++ b/website/static/odoc/next/infer/Labs/ResourceLeaks/index.html @@ -1,4 +1,4 @@ -ResourceLeaks (infer.Labs.ResourceLeaks)

    Module Labs.ResourceLeaks

    val checker : +ResourceLeaks (infer.Labs.ResourceLeaks)

    Module Labs.ResourceLeaks

    \ No newline at end of file + ResourceLeakDomain.summary option
    diff --git a/website/static/odoc/next/infer/Labs/index.html b/website/static/odoc/next/infer/Labs/index.html index 39708ec540d..dd685a79354 100644 --- a/website/static/odoc/next/infer/Labs/index.html +++ b/website/static/odoc/next/infer/Labs/index.html @@ -1,2 +1,2 @@ -Labs (infer.Labs)

    Module Labs

    module ResourceLeakDomain : sig ... end
    module ResourceLeaks : sig ... end
    \ No newline at end of file +Labs (infer.Labs)

    Module Labs

    module ResourceLeakDomain : sig ... end
    module ResourceLeaks : sig ... end
    diff --git a/website/static/odoc/next/infer/OpenSource/FbCostModels/Call/index.html b/website/static/odoc/next/infer/OpenSource/FbCostModels/Call/index.html index d581a884b91..53d6710bd34 100644 --- a/website/static/odoc/next/infer/OpenSource/FbCostModels/Call/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbCostModels/Call/index.html @@ -1,6 +1,6 @@ -Call (infer.OpenSource.FbCostModels.Call)

    Module FbCostModels.Call

    val dispatch : +Call (infer.OpenSource.FbCostModels.Call)

    Module FbCostModels.Call

    val dispatch : 'context -> 'procname_t -> 'arg_payload_FuncArg_t_list -> - 'f option
    \ No newline at end of file + 'f option
    diff --git a/website/static/odoc/next/infer/OpenSource/FbCostModels/index.html b/website/static/odoc/next/infer/OpenSource/FbCostModels/index.html index 7fe19c6c067..ec7635cd365 100644 --- a/website/static/odoc/next/infer/OpenSource/FbCostModels/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbCostModels/index.html @@ -1,2 +1,2 @@ -FbCostModels (infer.OpenSource.FbCostModels)

    Module OpenSource.FbCostModels

    module Call : sig ... end
    \ No newline at end of file +FbCostModels (infer.OpenSource.FbCostModels)

    Module OpenSource.FbCostModels

    module Call : sig ... end
    diff --git a/website/static/odoc/next/infer/OpenSource/FbGKInteraction/ExpensivenessModel/index.html b/website/static/odoc/next/infer/OpenSource/FbGKInteraction/ExpensivenessModel/index.html index 998ea1c7bde..67b8a6c2107 100644 --- a/website/static/odoc/next/infer/OpenSource/FbGKInteraction/ExpensivenessModel/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbGKInteraction/ExpensivenessModel/index.html @@ -1,2 +1,2 @@ -ExpensivenessModel (infer.OpenSource.FbGKInteraction.ExpensivenessModel)

    Module FbGKInteraction.ExpensivenessModel

    val dispatcher : 'tenv -> 'pname -> 'args -> 'known_expensivene option
    \ No newline at end of file +ExpensivenessModel (infer.OpenSource.FbGKInteraction.ExpensivenessModel)

    Module FbGKInteraction.ExpensivenessModel

    val dispatcher : 'tenv -> 'pname -> 'args -> 'known_expensivene option
    diff --git a/website/static/odoc/next/infer/OpenSource/FbGKInteraction/index.html b/website/static/odoc/next/infer/OpenSource/FbGKInteraction/index.html index bd29da6f378..1f810b127f3 100644 --- a/website/static/odoc/next/infer/OpenSource/FbGKInteraction/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbGKInteraction/index.html @@ -1,7 +1,7 @@ -FbGKInteraction (infer.OpenSource.FbGKInteraction)

    Module OpenSource.FbGKInteraction

    val get_config : is_param:'is_param -> 'exp -> 'config_name option
    val get_config_check : - is_param:'is_param -> +FbGKInteraction (infer.OpenSource.FbGKInteraction)

    Module OpenSource.FbGKInteraction

    val get_config : is_param:'is_param -> 'exp -> 'config_name option
    val get_config_check : + is_param:'is_param -> 'tenv -> 'pname -> 'args -> - 'a option
    val is_lazy_instance : 'pname -> bool
    type known_expensiveness =
    1. | KnownCheap
    2. | KnownExpensive
    module ExpensivenessModel : sig ... end
    val action_message : string
    \ No newline at end of file + 'a option
    val is_lazy_instance : 'pname -> bool
    type known_expensiveness =
    1. | KnownCheap
    2. | KnownExpensive
    module ExpensivenessModel : sig ... end
    val action_message : string
    diff --git a/website/static/odoc/next/infer/OpenSource/FbInternalLinks/index.html b/website/static/odoc/next/infer/OpenSource/FbInternalLinks/index.html index 8eb31d79f39..1a72754414c 100644 --- a/website/static/odoc/next/infer/OpenSource/FbInternalLinks/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbInternalLinks/index.html @@ -1,2 +1,2 @@ -FbInternalLinks (infer.OpenSource.FbInternalLinks)

    Module OpenSource.FbInternalLinks

    val bad_pattern_folly_get_default : string option
    \ No newline at end of file +FbInternalLinks (infer.OpenSource.FbInternalLinks)

    Module OpenSource.FbInternalLinks

    val bad_pattern_folly_get_default : string option
    diff --git a/website/static/odoc/next/infer/OpenSource/FbPulseConfigName/index.html b/website/static/odoc/next/infer/OpenSource/FbPulseConfigName/index.html index 0304f3197b8..074cc23f2f3 100644 --- a/website/static/odoc/next/infer/OpenSource/FbPulseConfigName/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbPulseConfigName/index.html @@ -1,2 +1,2 @@ -FbPulseConfigName (infer.OpenSource.FbPulseConfigName)

    Module OpenSource.FbPulseConfigName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Stdlib.Format.formatter -> t -> unit
    val has_config_read : 'pulse_value_history -> bool
    val of_string : config_type:string -> string -> t
    \ No newline at end of file +FbPulseConfigName (infer.OpenSource.FbPulseConfigName)

    Module OpenSource.FbPulseConfigName

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Stdlib.Format.formatter -> t -> unit
    val has_config_read : 'pulse_value_history -> bool
    val of_string : config_type:string -> string -> t
    diff --git a/website/static/odoc/next/infer/OpenSource/FbPulseModels/index.html b/website/static/odoc/next/infer/OpenSource/FbPulseModels/index.html index ad11f369511..5e1795819d9 100644 --- a/website/static/odoc/next/infer/OpenSource/FbPulseModels/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbPulseModels/index.html @@ -1,2 +1,2 @@ -FbPulseModels (infer.OpenSource.FbPulseModels)

    Module OpenSource.FbPulseModels

    val matchers : 'a list
    \ No newline at end of file +FbPulseModels (infer.OpenSource.FbPulseModels)

    Module OpenSource.FbPulseModels

    val matchers : 'a list
    diff --git a/website/static/odoc/next/infer/OpenSource/FbThreadSafety/index.html b/website/static/odoc/next/infer/OpenSource/FbThreadSafety/index.html index 4aeaeef7886..9872ab3b62e 100644 --- a/website/static/odoc/next/infer/OpenSource/FbThreadSafety/index.html +++ b/website/static/odoc/next/infer/OpenSource/FbThreadSafety/index.html @@ -1,2 +1,2 @@ -FbThreadSafety (infer.OpenSource.FbThreadSafety)

    Module OpenSource.FbThreadSafety

    val is_custom_init : 'tenv_t -> 'procname_t -> bool
    val is_logging_method : 'procname_t -> bool
    \ No newline at end of file +FbThreadSafety (infer.OpenSource.FbThreadSafety)

    Module OpenSource.FbThreadSafety

    val is_custom_init : 'tenv_t -> 'procname_t -> bool
    val is_logging_method : 'procname_t -> bool
    diff --git a/website/static/odoc/next/infer/OpenSource/Scribe/index.html b/website/static/odoc/next/infer/OpenSource/Scribe/index.html index 17236707866..89fb7f65553 100644 --- a/website/static/odoc/next/infer/OpenSource/Scribe/index.html +++ b/website/static/odoc/next/infer/OpenSource/Scribe/index.html @@ -1,2 +1,2 @@ -Scribe (infer.OpenSource.Scribe)

    Module OpenSource.Scribe

    type category =
    1. | InferEvents
    val log : category -> string list -> unit
    \ No newline at end of file +Scribe (infer.OpenSource.Scribe)

    Module OpenSource.Scribe

    type category =
    1. | InferEvents
    val log : category -> string list -> unit
    diff --git a/website/static/odoc/next/infer/OpenSource/index.html b/website/static/odoc/next/infer/OpenSource/index.html index 1cee616fb5f..6670116a5f1 100644 --- a/website/static/odoc/next/infer/OpenSource/index.html +++ b/website/static/odoc/next/infer/OpenSource/index.html @@ -1,2 +1,2 @@ -OpenSource (infer.OpenSource)

    Module OpenSource

    module FbCostModels : sig ... end
    module FbGKInteraction : sig ... end
    module FbPulseConfigName : sig ... end
    module FbPulseModels : sig ... end
    module FbThreadSafety : sig ... end
    module Scribe : sig ... end
    \ No newline at end of file +OpenSource (infer.OpenSource)

    Module OpenSource

    module FbCostModels : sig ... end
    module FbGKInteraction : sig ... end
    module FbPulseConfigName : sig ... end
    module FbPulseModels : sig ... end
    module FbThreadSafety : sig ... end
    module Scribe : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/Pulse/index.html b/website/static/odoc/next/infer/Pulselib/Pulse/index.html index abaedef1893..09b42e91400 100644 --- a/website/static/odoc/next/infer/Pulselib/Pulse/index.html +++ b/website/static/odoc/next/infer/Pulselib/Pulse/index.html @@ -1,5 +1,5 @@ -Pulse (infer.Pulselib.Pulse)

    Module Pulselib.Pulse

    val checker : - ?specialization:(PulseSummary.t * IR.Specialization.t) -> +Pulse (infer.Pulselib.Pulse)

    Module Pulselib.Pulse

    val is_already_specialized : IR.Specialization.t -> PulseSummary.t -> bool
    \ No newline at end of file + PulseSummary.t option
    val is_already_specialized : IR.Specialization.t -> PulseSummary.t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDecompiler/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDecompiler/index.html index 4b75844f52c..5cf620064a8 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDecompiler/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDecompiler/index.html @@ -1,7 +1,7 @@ -PulseAbductiveDecompiler (infer.Pulselib.PulseAbductiveDecompiler)

    Module Pulselib.PulseAbductiveDecompiler

    module AbductiveDomain = PulseAbductiveDomain
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    module DecompilerExpr = PulseDecompilerExpr
    module ValueHistory = PulseValueHistory

    Wrapper to access the PulseDecompiler.t inside AbductiveDomain.t; all of the interface of PulseDecompiler is duplicated for ease of use

    val add_call_source : +PulseAbductiveDecompiler (infer.Pulselib.PulseAbductiveDecompiler)

    Module Pulselib.PulseAbductiveDecompiler

    module AbductiveDomain = PulseAbductiveDomain
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    module DecompilerExpr = PulseDecompilerExpr
    module ValueHistory = PulseValueHistory

    Wrapper to access the PulseDecompiler.t inside AbductiveDomain.t; all of the interface of PulseDecompiler is duplicated for ease of use

    \ No newline at end of file + AbductiveDomain.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/AddressAttributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/AddressAttributes/index.html index 856c5eb4fc9..0ff9cc210f9 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/AddressAttributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/AddressAttributes/index.html @@ -1,5 +1,5 @@ -AddressAttributes (infer.Pulselib.PulseAbductiveDomain.AddressAttributes)

    Module PulseAbductiveDomain.AddressAttributes

    Safe version of PulseBaseAddressAttributes

    val abduce_one : +AddressAttributes (infer.Pulselib.PulseAbductiveDomain.AddressAttributes)

    Module PulseAbductiveDomain.AddressAttributes

    Safe version of PulseBaseAddressAttributes

    \ No newline at end of file + bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Attributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Attributes/index.html index 2bf5340e4e5..4a665c3300d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Attributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Attributes/index.html @@ -1,5 +1,5 @@ -Attributes (infer.Pulselib.PulseAbductiveDomain.CanonValue.Attributes)

    Module CanonValue.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : +Attributes (infer.Pulselib.PulseAbductiveDomain.CanonValue.Attributes)

    Module CanonValue.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : (t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
    val find_opt : t -> t -> Pulselib.PulseBasicInterface.Attributes.t option
    val allocate : @@ -81,8 +81,8 @@ t -> Pulselib.PulseBasicInterface.AbstractValue.t option
    val mark_as_end_of_collection : t -> t -> t
    val is_end_of_collection : t -> t -> bool
    val add_unreachable_at : t -> IBase.Location.t -> t -> t
    val add_copied_return : t -> - source:t -> - is_const_ref:bool -> + source:t -> + is_const_ref:bool -> Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t -> IBase.Location.t -> t -> @@ -94,10 +94,10 @@ t -> (IR.Procname.t * IBase.Location.t * Pulselib.PulseBasicInterface.Trace.t) option
    val remove_allocation_attr : t -> t -> t
    val remove_taint_attrs : t -> t -> t
    val remove_must_be_valid_attr : t -> t -> t
    val initialize : t -> t -> t
    val get_address_of_stack_variable : t -> t -> (IR.Var.t * IBase.Location.t * Pulselib.PulseBasicInterface.ValueHistory.t) - option
    val has_unknown_effect : t -> t -> bool
    \ No newline at end of file + option
    val has_unknown_effect : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Access/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Access/index.html index ef13cfc0551..83ec62af558 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Access/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Access/index.html @@ -1,6 +1,9 @@ -Access (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = t Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType with type t = t Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> +Access (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = t PulseAccess.access
    include IStdlib.IStd.Caml.Set.OrderedType + with type t = t Pulselib.PulseAccess.access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : + get_var_repr: + (Pulselib.PulseAccess.AbstractValue.t -> + Pulselib.PulseAccess.AbstractValue.t) -> t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Edges/index.html index 9d537c7e381..634e7ccc902 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/Edges/index.html @@ -1,21 +1,21 @@ -Edges (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S +Edges (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S with type key = Access.t and type value = needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t - with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : + with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val canonicalize : - get_var_repr: + get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> - t
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/index.html index d3d81ae5c16..ea1d190bc7c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Memory/index.html @@ -1,5 +1,5 @@ -Memory (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory)

    Module CanonValue.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap +Memory (infer.Pulselib.PulseAbductiveDomain.CanonValue.Memory)

    Module CanonValue.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap with type key := t and type value = Edges.t with type t = PulseBaseMemory.t
    include IStdlib.PrettyPrintable.MonoMap @@ -7,17 +7,17 @@ with type value = Edges.t with type t = PulseBaseMemory.t
    type value = Edges.t
    val empty : t
    val is_empty : t -> bool
    val mem : t -> t -> bool
    val add : t -> value -> t -> t
    val update : t -> (value option -> value option) -> t -> t
    val singleton : t -> value -> t
    val remove : t -> t -> t
    val merge : (t -> value option -> value option -> value option) -> t -> t -> t
    val union : (t -> value -> value -> value option) -> t -> t -> t
    val iter : (t -> value -> unit) -> t -> unit
    val fold : (t -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (t -> value -> bool) -> t -> bool
    val exists : (t -> value -> bool) -> t -> bool
    val filter : (t -> value -> bool) -> t -> t
    val filter_map : (t -> value -> value option) -> t -> t
    val partition : (t -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (t * value) list
    val min_binding : t -> t * value
    val min_binding_opt : t -> (t * value) option
    val max_binding : t -> t * value
    val max_binding_opt : t -> (t * value) option
    val choose : t -> t * value
    val choose_opt : t -> (t * value) option
    val split : t -> t -> t * value option * t
    val find : t -> t -> value
    val find_opt : t -> t -> value option
    val find_first : (t -> bool) -> t -> t * value
    val find_first_opt : (t -> bool) -> t -> (t * value) option
    val find_last : (t -> bool) -> t -> t * value
    val find_last_opt : (t -> bool) -> t -> (t * value) option
    val map : (value -> value) -> t -> t
    val mapi : (t -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (t * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    \ No newline at end of file + (needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t) option
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Set/index.html index c468fff19d3..b4c7121e2dd 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseAbductiveDomain.CanonValue.Set)

    Module CanonValue.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Pulselib.PulseAbductiveDomain.CanonValue.Set)

    Module CanonValue.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Stack/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Stack/index.html index dfd79e69c81..ad030fd2c3e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Stack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/Stack/index.html @@ -1,5 +1,5 @@ -Stack (infer.Pulselib.PulseAbductiveDomain.CanonValue.Stack)

    Module CanonValue.Stack

    include PulseBaseStack.S +Stack (infer.Pulselib.PulseAbductiveDomain.CanonValue.Stack)

    Module CanonValue.Stack

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/index.html index 50244c2a585..804c694341c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/CanonValue/index.html @@ -1,5 +1,5 @@ -CanonValue (infer.Pulselib.PulseAbductiveDomain.CanonValue)

    Module PulseAbductiveDomain.CanonValue

    see PulseCanonValue

    include PulseCanonValue.S with type astate = t

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Pulselib.PulseCanonValue.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    type astate = t

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : +CanonValue (infer.Pulselib.PulseAbductiveDomain.CanonValue)

    Module PulseAbductiveDomain.CanonValue

    see PulseCanonValue

    include PulseCanonValue.S with type astate = t

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : Pulselib.PulseCanonValue.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    type astate = t

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : astate -> (Pulselib.PulseBasicInterface.AbstractValue.t * 'a) -> t * 'a
    val canon_snd_fst : astate -> ('a * (needs_canon * 'b)) -> 'a * (t * 'b)
    val canon_opt : astate -> needs_canon option -> t option
    val canon_opt' : @@ -20,4 +20,4 @@ and type Edges.t = PulseBaseMemory.Edges.t
    val canon_access : astate -> PulseAccess.t -> Memory.Access.t
    \ No newline at end of file + and type t = PulseBaseAddressAttributes.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Memory/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Memory/index.html index 26009641301..2c38788d285 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Memory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Memory/index.html @@ -1,5 +1,5 @@ -Memory (infer.Pulselib.PulseAbductiveDomain.Memory)

    Module PulseAbductiveDomain.Memory

    Safe version of PulseBaseMemory

    val add_edge : +Memory (infer.Pulselib.PulseAbductiveDomain.Memory)

    Module PulseAbductiveDomain.Memory

    Safe version of PulseBaseMemory

    eval_edge (addr,hist) access astate follows the edge addr --access--> . in memory and returns what it points to or creates a fresh value if that edge didn't exist.

    val fold_edges : + ?pre_or_post:[ `Pre | `Post ] -> Pulselib.PulseBasicInterface.AbstractValue.t -> (t, PulseAccess.t * (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t), _) - IStdlib.IStd.Container.fold
    val find_edge_opt : + IStdlib.IStd.Container.fold

    pre_or_post defaults to `Post

    val exists_edge : + ?pre_or_post:[ `Pre | `Post ] -> Pulselib.PulseBasicInterface.AbstractValue.t -> t -> - f: + f: ((PulseAccess.t * (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t)) -> bool) -> - bool
    \ No newline at end of file + bool

    pre_or_post defaults to `Post

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html index de049e7bfcf..089c65a2598 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html @@ -1,2 +1,2 @@ -PostDomain (infer.Pulselib.PulseAbductiveDomain.PostDomain)

    Module PulseAbductiveDomain.PostDomain

    The post abstract state at each program point, or current state.

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file +PostDomain (infer.Pulselib.PulseAbductiveDomain.PostDomain)

    Module PulseAbductiveDomain.PostDomain

    The post abstract state at each program point, or current state.

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html index 50777f397d1..a7b2ebdbf28 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html @@ -1,2 +1,2 @@ -PreDomain (infer.Pulselib.PulseAbductiveDomain.PreDomain)

    Module PulseAbductiveDomain.PreDomain

    The inferred pre-condition at each program point, biabduction style.

    NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file +PreDomain (infer.Pulselib.PulseAbductiveDomain.PreDomain)

    Module PulseAbductiveDomain.PreDomain

    The inferred pre-condition at each program point, biabduction style.

    NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Stack/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Stack/index.html index 2d8475b776e..ddfabf72295 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Stack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Stack/index.html @@ -1,8 +1,13 @@ -Stack (infer.Pulselib.PulseAbductiveDomain.Stack)

    Module PulseAbductiveDomain.Stack

    Safe version of PulseBaseStack

    val add : IR.Var.t -> PulseBaseStack.value -> t -> t
    val remove_vars : IR.Var.t list -> t -> t
    val fold : (IR.Var.t -> PulseBaseStack.value -> 'a -> 'a) -> t -> 'a -> 'a
    val find_opt : IR.Var.t -> t -> PulseBaseStack.value option
    val eval : +Stack (infer.Pulselib.PulseAbductiveDomain.Stack)

    Module PulseAbductiveDomain.Stack

    Safe version of PulseBaseStack

    val add : IR.Var.t -> PulseBaseStack.value -> t -> t
    val remove_vars : IR.Var.t list -> t -> t
    val fold : + ?pre_or_post:[ `Pre | `Post ] -> + (IR.Var.t -> PulseBaseStack.value -> 'a -> 'a) -> + t -> + 'a -> + 'a

    pre_or_post defaults to `Post

    val find_opt : IR.Var.t -> t -> PulseBaseStack.value option

    return the value of the variable in the stack or create a fresh one if needed

    val mem : IR.Var.t -> t -> bool
    val exists : (IR.Var.t -> PulseBaseStack.value -> bool) -> t -> bool
    val keys : t -> IR.Var.t list
    \ No newline at end of file + * Pulselib.PulseBasicInterface.ValueHistory.t)

    return the value of the variable in the stack or create a fresh one if needed

    val mem : IR.Var.t -> t -> bool
    val exists : (IR.Var.t -> PulseBaseStack.value -> bool) -> t -> bool
    val keys : t -> IR.Var.t list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Summary/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Summary/index.html index 95f62da6fd6..0b2825ac8f6 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Summary/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Summary/index.html @@ -1,5 +1,5 @@ -Summary (infer.Pulselib.PulseAbductiveDomain.Summary)

    Module PulseAbductiveDomain.Summary

    type summary = private t

    private type to make sure of_post is always called when creating summaries and that it is not called twice

    val compare_summary : summary -> summary -> int
    val equal_summary : summary -> summary -> bool
    val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val add_need_dynamic_type_specialization : +Summary (infer.Pulselib.PulseAbductiveDomain.Summary)

    Module PulseAbductiveDomain.Summary

    type summary = private t

    private type to make sure of_post is always called when creating summaries and that it is not called twice

    val compare_summary : summary -> summary -> int
    val equal_summary : summary -> summary -> bool
    val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val add_need_dynamic_type_specialization : Pulselib.PulseBasicInterface.AbstractValue.t -> summary -> summary
    val of_post : @@ -36,7 +36,7 @@ * Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason option) ]) IStdlib.IStd.result - Pulselib.PulseBasicInterface.SatUnsat.t

    Trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state.

    val leq : lhs:summary -> rhs:summary -> bool
    val pp : F.formatter -> summary -> unit
    val get_pre : summary -> BaseDomain.t
    val get_post : summary -> BaseDomain.t
    val get_topl : summary -> PulseTopl.state
    val heap_paths_that_need_dynamic_type_specialization : + Pulselib.PulseBasicInterface.SatUnsat.t

    Trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state.

    val leq : lhs:summary -> rhs:summary -> bool
    val pp : F.formatter -> summary -> unit
    val get_pre : summary -> BaseDomain.t
    val get_post : summary -> BaseDomain.t
    val get_topl : summary -> PulseTopl.state
    val heap_paths_that_need_dynamic_type_specialization : summary -> Pulselib.PulseBasicInterface.AbstractValue.t IR.Specialization.HeapPath.Map.t
    val pre_heap_has_assumptions : summary -> bool

    whether the pre heap encodes some assumptions about values: either a value is restricted (>= 0) or there is sharing in the heap. Both represent implicit assumptions that the program must have made.

    type t = summary
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file + summary
    val pre_heap_has_assumptions : summary -> bool

    whether the pre heap encodes some assumptions about values: either a value is restricted (>= 0) or there is sharing in the heap. Both represent implicit assumptions that the program must have made.

    type t = summary
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Topl/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Topl/index.html index 0ed8f162cdd..83260809db0 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Topl/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/Topl/index.html @@ -1,17 +1,17 @@ -Topl (infer.Pulselib.PulseAbductiveDomain.Topl)

    Module PulseAbductiveDomain.Topl

    val small_step : IBase.Location.t -> PulseTopl.event -> t -> t
    val large_step : - call_location:IBase.Location.t -> - callee_proc_name:IR.Procname.t -> - substitution: +Topl (infer.Pulselib.PulseAbductiveDomain.Topl)

    Module PulseAbductiveDomain.Topl

    val small_step : IR.Tenv.t -> IBase.Location.t -> PulseTopl.event -> t -> t
    val large_step : + call_location:IBase.Location.t -> + callee_proc_name:IR.Procname.t -> + substitution: (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) Pulselib.PulseBasicInterface.AbstractValue.Map.t -> - callee_summary:PulseTopl.state -> - callee_is_manifest:bool -> + callee_summary:PulseTopl.state -> + callee_is_manifest:bool -> t -> t
    val report_errors : IR.Procdesc.t -> Absint.Errlog.t -> - pulse_is_manifest:bool -> + pulse_is_manifest:bool -> Summary.t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html index f19bfd5f6f9..4a8ee963309 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html @@ -1,8 +1,8 @@ -PulseAbductiveDomain (infer.Pulselib.PulseAbductiveDomain)

    Module Pulselib.PulseAbductiveDomain

    module F = Stdlib.Format
    module BaseDomain = PulseBaseDomain
    module Decompiler = PulseDecompiler
    module DecompilerExpr = PulseDecompilerExpr
    module PathContext = PulsePathContext

    Abductive, value-normalizing layer on top of BaseDomain

    The operations in this module take care of two things that are important for the safety of domain operations:

    1. Propagate operations on the current state to the pre-condition when necessary. This is the "abductive" part of the domain and follows the principles of biabduction as laid out in *Compositional Shape Analysis by Means of Bi-Abduction*, JACM, 2011, https://doi.org/10.1145/2049697.2049700. Simply put, a read from a memory location that is reachable from the precondition for the first time is taken to mean that this memory location had better been allocated since the beginning of the function for the operation to be safe, hence we "abduce" that this was the case and add it to the pre-condition (unless we already know that address to be invalid of course).

    2. Normalize values (AbstractValue.t) in and out of the state according to their canonical representatives as per the current path condition. The idea is that one can ask about any abstract value and functions in this API will normalize it as needed first before querying the abstract state, and normalize any value found in the abstract state as needed too. For example, values in the raw map corresponding to the memory are not necessarily normalized at all times but the API allows one to pretend they are by normalizing them on the fly. On the other hand, *keys* in the memory map are always normalized so values must be normalized before being looked up in the map and this module takes care of that transparently too. See also PulseCanonValue.

    module type BaseDomainSig = sig ... end

    signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

    The post abstract state at each program point, or current state.

    The inferred pre-condition at each program point, biabduction style.

    type t = private {
    1. post : PostDomain.t;
      (*

      state at the current program point

      *)
    2. pre : PreDomain.t;
      (*

      inferred procedure pre-condition leading to the current program point

      *)
    3. path_condition : Pulselib.PulseBasicInterface.Formula.t;
      (*

      arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

      *)
    4. decompiler : Decompiler.t;
    5. topl : PulseTopl.state;
      (*

      state at of the Topl monitor at the current program point, when Topl is enabled

      *)
    6. need_dynamic_type_specialization : Pulselib.PulseBasicInterface.AbstractValue.Set.t;
      (*

      a set of abstract values that are used as receiver of method calls in the instructions reached so far

      *)
    7. transitive_info : Pulselib.PulseBasicInterface.TransitiveInfo.t;
      (*

      record transitive information inter-procedurally

      *)
    8. skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t;
      (*

      metadata: procedure calls for which no summary was found

      *)
    }

    pre/post on a single program path

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val leq : lhs:t -> rhs:t -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val mk_initial : IR.Tenv.t -> IR.ProcAttributes.t -> t
    module Stack : sig ... end

    Safe version of PulseBaseStack

    module Memory : sig ... end

    Safe version of PulseBaseMemory

    module AddressAttributes : sig ... end
    val should_havoc_if_unknown : +PulseAbductiveDomain (infer.Pulselib.PulseAbductiveDomain)

    Module Pulselib.PulseAbductiveDomain

    module F = Stdlib.Format
    module BaseDomain = PulseBaseDomain
    module Decompiler = PulseDecompiler
    module DecompilerExpr = PulseDecompilerExpr
    module PathContext = PulsePathContext

    Abductive, value-normalizing layer on top of BaseDomain

    The operations in this module take care of two things that are important for the safety of domain operations:

    1. Propagate operations on the current state to the pre-condition when necessary. This is the "abductive" part of the domain and follows the principles of biabduction as laid out in *Compositional Shape Analysis by Means of Bi-Abduction*, JACM, 2011, https://doi.org/10.1145/2049697.2049700. Simply put, a read from a memory location that is reachable from the precondition for the first time is taken to mean that this memory location had better been allocated since the beginning of the function for the operation to be safe, hence we "abduce" that this was the case and add it to the pre-condition (unless we already know that address to be invalid of course).

    2. Normalize values (AbstractValue.t) in and out of the state according to their canonical representatives as per the current path condition. The idea is that one can ask about any abstract value and functions in this API will normalize it as needed first before querying the abstract state, and normalize any value found in the abstract state as needed too. For example, values in the raw map corresponding to the memory are not necessarily normalized at all times but the API allows one to pretend they are by normalizing them on the fly. On the other hand, *keys* in the memory map are always normalized so values must be normalized before being looked up in the map and this module takes care of that transparently too. See also PulseCanonValue.

    module type BaseDomainSig = sig ... end

    signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

    The post abstract state at each program point, or current state.

    The inferred pre-condition at each program point, biabduction style.

    type t = private {
    1. post : PostDomain.t;
      (*

      state at the current program point

      *)
    2. pre : PreDomain.t;
      (*

      inferred procedure pre-condition leading to the current program point

      *)
    3. path_condition : Pulselib.PulseBasicInterface.Formula.t;
      (*

      arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

      *)
    4. decompiler : Decompiler.t;
    5. topl : PulseTopl.state;
      (*

      state at of the Topl monitor at the current program point, when Topl is enabled

      *)
    6. need_dynamic_type_specialization : Pulselib.PulseBasicInterface.AbstractValue.Set.t;
      (*

      a set of abstract values that are used as receiver of method calls in the instructions reached so far

      *)
    7. transitive_info : Pulselib.PulseBasicInterface.TransitiveInfo.t;
      (*

      record transitive information inter-procedurally

      *)
    8. recursive_calls : Pulselib.PulseBasicInterface.Trace.Set.t;
    9. skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t;
      (*

      metadata: procedure calls for which no summary was found

      *)
    }

    pre/post on a single program path

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val leq : lhs:t -> rhs:t -> bool
    val pp : Stdlib.Format.formatter -> t -> unit
    val mk_initial : IR.Tenv.t -> IR.ProcAttributes.t -> t
    module Stack : sig ... end

    Safe version of PulseBaseStack

    module Memory : sig ... end

    Safe version of PulseBaseMemory

    module AddressAttributes : sig ... end
    val should_havoc_if_unknown : unit -> [> `ShouldHavoc | `ShouldOnlyHavocResources ]
    val apply_unknown_effect : - ?havoc_filter: + ?havoc_filter: (Pulselib.PulseBasicInterface.AbstractValue.t -> PulseAccess.t -> (Pulselib.PulseBasicInterface.AbstractValue.t @@ -14,8 +14,26 @@ t

    do as much as possible to assume "the best" happened at that location: deallocate and initialize everything reachable from the address, then havoc all the edges starting from the address passing havoc_filter (by default everything passes the filter)

    val is_local : IR.Var.t -> t -> bool
    val find_post_cell_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> - BaseDomain.cell option
    val reachable_addresses_from : - ?edge_filter:(Pulselib.PulseBasicInterface.Access.t -> bool) -> + BaseDomain.cell option
    val fold_all : + ?var_filter:(IR.Var.t -> bool) -> + init:'accum -> + finish:('accum -> 'final) -> + f: + (IR.Var.t -> + 'accum -> + Pulselib.PulseBasicInterface.AbstractValue.t -> + Pulselib.PulseBasicInterface.Access.t list -> + ('accum, 'final) IStdlib.IStd.Continue_or_stop.t) -> + ?f_revisit: + (IR.Var.t -> + 'accum -> + Pulselib.PulseBasicInterface.AbstractValue.t -> + Pulselib.PulseBasicInterface.Access.t list -> + 'accum) -> + t -> + [ `Post | `Pre ] -> + 'final
    val reachable_addresses_from : + ?edge_filter:(Pulselib.PulseBasicInterface.Access.t -> bool) -> Pulselib.PulseBasicInterface.AbstractValue.t Stdlib.Seq.t -> t -> [ `Pre | `Post ] -> @@ -23,23 +41,27 @@ t -> Pulselib.PulseBasicInterface.AbstractValue.t list

    collect the addresses that have attributes but are unreachable in the current post-condition

    val mark_potential_leaks : IBase.Location.t -> - dead_roots:IR.Var.t list -> + dead_roots:IR.Var.t list -> t -> t
    val add_skipped_call : IR.Procname.t -> Pulselib.PulseBasicInterface.Trace.t -> t -> t
    val add_skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t -> t -> t
    val add_missed_captures : IR.Typ.Name.Set.t -> t -> t
    val set_path_condition : Pulselib.PulseBasicInterface.Formula.t -> t -> t
    val record_transitive_access : IBase.Location.t -> t -> t
    val add_need_dynamic_type_specialization : + t
    val record_recursive_call : + PathContext.t -> + IBase.Location.t -> + IR.Procname.t -> + t -> + t * Pulselib.PulseBasicInterface.Trace.t
    val add_need_dynamic_type_specialization : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> - t
    val map_decompiler : t -> f:(Decompiler.t -> Decompiler.t) -> t
    val add_block_source : + t
    val map_decompiler : t -> f:(Decompiler.t -> Decompiler.t) -> t
    val add_block_source : Pulselib.PulseBasicInterface.AbstractValue.t -> string -> t -> @@ -73,4 +95,4 @@ IBase.Location.t -> Summary.t -> t -> - t
    module Topl : sig ... end
    module CanonValue : sig ... end
    \ No newline at end of file + t
    module Topl : sig ... end
    module CanonValue : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html index 9a59f980cd3..9a8b241a5d1 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html @@ -1,2 +1,2 @@ -BaseDomainSig (infer.Pulselib.PulseAbductiveDomain.BaseDomainSig)

    Module type PulseAbductiveDomain.BaseDomainSig

    signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file +BaseDomainSig (infer.Pulselib.PulseAbductiveDomain.BaseDomainSig)

    Module type PulseAbductiveDomain.BaseDomainSig

    signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

    type t = private BaseDomain.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Map/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Map/index.html index b0545af255b..e99650c9599 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Map/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Map/index.html @@ -1,12 +1,12 @@ -Map (infer.Pulselib.PulseAbstractValue.Map)

    Module PulseAbstractValue.Map

    include IStdlib.PrettyPrintable.PPMap with type key = t
    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +Map (infer.Pulselib.PulseAbstractValue.Map)

    Module PulseAbstractValue.Map

    include IStdlib.PrettyPrintable.PPMap with type key = t
    include IStdlib.IStd.Caml.Map.S with type key = t
    type key = t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    val yojson_of_t : ('a -> Yojson.Safe.t) -> 'a t -> Yojson.Safe.t
    \ No newline at end of file + unit
    val yojson_of_t : ('a -> Yojson.Safe.t) -> 'a t -> Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Set/index.html index 95a005c2fed..cd17831a26e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseAbstractValue.Set)

    Module PulseAbstractValue.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Pulselib.PulseAbstractValue.Set)

    Module PulseAbstractValue.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/index.html index a3d121592eb..57f885e2326 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbstractValue/index.html @@ -1,2 +1,2 @@ -PulseAbstractValue (infer.Pulselib.PulseAbstractValue)

    Module Pulselib.PulseAbstractValue

    module F = Stdlib.Format
    type t = private int

    An abstract value (or "symbolic variable"), eg an address in memory.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val mk_fresh : unit -> t

    create an abstract value guaranteed not to appear in the current state

    val mk_fresh_restricted : unit -> t

    a special class of variables that represent non-negative ("restricted") values; variables returned by mk_fresh are called "unrestricted" by opposition

    val mk_fresh_same_kind : t -> t

    creates a fresh restricted or unrestricted abstract value based on the kind of abstract value given

    val is_restricted : t -> bool

    was the variable created with mk_fresh_restricted, i.e. it represents non-negative values (hence its domain is restricted)

    val is_unrestricted : t -> bool

    was the variable created with mk_fresh, i.e. it represents any value, positive, negative, or zero (hence its domain is unrestricted)

    val pp : F.formatter -> t -> unit
    val compare_unrestricted_first : t -> t -> int

    an alternative comparison function that sorts unrestricted variables before restricted variables

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : sig ... end
    \ No newline at end of file +PulseAbstractValue (infer.Pulselib.PulseAbstractValue)

    Module Pulselib.PulseAbstractValue

    module F = Stdlib.Format
    type t = private int

    An abstract value (or "symbolic variable"), eg an address in memory.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val mk_fresh : unit -> t

    create an abstract value guaranteed not to appear in the current state

    val mk_fresh_restricted : unit -> t

    a special class of variables that represent non-negative ("restricted") values; variables returned by mk_fresh are called "unrestricted" by opposition

    val mk_fresh_same_kind : t -> t

    creates a fresh restricted or unrestricted abstract value based on the kind of abstract value given

    val is_restricted : t -> bool

    was the variable created with mk_fresh_restricted, i.e. it represents non-negative values (hence its domain is restricted)

    val is_unrestricted : t -> bool

    was the variable created with mk_fresh, i.e. it represents any value, positive, negative, or zero (hence its domain is unrestricted)

    val pp : F.formatter -> t -> unit
    val compare_unrestricted_first : t -> t -> int

    an alternative comparison function that sorts unrestricted variables before restricted variables

    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    module Map : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAccess/index.html b/website/static/odoc/next/infer/Pulselib/PulseAccess/index.html index 79ec5338cae..6f0e15fb98f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAccess/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAccess/index.html @@ -1,7 +1,18 @@ -PulseAccess (infer.Pulselib.PulseAccess)

    Module Pulselib.PulseAccess

    module type S = sig ... end
    include S with type key := PulseAbstractValue.t
    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = PulseAbstractValue.t Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType - with type t = Pulselib.PulseAbstractValue.t Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> - t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +PulseAccess (infer.Pulselib.PulseAccess)

    Module Pulselib.PulseAccess

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue

    Memory Accesses

    The various kind of possible ways to access memory addresses and values. Can be used for edges in a memory graph representation or to represent values as access paths.

    type ('fieldname, 'array_index) access_ =
    1. | FieldAccess of 'fieldname
    2. | ArrayAccess of IR.Typ.t * 'array_index
    3. | Dereference

    for internal use only, prefer using access

    type 'array_index access = (IR.Fieldname.t, 'array_index) access_
    val compare_access : + ('array_index -> 'array_index -> int) -> + 'array_index access -> + 'array_index access -> + int
    val equal_access : + ('array_index -> 'array_index -> bool) -> + 'array_index access -> + 'array_index access -> + bool
    val yojson_of_access : + ('array_index -> Ppx_yojson_conv_lib.Yojson.Safe.t) -> + 'array_index access -> + Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp_access : + (F.formatter -> 'array_index -> unit) -> + F.formatter -> + 'array_index access -> + unit
    module type S = sig ... end
    include S with type key := AbstractValue.t
    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = AbstractValue.t access
    include IStdlib.IStd.Caml.Set.OrderedType with type t = AbstractValue.t access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : get_var_repr:(AbstractValue.t -> AbstractValue.t) -> t -> t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAccess/module-type-S/index.html b/website/static/odoc/next/infer/Pulselib/PulseAccess/module-type-S/index.html index 4ac379ff84a..67980f73914 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAccess/module-type-S/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAccess/module-type-S/index.html @@ -1,7 +1,3 @@ -S (infer.Pulselib.PulseAccess.S)

    Module type PulseAccess.S

    type key
    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = key Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType - with type t = key Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> - t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +S (infer.Pulselib.PulseAccess.S)

    Module type PulseAccess.S

    type key
    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = key access
    include IStdlib.IStd.Caml.Set.OrderedType with type t = key access
    type t = key access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : get_var_repr:(AbstractValue.t -> AbstractValue.t) -> t -> t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAccessResult/index.html b/website/static/odoc/next/infer/Pulselib/PulseAccessResult/index.html index 7c31fbb091e..f82351ecca5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAccessResult/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAccessResult/index.html @@ -1,20 +1,20 @@ -PulseAccessResult (infer.Pulselib.PulseAccessResult)

    Module Pulselib.PulseAccessResult

    module AbductiveDomain = PulseAbductiveDomain
    module DecompilerExpr = PulseDecompilerExpr
    module Diagnostic = PulseDiagnostic
    type error =
    1. | PotentialInvalidAccess of {
      1. astate : AbductiveDomain.t;
      2. address : DecompilerExpr.t;
      3. must_be_valid : Pulselib.PulseBasicInterface.Trace.t +PulseAccessResult (infer.Pulselib.PulseAccessResult)

        Module Pulselib.PulseAccessResult

        module AbductiveDomain = PulseAbductiveDomain
        module DecompilerExpr = PulseDecompilerExpr
        module Diagnostic = PulseDiagnostic
        type error =
        1. | PotentialInvalidAccess of {
          1. astate : AbductiveDomain.t;
          2. address : DecompilerExpr.t;
          3. must_be_valid : Pulselib.PulseBasicInterface.Trace.t * Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason - option;
          }
        2. | ReportableError of {
          1. astate : AbductiveDomain.t;
          2. diagnostic : Diagnostic.t;
          }
        3. | WithSummary of error * AbductiveDomain.Summary.t
          (*

          An error for which the summary corresponding to the abstract state has already been computed, to avoid having to compute the summary for a given abstract state multiple times. For convenience this is part of the error datatype but the invariant that an error within a WithSummary (error, summary) cannot itself be a WithSummary _.

          *)
        val astate_of_error : error -> AbductiveDomain.t
        type 'a t = ('a, error) PulseResult.t
        val with_summary : + option;
      }
    2. | PotentialInvalidSpecializedCall of {
      1. astate : AbductiveDomain.t;
      2. specialized_type : IR.Typ.Name.t;
      3. trace : Pulselib.PulseBasicInterface.Trace.t;
      }
    3. | ReportableError of {
      1. astate : AbductiveDomain.t;
      2. diagnostic : Diagnostic.t;
      }
    4. | WithSummary of error * AbductiveDomain.Summary.t
      (*

      An error for which the summary corresponding to the abstract state has already been computed, to avoid having to compute the summary for a given abstract state multiple times. For convenience this is part of the error datatype but the invariant that an error within a WithSummary (error, summary) cannot itself be a WithSummary _.

      *)
    val astate_of_error : error -> AbductiveDomain.t
    type 'a t = ('a, error) PulseResult.t
    val with_summary : ('a, error * AbductiveDomain.Summary.t) PulseResult.t -> - 'a t
    type abductive_error = [
    1. | `PotentialInvalidAccess of + 'a t

    Intermediate datatype since AbductiveDomain cannot refer to this module without creating a circular dependency.

    Purposefully omits `MemoryLeak errors as it's a good idea to double-check if you really want to report a leak.

    type abductive_summary_error = [
    1. | `PotentialInvalidAccessSummary of + * Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason option)
    ]

    Intermediate datatype since AbductiveDomain cannot refer to this module without creating a circular dependency.

    Purposefully omits `MemoryLeak errors as it's a good idea to double-check if you really want to report a leak.

    val of_result_f : ('a, error) IStdlib.IStd.result -> f:(error -> 'a) -> 'a t
    val of_result_f : ('a, error) IStdlib.IStd.result -> f:(error -> 'a) -> 'a t
    val of_error_f : error -> f:(error -> 'a) -> 'a t
    val of_abductive_summary_error : + AbductiveDomain.t t
    val of_error_f : error -> f:(error -> 'a) -> 'a t
    val of_abductive_summary_error : [< abductive_summary_error ] -> error * AbductiveDomain.Summary.t
    \ No newline at end of file + (AbductiveDomain.Summary.t, [> abductive_summary_error ]) IStdlib.IStd.result diff --git a/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html b/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html index f7078044bdc..fa551921c19 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html @@ -1,5 +1,5 @@ -PulseArithmetic (infer.Pulselib.PulseArithmetic)

    Module Pulselib.PulseArithmetic

    module AbductiveDomain = PulseAbductiveDomain
    module AccessResult = PulseAccessResult

    Wrapper around PulseFormula that operates on AbductiveDomain.t.

    val and_nonnegative : +PulseArithmetic (infer.Pulselib.PulseArithmetic)

    Module Pulselib.PulseArithmetic

    module AbductiveDomain = PulseAbductiveDomain
    module AccessResult = PulseAccessResult

    Wrapper around PulseFormula that operates on AbductiveDomain.t.

    val get_dynamic_type : Pulselib.PulseBasicInterface.AbstractValue.t -> @@ -99,7 +100,8 @@ AbductiveDomain.t
    val as_constant_string : AbductiveDomain.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> - string option
    \ No newline at end of file + string option
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/Attributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/Attributes/index.html index e83ad456999..c01760cc381 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/Attributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/Attributes/index.html @@ -1,15 +1,15 @@ -Attributes (infer.Pulselib.PulseAttribute.Attributes)

    Module PulseAttribute.Attributes

    include IStdlib.PrettyPrintable.PPUniqRankSet with type elt = t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank
    type elt = t
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : +Attributes (infer.Pulselib.PulseAttribute.Attributes)

    Module PulseAttribute.Attributes

    include IStdlib.PrettyPrintable.PPUniqRankSet with type elt = t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type rank
    type elt = t
    val add : t -> elt -> t
    val empty : t
    val find_rank : t -> rank -> elt option
    val fold : t -> init:'accum -> f:('accum -> elt -> 'accum) -> 'accum
    val fold_map : t -> - init:'accum -> - f:('accum -> elt -> 'accum * elt) -> - 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val get_address_of_stack_variable : + init:'accum -> + f:('accum -> elt -> 'accum * elt) -> + 'accum * t
    val for_all : f:(elt -> bool) -> t -> bool
    val exists : f:(elt -> bool) -> t -> bool
    val is_empty : t -> bool
    val is_singleton : t -> bool
    val is_subset : t -> of_:t -> bool
    val map : t -> f:(elt -> elt) -> t
    val singleton : elt -> t
    val elements : t -> elt list
    val remove : elt -> t -> t
    val remove_by_rank : rank -> t -> t
    val mem : elt -> t -> bool
    val update : elt -> t -> t
    val union_prefer_left : t -> t -> t

    in case an element with the same rank is present both in lhs and rhs, keep the one from lhs in union_prefer_left lhs rhs

    val filter : t -> f:(elt -> bool) -> t
    val filter_map : t -> f:(elt -> elt option) -> t
    val pp : ?print_rank:bool -> IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val get_address_of_stack_variable : t -> (IR.Var.t * IBase.Location.t * ValueHistory.t) option
    val get_closure_proc_name : t -> IR.Procname.t option
    val get_config_usage : t -> ConfigUsage.t option
    val get_used_as_branch_cond : t -> (IR.Procname.t * IBase.Location.t * Trace.t) option
    val get_copied_into : t -> CopiedInto.t option
    val get_copied_return : t -> - (AbstractValue.t * bool * CopyOrigin.t * IBase.Location.t) option
    val remove_copied_return : t -> t
    val get_source_origin_of_copy : t -> (PulseAbstractValue.t * bool) option
    val get_allocation : t -> (allocator * Trace.t) option
    val remove_allocation : t -> t
    val get_unknown_effect : t -> (CallEvent.t * ValueHistory.t) option
    val remove_dict_contain_const_keys : t -> t
    val is_dict_contain_const_keys : t -> bool
    val get_dict_read_const_keys : t -> ConstKeys.t option
    val get_static_type : t -> IR.Typ.Name.t option
    val is_java_resource_released : t -> bool
    val is_csharp_resource_released : t -> bool
    val is_end_of_collection : t -> bool
    val get_invalid : t -> (Invalidation.t * Trace.t) option
    val get_tainted : t -> TaintedSet.t
    val remove_tainted : t -> t
    val remove_must_not_be_tainted : ?kinds:TaintConfig.Kind.Set.t -> t -> t
    val get_propagate_taint_from : + (AbstractValue.t * bool * CopyOrigin.t * IBase.Location.t) option
    val remove_copied_return : t -> t
    val get_source_origin_of_copy : t -> (PulseAbstractValue.t * bool) option
    val get_allocation : t -> (allocator * Trace.t) option
    val remove_allocation : t -> t
    val get_unknown_effect : t -> (CallEvent.t * ValueHistory.t) option
    val remove_dict_contain_const_keys : t -> t
    val is_dict_contain_const_keys : t -> bool
    val get_dict_read_const_keys : t -> ConstKeys.t option
    val get_static_type : t -> IR.Typ.Name.t option
    val is_java_resource_released : t -> bool
    val is_csharp_resource_released : t -> bool
    val is_end_of_collection : t -> bool
    val get_invalid : t -> (Invalidation.t * Trace.t) option
    val get_tainted : t -> TaintedSet.t
    val remove_tainted : t -> t
    val remove_must_not_be_tainted : ?kinds:TaintConfig.Kind.Set.t -> t -> t
    val get_propagate_taint_from : t -> (taint_propagation_reason * taint_in list) option
    val remove_propagate_taint_from : t -> t
    val get_returned_from_unknown : t -> AbstractValue.t list option
    val get_taint_sanitized : t -> TaintSanitizedSet.t
    val remove_taint_sanitized : t -> t
    val get_must_be_valid : t -> @@ -20,4 +20,4 @@ IBase.Location.t -> ValueHistory.t -> t -> - t
    val get_allocated_not_freed : t -> (allocator * Trace.t) option
    val make_suitable_for_pre_summary : t -> t
    val make_suitable_for_post_summary : t -> t
    \ No newline at end of file + t
    val get_allocated_not_freed : t -> (allocator * Trace.t) option
    val make_suitable_for_pre_summary : t -> t
    val make_suitable_for_post_summary : t -> t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConfigUsage/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConfigUsage/index.html index 1df205dbab5..1d32ec5903f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConfigUsage/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConfigUsage/index.html @@ -1,2 +1,2 @@ -ConfigUsage (infer.Pulselib.PulseAttribute.ConfigUsage)

    Module PulseAttribute.ConfigUsage

    type t =
    1. | ConfigName of ConfigName.t
    2. | StringParam of {
      1. v : AbstractValue.t;
      2. config_type : string;
      }
    \ No newline at end of file +ConfigUsage (infer.Pulselib.PulseAttribute.ConfigUsage)

    Module PulseAttribute.ConfigUsage

    type t =
    1. | ConfigName of ConfigName.t
    2. | StringParam of {
      1. v : AbstractValue.t;
      2. config_type : string;
      }
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConstKeys/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConstKeys/index.html index 260bf2b6774..0300c45b2eb 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConstKeys/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/ConstKeys/index.html @@ -1,6 +1,6 @@ -ConstKeys (infer.Pulselib.PulseAttribute.ConstKeys)

    Module PulseAttribute.ConstKeys

    type t
    val singleton : IR.Fieldname.t -> (Timestamp.t * Trace.t) -> t
    val fold : +ConstKeys (infer.Pulselib.PulseAttribute.ConstKeys)

    Module PulseAttribute.ConstKeys

    type t
    val singleton : IR.Fieldname.t -> (Timestamp.t * Trace.t) -> t
    val fold : (IR.Fieldname.t -> (Timestamp.t * Trace.t) -> 'a -> 'a) -> t -> 'a -> - 'a
    \ No newline at end of file + 'a
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopiedInto/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopiedInto/index.html index c975212625f..c9491b5d8b7 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopiedInto/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopiedInto/index.html @@ -1,2 +1,2 @@ -CopiedInto (infer.Pulselib.PulseAttribute.CopiedInto)

    Module PulseAttribute.CopiedInto

    type t =
    1. | IntoVar of {
      1. copied_var : IR.Var.t;
      }
    2. | IntoIntermediate of {
      1. copied_var : IR.Var.t;
      }
    3. | IntoField of {
      1. field : IR.Fieldname.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_copied_into_var : t -> bool
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +CopiedInto (infer.Pulselib.PulseAttribute.CopiedInto)

    Module PulseAttribute.CopiedInto

    type t =
    1. | IntoVar of {
      1. copied_var : IR.Var.t;
      }
    2. | IntoIntermediate of {
      1. copied_var : IR.Var.t;
      }
    3. | IntoField of {
      1. field : IR.Fieldname.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val is_copied_into_var : t -> bool
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopyOrigin/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopyOrigin/index.html index c73a4b1350c..a3d5938dc45 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopyOrigin/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/CopyOrigin/index.html @@ -1,2 +1,2 @@ -CopyOrigin (infer.Pulselib.PulseAttribute.CopyOrigin)

    Module PulseAttribute.CopyOrigin

    type t =
    1. | CopyCtor
    2. | CopyAssignment
    3. | CopyToOptional
    4. | CopyInGetDefault
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : IStdlib.IStd.Formatter.t -> t -> unit
    \ No newline at end of file +CopyOrigin (infer.Pulselib.PulseAttribute.CopyOrigin)

    Module PulseAttribute.CopyOrigin

    type t =
    1. | CopyCtor
    2. | CopyAssignment
    3. | CopyToOptional
    4. | CopyInGetDefault
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : IStdlib.IStd.Formatter.t -> t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitized/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitized/index.html index 94c7ec0dd6a..2e3b3153f6d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitized/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitized/index.html @@ -1,2 +1,2 @@ -TaintSanitized (infer.Pulselib.PulseAttribute.TaintSanitized)

    Module PulseAttribute.TaintSanitized

    type t = {
    1. sanitizer : TaintItem.t;
    2. time_trace : Timestamp.trace;
    3. trace : Trace.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    \ No newline at end of file +TaintSanitized (infer.Pulselib.PulseAttribute.TaintSanitized)

    Module PulseAttribute.TaintSanitized

    type t = {
    1. sanitizer : TaintItem.t;
    2. time_trace : Timestamp.trace;
    3. trace : Trace.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitizedSet/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitizedSet/index.html index d9cc68f2917..dac726e7f58 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitizedSet/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSanitizedSet/index.html @@ -1,2 +1,2 @@ -TaintSanitizedSet (infer.Pulselib.PulseAttribute.TaintSanitizedSet)

    Module PulseAttribute.TaintSanitizedSet

    include IStdlib.IStd.Caml.Set.S with type elt = TaintSanitized.t
    type elt = TaintSanitized.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +TaintSanitizedSet (infer.Pulselib.PulseAttribute.TaintSanitizedSet)

    Module PulseAttribute.TaintSanitizedSet

    include IStdlib.IStd.Caml.Set.S with type elt = TaintSanitized.t
    type elt = TaintSanitized.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSink/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSink/index.html index 5f368ad4f65..3f3506731e5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSink/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSink/index.html @@ -1,2 +1,2 @@ -TaintSink (infer.Pulselib.PulseAttribute.TaintSink)

    Module PulseAttribute.TaintSink

    type t = {
    1. sink : TaintItem.value_tuple;
    2. time : Timestamp.t;
    3. trace : Trace.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    \ No newline at end of file +TaintSink (infer.Pulselib.PulseAttribute.TaintSink)

    Module PulseAttribute.TaintSink

    type t = {
    1. sink : TaintItem.value_tuple;
    2. time : Timestamp.t;
    3. trace : Trace.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSinkMap/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSinkMap/index.html index 8cbac1b795c..0a6d77023ae 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSinkMap/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintSinkMap/index.html @@ -1,12 +1,12 @@ -TaintSinkMap (infer.Pulselib.PulseAttribute.TaintSinkMap)

    Module PulseAttribute.TaintSinkMap

    include IStdlib.IStd.Caml.Map.S with type key = TaintConfig.Kind.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +TaintSinkMap (infer.Pulselib.PulseAttribute.TaintSinkMap)

    Module PulseAttribute.TaintSinkMap

    include IStdlib.IStd.Caml.Map.S with type key = TaintConfig.Kind.t
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/Tainted/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/Tainted/index.html index af20faf9785..e931bcce04d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/Tainted/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/Tainted/index.html @@ -1,2 +1,2 @@ -Tainted (infer.Pulselib.PulseAttribute.Tainted)

    Module PulseAttribute.Tainted

    type t = {
    1. source : TaintItem.t;
    2. time_trace : Timestamp.trace;
    3. hist : ValueHistory.t;
    4. intra_procedural_only : bool;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    \ No newline at end of file +Tainted (infer.Pulselib.PulseAttribute.Tainted)

    Module PulseAttribute.Tainted

    type t = {
    1. source : TaintItem.t;
    2. time_trace : Timestamp.trace;
    3. hist : ValueHistory.t;
    4. intra_procedural_only : bool;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintedSet/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintedSet/index.html index 89f4f52f49e..09ef38e4a12 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintedSet/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/TaintedSet/index.html @@ -1,2 +1,2 @@ -TaintedSet (infer.Pulselib.PulseAttribute.TaintedSet)

    Module PulseAttribute.TaintedSet

    include IStdlib.IStd.Caml.Set.S with type elt = Tainted.t
    type elt = Tainted.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +TaintedSet (infer.Pulselib.PulseAttribute.TaintedSet)

    Module PulseAttribute.TaintedSet

    include IStdlib.IStd.Caml.Set.S with type elt = Tainted.t
    type elt = Tainted.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/UninitializedTyp/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/UninitializedTyp/index.html index 923625b1ec5..147ffd2f5b9 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/UninitializedTyp/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/UninitializedTyp/index.html @@ -1,2 +1,2 @@ -UninitializedTyp (infer.Pulselib.PulseAttribute.UninitializedTyp)

    Module PulseAttribute.UninitializedTyp

    type t =
    1. | Value
    2. | Const of IR.Fieldname.t
    3. | DictMissingKey of {
      1. dict : DecompilerExpr.t;
      2. key : IR.Fieldname.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +UninitializedTyp (infer.Pulselib.PulseAttribute.UninitializedTyp)

    Module PulseAttribute.UninitializedTyp

    type t =
    1. | Value
    2. | Const of IR.Fieldname.t
    3. | DictMissingKey of {
      1. dict : DecompilerExpr.t;
      2. key : IR.Fieldname.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseAttribute/index.html b/website/static/odoc/next/infer/Pulselib/PulseAttribute/index.html index 6af56f799ef..ffbeb39f03d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAttribute/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAttribute/index.html @@ -1,5 +1,5 @@ -PulseAttribute (infer.Pulselib.PulseAttribute)

    Module Pulselib.PulseAttribute

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    module ConfigName = OpenSource.FbPulseConfigName
    module DecompilerExpr = PulseDecompilerExpr
    module Invalidation = PulseInvalidation
    module TaintItem = PulseTaintItem
    module TaintConfig = PulseTaintConfig
    module Timestamp = PulseTimestamp
    module Trace = PulseTrace
    module ValueHistory = PulseValueHistory
    type allocator =
    1. | CMalloc
    2. | CustomMalloc of IR.Procname.t
    3. | CRealloc
    4. | CustomRealloc of IR.Procname.t
    5. | CppNew
    6. | CppNewArray
    7. | JavaResource of IR.JavaClassName.t
    8. | CSharpResource of IR.CSharpClassName.t
    9. | ObjCAlloc
    10. | HackAsync
    val equal_allocator : allocator -> allocator -> bool
    val pp_allocator : F.formatter -> allocator -> unit
    type taint_in = {
    1. v : AbstractValue.t;
    2. history : ValueHistory.t;
    }

    Describes the source of taint in taint propagation.

    NOTE: history is ignored in equality and comparison.

    val compare_taint_in : taint_in -> taint_in -> int
    val equal_taint_in : taint_in -> taint_in -> bool
    module Tainted : sig ... end
    module TaintSink : sig ... end
    module TaintSinkMap : +PulseAttribute (infer.Pulselib.PulseAttribute)

    Module Pulselib.PulseAttribute

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    module ConfigName = OpenSource.FbPulseConfigName
    module DecompilerExpr = PulseDecompilerExpr
    module Invalidation = PulseInvalidation
    module TaintItem = PulseTaintItem
    module TaintConfig = PulseTaintConfig
    module Timestamp = PulseTimestamp
    module Trace = PulseTrace
    module ValueHistory = PulseValueHistory
    type allocator =
    1. | CMalloc
    2. | CustomMalloc of IR.Procname.t
    3. | CRealloc
    4. | CustomRealloc of IR.Procname.t
    5. | CppNew
    6. | CppNewArray
    7. | JavaResource of IR.JavaClassName.t
    8. | CSharpResource of IR.CSharpClassName.t
    9. | ObjCAlloc
    10. | HackAsync
    val equal_allocator : allocator -> allocator -> bool
    val pp_allocator : F.formatter -> allocator -> unit
    type taint_in = {
    1. v : AbstractValue.t;
    2. history : ValueHistory.t;
    }

    Describes the source of taint in taint propagation.

    NOTE: history is ignored in equality and comparison.

    val compare_taint_in : taint_in -> taint_in -> int
    val equal_taint_in : taint_in -> taint_in -> bool
    module Tainted : sig ... end
    module TaintSink : sig ... end
    module TaintSanitized : sig ... end
    type taint_propagation_reason =
    1. | InternalModel
    2. | UnknownCall
    3. | UserConfig
    val pp_taint_propagation_reason : F.formatter -> @@ -8,4 +8,4 @@ AbstractValue.Set.t AbstractValue.Map.t -> (AbstractValue.t -> bool) -> t -> - t option

    update an attribute to get rid of abstract values that do not satisfy the given predicate; the result is None if the attribute becomes meaningless as a result

    module Attributes : sig ... end
    \ No newline at end of file + t option

    update an attribute to get rid of abstract values that do not satisfy the given predicate; the result is None if the attribute becomes meaningless as a result

    module Attributes : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html index 7790ee3f8e9..6dd058064ab 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html @@ -1,5 +1,5 @@ -PulseBaseAddressAttributes (infer.Pulselib.PulseBaseAddressAttributes)

    Module Pulselib.PulseBaseAddressAttributes

    module F = Stdlib.Format
    module type S = sig ... end
    include S with type key := Pulselib.PulseBasicInterface.AbstractValue.t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val empty : t
    val filter : +PulseBaseAddressAttributes (infer.Pulselib.PulseBaseAddressAttributes)

    Module Pulselib.PulseBaseAddressAttributes

    module F = Stdlib.Format
    module type S = sig ... end
    include S with type key := Pulselib.PulseBasicInterface.AbstractValue.t
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val empty : t
    val remove_taint_attrs : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
    val remove_must_be_valid_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> @@ -186,7 +186,7 @@ Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
    val make_suitable_for_pre_summary : t -> t
    \ No newline at end of file + t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/module-type-S/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/module-type-S/index.html index c3e63f3e469..0721202856e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/module-type-S/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Pulselib.PulseBaseAddressAttributes.S)

    Module type PulseBaseAddressAttributes.S

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    type key
    val pp : F.formatter -> t -> unit
    val empty : t
    val filter : +S (infer.Pulselib.PulseBaseAddressAttributes.S)

    Module type PulseBaseAddressAttributes.S

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    type key
    val pp : F.formatter -> t -> unit
    val empty : t
    val filter : (key -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : @@ -84,8 +84,8 @@ t -> Pulselib.PulseBasicInterface.AbstractValue.t option
    val mark_as_end_of_collection : key -> t -> t
    val is_end_of_collection : key -> t -> bool
    val add_unreachable_at : key -> IBase.Location.t -> t -> t
    val add_copied_return : key -> - source:key -> - is_const_ref:bool -> + source:key -> + is_const_ref:bool -> Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t -> IBase.Location.t -> t -> @@ -97,10 +97,10 @@ t -> (IR.Procname.t * IBase.Location.t * Pulselib.PulseBasicInterface.Trace.t) option
    val remove_allocation_attr : key -> t -> t
    val remove_taint_attrs : key -> t -> t
    val remove_must_be_valid_attr : key -> t -> t
    val initialize : key -> t -> t
    val get_address_of_stack_variable : key -> t -> (IR.Var.t * IBase.Location.t * Pulselib.PulseBasicInterface.ValueHistory.t) - option
    val has_unknown_effect : key -> t -> bool
    \ No newline at end of file + option
    val has_unknown_effect : key -> t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html index 7b756dc92b9..8d0b4e3f7a7 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html @@ -1,7 +1,7 @@ -PulseBaseDomain (infer.Pulselib.PulseBaseDomain)

    Module Pulselib.PulseBaseDomain

    module F = Stdlib.Format
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val empty : t
    val pp : F.formatter -> t -> unit
    val subst_var : - for_summary:bool -> +PulseBaseDomain (infer.Pulselib.PulseBaseDomain)

    Module Pulselib.PulseBaseDomain

    module F = Stdlib.Format
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val empty : t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file + t Pulselib.PulseBasicInterface.SatUnsat.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Access/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Access/index.html index 8b11e463ce1..0bc068fb35c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Access/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Access/index.html @@ -1,8 +1,11 @@ -Access (infer.Pulselib.PulseBaseMemory.Access)

    Module PulseBaseMemory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = PulseBasicInterface.AbstractValue.t Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType +Access (infer.Pulselib.PulseBaseMemory.Access)

    Module PulseBaseMemory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = PulseBasicInterface.AbstractValue.t PulseAccess.access
    include IStdlib.IStd.Caml.Set.OrderedType with type t = - Pulselib.PulseBasicInterface.AbstractValue.t Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> + Pulselib.PulseBasicInterface.AbstractValue.t + Pulselib.PulseAccess.access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : + get_var_repr: + (Pulselib.PulseAccess.AbstractValue.t -> + Pulselib.PulseAccess.AbstractValue.t) -> t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html index e1c0620cee9..6806207039b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html @@ -1,22 +1,22 @@ -Edges (infer.Pulselib.PulseBaseMemory.Edges)

    Module PulseBaseMemory.Edges

    include IStdlib.RecencyMap.S +Edges (infer.Pulselib.PulseBaseMemory.Edges)

    Module PulseBaseMemory.Edges

    include IStdlib.RecencyMap.S with type key = Access.t and type value = PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t
    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val canonicalize : - get_var_repr: + get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> - t
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html index 3ac30fd75db..f06ab40a258 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html @@ -1,5 +1,5 @@ -PulseBaseMemory (infer.Pulselib.PulseBaseMemory)

    Module Pulselib.PulseBaseMemory

    module type S = sig ... end
    include S +PulseBaseMemory (infer.Pulselib.PulseBaseMemory)

    Module Pulselib.PulseBaseMemory

    module type S = sig ... end
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> - init:'a -> - f:(Pulselib.PulseBasicInterface.AbstractValue.t -> 'a -> value -> 'a * value) -> + init:'a -> + f:(Pulselib.PulseBasicInterface.AbstractValue.t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (Pulselib.PulseBasicInterface.AbstractValue.t * value) Stdlib.Seq.t -> t
    val to_seq : @@ -100,7 +100,7 @@ * Pulselib.PulseBasicInterface.ValueHistory.t) -> t -> t
    val find_edge_opt : - ?get_var_repr: + ?get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> Pulselib.PulseBasicInterface.AbstractValue.t -> @@ -113,13 +113,13 @@ Access.t -> t -> bool
    val is_allocated : t -> Pulselib.PulseBasicInterface.AbstractValue.t -> bool

    whether the address has a non-empty set of edges

    val yojson_of_t : t -> Yojson.Safe.t

    replace each address in the heap by its canonical representative according to the current equality relation, represented by get_var_repr; also remove addresses that point to empty edges

    \ No newline at end of file + t Pulselib.PulseBasicInterface.SatUnsat.t diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Access/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Access/index.html index fc443280256..13be3669fc9 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Access/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Access/index.html @@ -1,7 +1,9 @@ -Access (infer.Pulselib.PulseBaseMemory.S.Access)

    Module S.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = key Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType - with type t = key Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> +Access (infer.Pulselib.PulseBaseMemory.S.Access)

    Module S.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = key PulseAccess.access
    include IStdlib.IStd.Caml.Set.OrderedType + with type t = key Pulselib.PulseAccess.access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : + get_var_repr: + (Pulselib.PulseAccess.AbstractValue.t -> + Pulselib.PulseAccess.AbstractValue.t) -> t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Edges/index.html index 78e911f8094..c9ca1385b57 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/Edges/index.html @@ -1,13 +1,13 @@ -Edges (infer.Pulselib.PulseBaseMemory.S.Edges)

    Module S.Edges

    include IStdlib.RecencyMap.S +Edges (infer.Pulselib.PulseBaseMemory.S.Edges)

    Module S.Edges

    include IStdlib.RecencyMap.S with type key = Access.t - and type value = out_of_map_t
    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    type value = out_of_map_t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : + and type value = out_of_map_t
    type t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    type value = out_of_map_t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : t -> f:(key -> out_of_map_t -> in_map_t) -> t
    val canonicalize : - get_var_repr: + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : t -> f:(key -> out_of_map_t -> in_map_t) -> t
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/index.html index 3c21a74b6af..8d294b51870 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Pulselib.PulseBaseMemory.S)

    Module type PulseBaseMemory.S

    type key
    type in_map_t
    type out_of_map_t
    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap +S (infer.Pulselib.PulseBaseMemory.S)

    Module type PulseBaseMemory.S

    type key
    type in_map_t
    type out_of_map_t
    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap with type key := key and type value = Edges.t
    include IStdlib.PrettyPrintable.MonoMap with type key := key @@ -9,11 +9,11 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : key -> t -> t
    val add_edge : key -> Access.t -> in_map_t -> t -> t
    val find_edge_opt : - ?get_var_repr: + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : key -> t -> t
    val add_edge : key -> Access.t -> in_map_t -> t -> t
    val has_edge : key -> Access.t -> t -> bool
    val is_allocated : t -> key -> bool

    whether the address has a non-empty set of edges

    \ No newline at end of file + out_of_map_t option
    val has_edge : key -> Access.t -> t -> bool
    val is_allocated : t -> key -> bool

    whether the address has a non-empty set of edges

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html index 1c807d9b73d..51191ba29f5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html @@ -1,5 +1,5 @@ -PulseBaseStack (infer.Pulselib.PulseBaseStack)

    Module Pulselib.PulseBaseStack

    module type S = sig ... end
    include S +PulseBaseStack (infer.Pulselib.PulseBaseStack)

    Module Pulselib.PulseBaseStack

    module type S = sig ... end
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    val canonicalize : - get_var_repr: + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    \ No newline at end of file + t Pulselib.PulseBasicInterface.SatUnsat.t diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/module-type-S/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/module-type-S/index.html index 81db2afb3f9..efe815eaf83 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/module-type-S/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/module-type-S/index.html @@ -1,8 +1,8 @@ -S (infer.Pulselib.PulseBaseStack.S)

    Module type PulseBaseStack.S

    include IStdlib.PrettyPrintable.PPMonoMap with type key = IR.Var.t
    include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t
    type key = IR.Var.t
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : +S (infer.Pulselib.PulseBaseStack.S)

    Module type PulseBaseStack.S

    include IStdlib.PrettyPrintable.PPMonoMap with type key = IR.Var.t
    include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t
    type key = IR.Var.t
    type value
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : key -> t -> bool
    val add : key -> value -> t -> t
    val update : key -> (value option -> value option) -> t -> t
    val singleton : key -> value -> t
    val remove : key -> t -> t
    val merge : (key -> value option -> value option -> value option) -> t -> t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseBasicInterface/index.html b/website/static/odoc/next/infer/Pulselib/PulseBasicInterface/index.html index 42fb47f5f24..8230c5a46b0 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBasicInterface/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBasicInterface/index.html @@ -1,2 +1,2 @@ -PulseBasicInterface (infer.Pulselib.PulseBasicInterface)

    Module Pulselib.PulseBasicInterface

    Basic Pulse modules that are safe to use in any module

    module AbstractValue = PulseAbstractValue
    module Access = PulseAccess
    module AccessSet = PulseAccess.Set
    module Attribute = PulseAttribute
    module Attributes = PulseAttribute.Attributes
    module CallEvent = PulseCallEvent
    module Formula = PulseFormula
    module Invalidation = PulseInvalidation
    module SatUnsat = PulseSatUnsat
    module SkippedCalls = PulseSkippedCalls
    module TaintConfig = PulseTaintConfig
    module TaintItem = PulseTaintItem
    module Timestamp = PulseTimestamp
    module Trace = PulseTrace
    module TransitiveInfo = PulseTransitiveInfo
    module ValueHistory = PulseValueHistory
    module CellId = ValueHistory.CellId
    module ValueOrigin = PulseValueOrigin
    include module type of struct include SatUnsat.Types end

    for opening to get Sat and Unsat in the namespace

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a PulseSatUnsat.t =
    1. | Unsat
    2. | Sat of 'a

    Enforce short form usage

    include sig ... end
    module PulseAbstractValue = PulseAbstractValue
    module PulseAttribute = PulseAttribute
    module PulseCallEvent = PulseCallEvent
    module PulseInvalidation = PulseInvalidation
    module PulseTimestamp = PulseTimestamp
    module PulseSkippedCalls = PulseSkippedCalls
    module PulseTaintConfig = PulseTaintConfig
    module PulseTaintItem = PulseTaintItem
    module PulseTrace = PulseTrace
    module PulseValueHistory = PulseValueHistory
    module PulseSatUnsat = PulseSatUnsat
    \ No newline at end of file +PulseBasicInterface (infer.Pulselib.PulseBasicInterface)

    Module Pulselib.PulseBasicInterface

    Basic Pulse modules that are safe to use in any module

    module AbstractValue = PulseAbstractValue
    module Access = PulseAccess
    module AccessSet = PulseAccess.Set
    module Attribute = PulseAttribute
    module Attributes = PulseAttribute.Attributes
    module CallEvent = PulseCallEvent
    module Formula = PulseFormula
    module Invalidation = PulseInvalidation
    module SatUnsat = PulseSatUnsat
    module SkippedCalls = PulseSkippedCalls
    module TaintConfig = PulseTaintConfig
    module TaintItem = PulseTaintItem
    module Timestamp = PulseTimestamp
    module Trace = PulseTrace
    module TransitiveInfo = PulseTransitiveInfo
    module ValueHistory = PulseValueHistory
    module CellId = ValueHistory.CellId
    module ValueOrigin = PulseValueOrigin
    include module type of struct include SatUnsat.Types end

    for opening to get Sat and Unsat in the namespace

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a PulseSatUnsat.t =
    1. | Unsat
    2. | Sat of 'a

    Enforce short form usage

    include sig ... end
    module PulseAbstractValue = PulseAbstractValue
    module PulseAttribute = PulseAttribute
    module PulseCallEvent = PulseCallEvent
    module PulseInvalidation = PulseInvalidation
    module PulseTimestamp = PulseTimestamp
    module PulseSkippedCalls = PulseSkippedCalls
    module PulseTaintConfig = PulseTaintConfig
    module PulseTaintItem = PulseTaintItem
    module PulseTrace = PulseTrace
    module PulseValueHistory = PulseValueHistory
    module PulseSatUnsat = PulseSatUnsat
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCItv/index.html b/website/static/odoc/next/infer/Pulselib/PulseCItv/index.html index f79e07a434a..2962aa8a4f1 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCItv/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCItv/index.html @@ -1,7 +1,7 @@ -PulseCItv (infer.Pulselib.PulseCItv)

    Module Pulselib.PulseCItv

    module F = Stdlib.Format

    Concrete interval domain (CItv)

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val equal_to : IR.IntLit.t -> t
    val is_equal_to_zero : t -> bool
    val is_not_equal_to_zero : t -> bool

    whether this is literally ≠0

    val is_non_pointer : t -> bool

    whether both lb and ub are primitive integers

    val pp : F.formatter -> t -> unit
    val intersection : t -> t -> t option

    None if the intersection is empty

    type abduction_result =
    1. | Unsatisfiable
      (*

      the assertion is never true given the parameters

      *)
    2. | Satisfiable of t option * t option
      (*

      the assertion is satisfiable and when it is true then the lhs and rhs can be optionally refined to the given new intervals

      *)
    val abduce_binop_is_true : - negated:bool -> +PulseCItv (infer.Pulselib.PulseCItv)

    Module Pulselib.PulseCItv

    module F = Stdlib.Format

    Concrete interval domain (CItv)

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val equal_to : IR.IntLit.t -> t
    val is_equal_to_zero : t -> bool
    val is_not_equal_to_zero : t -> bool

    whether this is literally ≠0

    val is_non_pointer : t -> bool

    whether both lb and ub are primitive integers

    val pp : F.formatter -> t -> unit
    val intersection : t -> t -> t option

    None if the intersection is empty

    type abduction_result =
    1. | Unsatisfiable
      (*

      the assertion is never true given the parameters

      *)
    2. | Satisfiable of t option * t option
      (*

      the assertion is satisfiable and when it is true then the lhs and rhs can be optionally refined to the given new intervals

      *)
    val abduce_binop_is_true : + negated:bool -> IR.Binop.t -> t option -> t option -> - abduction_result

    given arith_lhs_opt bop arith_rhs_opt and if not negated, return either

    • Unsatisfiable iff lhs bop rhs = ∅
    • Satisfiable (abduced_lhs_opt,abduced_rhs_opt) iff lhs bop rhs ≠ ∅, such that (taking lhs=true if lhs_opt is None, same for rhs) abduced_lhs_opt=Some alhs if (lhs bop rhs ≠ ∅ => alhs⇔lhs) (and similarly for rhs)

    If negated then imagine a similar explanation replacing "= ∅" with "≠ ∅" and vice-versa.

    val binop : IR.Binop.t -> t -> t -> t option
    val unop : IR.Unop.t -> t -> t option
    val to_singleton : t -> IR.IntLit.t option
    val requires_integer_reasoning : t -> bool

    whether the interval can be expressed by a relation over rationals; used in PulseFormula to decide whether an interval is already expressed by another part of the formula

    \ No newline at end of file + abduction_result

    given arith_lhs_opt bop arith_rhs_opt and if not negated, return either

    • Unsatisfiable iff lhs bop rhs = ∅
    • Satisfiable (abduced_lhs_opt,abduced_rhs_opt) iff lhs bop rhs ≠ ∅, such that (taking lhs=true if lhs_opt is None, same for rhs) abduced_lhs_opt=Some alhs if (lhs bop rhs ≠ ∅ => alhs⇔lhs) (and similarly for rhs)

    If negated then imagine a similar explanation replacing "= ∅" with "≠ ∅" and vice-versa.

    val binop : IR.Binop.t -> t -> t -> t option
    val unop : IR.Unop.t -> t -> t option
    val to_singleton : t -> IR.IntLit.t option
    val requires_integer_reasoning : t -> bool

    whether the interval can be expressed by a relation over rationals; used in PulseFormula to decide whether an interval is already expressed by another part of the formula

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCallEvent/index.html b/website/static/odoc/next/infer/Pulselib/PulseCallEvent/index.html index 5e92e177d69..50e909ff7a7 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCallEvent/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCallEvent/index.html @@ -1,2 +1,2 @@ -PulseCallEvent (infer.Pulselib.PulseCallEvent)

    Module Pulselib.PulseCallEvent

    module F = Stdlib.Format
    type t =
    1. | Call of IR.Procname.t
      (*

      known function with summary

      *)
    2. | Model of string
      (*

      hardcoded model

      *)
    3. | SkippedKnownCall of IR.Procname.t
      (*

      known function without summary

      *)
    4. | SkippedUnknownCall of IR.Exp.t
      (*

      couldn't link the expression to a proc name

      *)
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit
    val pp_name_only : F.formatter -> t -> unit
    \ No newline at end of file +PulseCallEvent (infer.Pulselib.PulseCallEvent)

    Module Pulselib.PulseCallEvent

    module F = Stdlib.Format
    type t =
    1. | Call of IR.Procname.t
      (*

      known function with summary

      *)
    2. | Model of string
      (*

      hardcoded model

      *)
    3. | SkippedKnownCall of IR.Procname.t
      (*

      known function without summary

      *)
    4. | SkippedUnknownCall of IR.Exp.t
      (*

      couldn't link the expression to a proc name

      *)
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit
    val pp_name_only : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCallOperations/GlobalForStats/index.html b/website/static/odoc/next/infer/Pulselib/PulseCallOperations/GlobalForStats/index.html new file mode 100644 index 00000000000..eb3d3c01cd6 --- /dev/null +++ b/website/static/odoc/next/infer/Pulselib/PulseCallOperations/GlobalForStats/index.html @@ -0,0 +1,2 @@ + +GlobalForStats (infer.Pulselib.PulseCallOperations.GlobalForStats)

    Module PulseCallOperations.GlobalForStats

    val init_before_call : unit -> unit
    val is_node_not_stuck : unit -> bool
    val node_is_not_stuck : unit -> unit
    val is_one_call_stuck : unit -> bool
    val one_call_is_stuck : unit -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCallOperations/index.html b/website/static/odoc/next/infer/Pulselib/PulseCallOperations/index.html index ef7a1f27e2d..9d6892d9163 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCallOperations/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCallOperations/index.html @@ -1,24 +1,25 @@ -PulseCallOperations (infer.Pulselib.PulseCallOperations)

    Module Pulselib.PulseCallOperations

    val call : +PulseCallOperations (infer.Pulselib.PulseCallOperations)

    Module Pulselib.PulseCallOperations

    module GlobalForStats : sig ... end
    val call : IR.Tenv.t -> + Absint.Errlog.t -> Pulselib.PulseDomainInterface.PathContext.t -> - caller_proc_desc:IR.Procdesc.t -> - analyze_dependency: - (?specialization:IR.Specialization.t -> + caller_proc_desc:IR.Procdesc.t -> + analyze_dependency: + (?specialization:IR.Specialization.t -> IR.Procname.t -> - PulseSummary.t option) -> + PulseSummary.t Absint.AnalysisResult.t) -> IBase.Location.t -> IR.Procname.t -> - ret:(IR.Ident.t * IR.Typ.t) -> - actuals: + ret:(IR.Ident.t * IR.Typ.t) -> + actuals: ((Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> - formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> - call_kind:PulseOperations.call_kind -> + formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> + call_kind:PulseOperations.call_kind -> Pulselib.PulseDomainInterface.AbductiveDomain.t -> - ?call_flags:IR.CallFlags.t -> + ?call_flags:IR.CallFlags.t -> Pulselib.PulseDomainInterface.NonDisjDomain.t -> Pulselib.PulseDomainInterface.ExecutionDomain.t Pulselib.PulseDomainInterface.AccessResult.t @@ -31,14 +32,14 @@ IBase.Location.t -> Pulselib.PulseBasicInterface.CallEvent.t -> IR.Procname.t option -> - ret:(IR.Ident.t * IR.Typ.t) -> - actuals: + ret:(IR.Ident.t * IR.Typ.t) -> + actuals: ((Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) * IR.Typ.t) list -> - formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> + formals_opt:(IR.Pvar.t * IR.Typ.t) list option -> Pulselib.PulseDomainInterface.AbductiveDomain.t -> Pulselib.PulseDomainInterface.AbductiveDomain.t Pulselib.PulseDomainInterface.AccessResult.t - Pulselib.PulseBasicInterface.SatUnsat.t

    performs a call to a function with no summary by optimistically havoc'ing the by-ref actuals and the return value as appropriate

    \ No newline at end of file + Pulselib.PulseBasicInterface.SatUnsat.t

    performs a call to a function with no summary by optimistically havoc'ing the by-ref actuals and the return value as appropriate

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Attributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Attributes/index.html index eb5c679cccb..ade2ca4e298 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Attributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Attributes/index.html @@ -1,5 +1,5 @@ -Attributes (infer.Pulselib.PulseCanonValue.Make.Attributes)

    Module Make.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : +Attributes (infer.Pulselib.PulseCanonValue.Make.Attributes)

    Module Make.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : (t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
    val find_opt : t -> t -> Pulselib.PulseBasicInterface.Attributes.t option
    val allocate : @@ -81,8 +81,8 @@ t -> Pulselib.PulseBasicInterface.AbstractValue.t option
    val mark_as_end_of_collection : t -> t -> t
    val is_end_of_collection : t -> t -> bool
    val add_unreachable_at : t -> IBase.Location.t -> t -> t
    val add_copied_return : t -> - source:t -> - is_const_ref:bool -> + source:t -> + is_const_ref:bool -> Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t -> IBase.Location.t -> t -> @@ -94,10 +94,10 @@ t -> (IR.Procname.t * IBase.Location.t * Pulselib.PulseBasicInterface.Trace.t) option
    val remove_allocation_attr : t -> t -> t
    val remove_taint_attrs : t -> t -> t
    val remove_must_be_valid_attr : t -> t -> t
    val initialize : t -> t -> t
    val get_address_of_stack_variable : t -> t -> (IR.Var.t * IBase.Location.t * Pulselib.PulseBasicInterface.ValueHistory.t) - option
    val has_unknown_effect : t -> t -> bool
    \ No newline at end of file + option
    val has_unknown_effect : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Access/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Access/index.html index a013646afa1..5cfb1305bd4 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Access/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Access/index.html @@ -1,6 +1,9 @@ -Access (infer.Pulselib.PulseCanonValue.Make.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = t Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType with type t = t Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> +Access (infer.Pulselib.PulseCanonValue.Make.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = t PulseAccess.access
    include IStdlib.IStd.Caml.Set.OrderedType + with type t = t Pulselib.PulseAccess.access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : + get_var_repr: + (Pulselib.PulseAccess.AbstractValue.t -> + Pulselib.PulseAccess.AbstractValue.t) -> t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Edges/index.html index c09288185a4..e700fc3e26c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/Edges/index.html @@ -1,21 +1,21 @@ -Edges (infer.Pulselib.PulseCanonValue.Make.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S +Edges (infer.Pulselib.PulseCanonValue.Make.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S with type key = Access.t and type value = needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t - with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : + with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val canonicalize : - get_var_repr: + get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> - t
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/index.html index 3ecdb259631..d9590792211 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Memory/index.html @@ -1,5 +1,5 @@ -Memory (infer.Pulselib.PulseCanonValue.Make.Memory)

    Module Make.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap +Memory (infer.Pulselib.PulseCanonValue.Make.Memory)

    Module Make.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap with type key := t and type value = Edges.t with type t = PulseBaseMemory.t
    include IStdlib.PrettyPrintable.MonoMap @@ -7,17 +7,17 @@ with type value = Edges.t with type t = PulseBaseMemory.t
    type value = Edges.t
    val empty : t
    val is_empty : t -> bool
    val mem : t -> t -> bool
    val add : t -> value -> t -> t
    val update : t -> (value option -> value option) -> t -> t
    val singleton : t -> value -> t
    val remove : t -> t -> t
    val merge : (t -> value option -> value option -> value option) -> t -> t -> t
    val union : (t -> value -> value -> value option) -> t -> t -> t
    val iter : (t -> value -> unit) -> t -> unit
    val fold : (t -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (t -> value -> bool) -> t -> bool
    val exists : (t -> value -> bool) -> t -> bool
    val filter : (t -> value -> bool) -> t -> t
    val filter_map : (t -> value -> value option) -> t -> t
    val partition : (t -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (t * value) list
    val min_binding : t -> t * value
    val min_binding_opt : t -> (t * value) option
    val max_binding : t -> t * value
    val max_binding_opt : t -> (t * value) option
    val choose : t -> t * value
    val choose_opt : t -> (t * value) option
    val split : t -> t -> t * value option * t
    val find : t -> t -> value
    val find_opt : t -> t -> value option
    val find_first : (t -> bool) -> t -> t * value
    val find_first_opt : (t -> bool) -> t -> (t * value) option
    val find_last : (t -> bool) -> t -> t * value
    val find_last_opt : (t -> bool) -> t -> (t * value) option
    val map : (value -> value) -> t -> t
    val mapi : (t -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (t * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    \ No newline at end of file + (needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t) option
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Set/index.html index 761e3a038cc..3a24b3d7f87 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseCanonValue.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Pulselib.PulseCanonValue.Make.Set)

    Module Make.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Stack/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Stack/index.html index 84ceff7815a..a16c5cc38b5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Stack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/Stack/index.html @@ -1,5 +1,5 @@ -Stack (infer.Pulselib.PulseCanonValue.Make.Stack)

    Module Make.Stack

    include PulseBaseStack.S +Stack (infer.Pulselib.PulseCanonValue.Make.Stack)

    Module Make.Stack

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/argument-1-AbductiveDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/argument-1-AbductiveDomain/index.html index 51eec1781a2..2df81ffac05 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/argument-1-AbductiveDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/argument-1-AbductiveDomain/index.html @@ -1,5 +1,5 @@ -AbductiveDomain (infer.Pulselib.PulseCanonValue.Make.AbductiveDomain)

    Parameter Make.AbductiveDomain

    type astate
    val canon : +AbductiveDomain (infer.Pulselib.PulseCanonValue.Make.AbductiveDomain)

    Parameter Make.AbductiveDomain

    \ No newline at end of file + Pulselib.PulseBasicInterface.AbstractValue.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/index.html index b3d84bf164d..28d291c90ad 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/Make/index.html @@ -1,5 +1,5 @@ -Make (infer.Pulselib.PulseCanonValue.Make)

    Module PulseCanonValue.Make

    for use in PulseAbductiveDomain to define PulseAbductiveDomain.CanonValue

    Parameters

    module AbductiveDomain : sig ... end

    Signature

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : +Make (infer.Pulselib.PulseCanonValue.Make)

    Module PulseCanonValue.Make

    for use in PulseAbductiveDomain to define PulseAbductiveDomain.CanonValue

    Parameters

    module AbductiveDomain : sig ... end

    Signature

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : astate -> (Pulselib.PulseBasicInterface.AbstractValue.t * 'a) -> t * 'a
    val canon_snd_fst : astate -> ('a * (needs_canon * 'b)) -> 'a * (t * 'b)
    val canon_opt : astate -> needs_canon option -> t option
    val canon_opt' : @@ -20,4 +20,4 @@ and type Edges.t = PulseBaseMemory.Edges.t
    val canon_access : astate -> PulseAccess.t -> Memory.Access.t
    \ No newline at end of file + and type t = PulseBaseAddressAttributes.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/index.html index 59d2c61a5be..17d7bb9f566 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/index.html @@ -1,4 +1,4 @@ -PulseCanonValue (infer.Pulselib.PulseCanonValue)

    Module Pulselib.PulseCanonValue

    module F = Stdlib.Format
    module type S = sig ... end

    elements of the base abstract domain (stack, heap, attributes) with a type-safe interface that reflects the expected normalization status of the abstract values they mention

    module Make +PulseCanonValue (infer.Pulselib.PulseCanonValue)

    Module Pulselib.PulseCanonValue

    module F = Stdlib.Format
    module type S = sig ... end

    elements of the base abstract domain (stack, heap, attributes) with a type-safe interface that reflects the expected normalization status of the abstract values they mention

    module Make (AbductiveDomain : sig ... end) : - S with type astate = AbductiveDomain.astate

    for use in PulseAbductiveDomain to define PulseAbductiveDomain.CanonValue

    \ No newline at end of file + S with type astate = AbductiveDomain.astate

    for use in PulseAbductiveDomain to define PulseAbductiveDomain.CanonValue

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Attributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Attributes/index.html index 1765ffeb27f..ea7650924b2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Attributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Attributes/index.html @@ -1,5 +1,5 @@ -Attributes (infer.Pulselib.PulseCanonValue.S.Attributes)

    Module S.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : +Attributes (infer.Pulselib.PulseCanonValue.S.Attributes)

    Module S.Attributes

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : Pulselib.PulseBaseAddressAttributes.F.formatter -> t -> unit
    val empty : t
    val filter : (t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
    val filter_with_discarded_addrs : (t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
    val find_opt : t -> t -> Pulselib.PulseBasicInterface.Attributes.t option
    val allocate : @@ -81,8 +81,8 @@ t -> Pulselib.PulseBasicInterface.AbstractValue.t option
    val mark_as_end_of_collection : t -> t -> t
    val is_end_of_collection : t -> t -> bool
    val add_unreachable_at : t -> IBase.Location.t -> t -> t
    val add_copied_return : t -> - source:t -> - is_const_ref:bool -> + source:t -> + is_const_ref:bool -> Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t -> IBase.Location.t -> t -> @@ -94,10 +94,10 @@ t -> (IR.Procname.t * IBase.Location.t * Pulselib.PulseBasicInterface.Trace.t) option
    val remove_allocation_attr : t -> t -> t
    val remove_taint_attrs : t -> t -> t
    val remove_must_be_valid_attr : t -> t -> t
    val initialize : t -> t -> t
    val get_address_of_stack_variable : t -> t -> (IR.Var.t * IBase.Location.t * Pulselib.PulseBasicInterface.ValueHistory.t) - option
    val has_unknown_effect : t -> t -> bool
    \ No newline at end of file + option
    val has_unknown_effect : t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Access/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Access/index.html index 86a124924df..83231f5d40f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Access/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Access/index.html @@ -1,6 +1,9 @@ -Access (infer.Pulselib.PulseCanonValue.S.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType - with type t = t Absint.MemoryAccess.t
    include IStdlib.IStd.Caml.Set.OrderedType with type t = t Absint.MemoryAccess.t
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : - get_var_repr:(PulseAbstractValue.t -> PulseAbstractValue.t) -> +Access (infer.Pulselib.PulseCanonValue.S.Memory.Access)

    Module Memory.Access

    include IStdlib.PrettyPrintable.PrintableEquatableOrderedType + with type t = t PulseAccess.access
    include IStdlib.IStd.Caml.Set.OrderedType + with type t = t Pulselib.PulseAccess.access
    val compare : t -> t -> int
    include IStdlib.PrettyPrintable.PrintableEquatableType with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val equal : t -> t -> bool
    val canonicalize : + get_var_repr: + (Pulselib.PulseAccess.AbstractValue.t -> + Pulselib.PulseAccess.AbstractValue.t) -> t -> - t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + t
    val yojson_of_t : t -> Yojson.Safe.t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Edges/index.html index 56872900275..4dee1c2f232 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/Edges/index.html @@ -1,21 +1,21 @@ -Edges (infer.Pulselib.PulseCanonValue.S.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S +Edges (infer.Pulselib.PulseCanonValue.S.Memory.Edges)

    Module Memory.Edges

    include IStdlib.RecencyMap.S with type key = Access.t and type value = needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t - with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : + with type t = PulseBaseMemory.Edges.t

    Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    type key = Access.t
    val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
    val empty : t
    val add : key -> value -> t -> t
    val bindings : t -> (key * value) list
    val exists : t -> f:((key * value) -> bool) -> bool
    val for_all : t -> f:((key * value) -> bool) -> bool
    val filter : t -> f:((key * value) -> bool) -> t
    val find_opt : key -> t -> value option
    val iter : t -> f:((key * value) -> unit) -> unit
    val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
    val fold_map : t -> - init:'acc -> - f:('acc -> key -> value -> 'acc * value) -> - 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val mapi : + init:'acc -> + f:('acc -> key -> value -> 'acc * value) -> + 'acc * t
    val is_empty : t -> bool
    val map : t -> f:(value -> value) -> t
    val mem : t -> key -> bool
    val union_left_biased : t -> t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val canonicalize : - get_var_repr: + get_var_repr: (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> - t
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/index.html index ecf2b739a19..10ff5396adb 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Memory/index.html @@ -1,5 +1,5 @@ -Memory (infer.Pulselib.PulseCanonValue.S.Memory)

    Module S.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap +Memory (infer.Pulselib.PulseCanonValue.S.Memory)

    Module S.Memory

    module Edges : sig ... end
    include IStdlib.PrettyPrintable.PPMonoMap with type key := t and type value = Edges.t with type t = PulseBaseMemory.t
    include IStdlib.PrettyPrintable.MonoMap @@ -7,17 +7,17 @@ with type value = Edges.t with type t = PulseBaseMemory.t
    type value = Edges.t
    val empty : t
    val is_empty : t -> bool
    val mem : t -> t -> bool
    val add : t -> value -> t -> t
    val update : t -> (value option -> value option) -> t -> t
    val singleton : t -> value -> t
    val remove : t -> t -> t
    val merge : (t -> value option -> value option -> value option) -> t -> t -> t
    val union : (t -> value -> value -> value option) -> t -> t -> t
    val iter : (t -> value -> unit) -> t -> unit
    val fold : (t -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (t -> value -> bool) -> t -> bool
    val exists : (t -> value -> bool) -> t -> bool
    val filter : (t -> value -> bool) -> t -> t
    val filter_map : (t -> value -> value option) -> t -> t
    val partition : (t -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (t * value) list
    val min_binding : t -> t * value
    val min_binding_opt : t -> (t * value) option
    val max_binding : t -> t * value
    val max_binding_opt : t -> (t * value) option
    val choose : t -> t * value
    val choose_opt : t -> (t * value) option
    val split : t -> t -> t * value option * t
    val find : t -> t -> value
    val find_opt : t -> t -> value option
    val find_first : (t -> bool) -> t -> t * value
    val find_first_opt : (t -> bool) -> t -> (t * value) option
    val find_last : (t -> bool) -> t -> t * value
    val find_last_opt : (t -> bool) -> t -> (t * value) option
    val map : (value -> value) -> t -> t
    val mapi : (t -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (t * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(t -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (t * value) Stdlib.Seq.t -> t
    val to_seq : t -> (t * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val register_address : t -> t -> t
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    \ No newline at end of file + (needs_canon * Pulselib.PulseBasicInterface.ValueHistory.t) option
    val has_edge : t -> Access.t -> t -> bool
    val is_allocated : t -> t -> bool

    whether the address has a non-empty set of edges

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Set/index.html index 7b91bb54239..0cae2d48f03 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseCanonValue.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Pulselib.PulseCanonValue.S.Set)

    Module S.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Stack/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Stack/index.html index 7932f72ea39..f9e78926a8b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Stack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/Stack/index.html @@ -1,5 +1,5 @@ -Stack (infer.Pulselib.PulseCanonValue.S.Stack)

    Module S.Stack

    include PulseBaseStack.S +Stack (infer.Pulselib.PulseCanonValue.S.Stack)

    Module S.Stack

    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    \ No newline at end of file + t diff --git a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/index.html b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/index.html index 8bac3c7f596..6c62a93465c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCanonValue/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Pulselib.PulseCanonValue.S)

    Module type PulseCanonValue.S

    elements of the base abstract domain (stack, heap, attributes) with a type-safe interface that reflects the expected normalization status of the abstract values they mention

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    type astate

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : +S (infer.Pulselib.PulseCanonValue.S)

    Module type PulseCanonValue.S

    elements of the base abstract domain (stack, heap, attributes) with a type-safe interface that reflects the expected normalization status of the abstract values they mention

    an abstract value that is the canonical representative of its equivalence class (of other abstract values that are equal to it) in the current state (this may not be true if more equalities are added or generally any time the formula inside the state changes)

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    • deprecated unsafe, obviously; please add a comment why you need to use this and suppress this warning locally with [@alert "-deprecated"]
    type needs_canon

    an abstract value that needs to be normalized; just AbstractValue.t under the hood too

    type astate

    PulseAbductiveDomain.t but we cannot mention it there otherwise it would create a circular dependency.

    Functions to normalize abstract values

    Also provided are helper functions that normalize inside of more complex values such as tuples. In that case the functions take care to preserve physical equality if the input value is already its own canonical representative.

    We need separate functions for AbstractValue.t and needs_canon values because of the type system. By convention functions that end in ' are the same as the non-primed ones but operate on AbstractValue.t instead of needs_canon ones.

    val canon : astate -> needs_canon -> t

    fetch the canonical representative of the given needs_canon

    fetch the canonical representative of the given AbstractValue.t

    val canon_fst : astate -> (needs_canon * 'a) -> t * 'a
    val canon_fst' : astate -> (Pulselib.PulseBasicInterface.AbstractValue.t * 'a) -> t * 'a
    val canon_snd_fst : astate -> ('a * (needs_canon * 'b)) -> 'a * (t * 'b)
    val canon_opt : astate -> needs_canon option -> t option
    val canon_opt' : @@ -20,4 +20,4 @@ and type Edges.t = PulseBaseMemory.Edges.t
    val canon_access : astate -> PulseAccess.t -> Memory.Access.t
    \ No newline at end of file + and type t = PulseBaseAddressAttributes.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseCheapCopyTypes/index.html b/website/static/odoc/next/infer/Pulselib/PulseCheapCopyTypes/index.html index 4f3cb49164f..d2b54d48cbe 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseCheapCopyTypes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseCheapCopyTypes/index.html @@ -1,2 +1,2 @@ -PulseCheapCopyTypes (infer.Pulselib.PulseCheapCopyTypes)

    Module Pulselib.PulseCheapCopyTypes

    val is_known_cheap_copy : IR.Tenv.t -> IR.Typ.name -> bool

    Check if a struct name is known to be a cheap copy for unnecessary copy checker.

    \ No newline at end of file +PulseCheapCopyTypes (infer.Pulselib.PulseCheapCopyTypes)

    Module Pulselib.PulseCheapCopyTypes

    val is_known_cheap_copy : IR.Tenv.t -> IR.Typ.name -> bool

    Check if a struct name is known to be a cheap copy for unnecessary copy checker.

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseContext/index.html b/website/static/odoc/next/infer/Pulselib/PulseContext/index.html index 4bb56e17088..379fa3fb80f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseContext/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseContext/index.html @@ -1,2 +1,2 @@ -PulseContext (infer.Pulselib.PulseContext)

    Module Pulselib.PulseContext

    val proc_desc : unit -> IR.Procdesc.t option
    val tenv : unit -> IR.Tenv.t option
    val tenv_exn : unit -> IR.Tenv.t
    val set_tenv_global_for_testing : IR.Tenv.t -> unit
    \ No newline at end of file +PulseContext (infer.Pulselib.PulseContext)

    Module Pulselib.PulseContext

    val proc_desc : unit -> IR.Procdesc.t option
    val tenv : unit -> IR.Tenv.t option
    val tenv_exn : unit -> IR.Tenv.t
    val set_tenv_global_for_testing : IR.Tenv.t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDecompiler/index.html b/website/static/odoc/next/infer/Pulselib/PulseDecompiler/index.html index 476b6fb730c..a04c6c5c3b9 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDecompiler/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDecompiler/index.html @@ -1,7 +1,7 @@ -PulseDecompiler (infer.Pulselib.PulseDecompiler)

    Module Pulselib.PulseDecompiler

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module Access = PulseAccess
    module CallEvent = PulseCallEvent
    module DecompilerExpr = PulseDecompilerExpr
    module ValueHistory = PulseValueHistory

    Describe abstract values in terms of source code elements

    type key = AbstractValue.t
    type t
    val pp : F.formatter -> t -> unit
    val empty : t
    val invalid : t
    val add_var_source : key -> IR.Var.t -> t -> t
    val add_block_source : key -> string -> t -> t
    val add_call_source : +PulseDecompiler (infer.Pulselib.PulseDecompiler)

    Module Pulselib.PulseDecompiler

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module Access = PulseAccess
    module CallEvent = PulseCallEvent
    module DecompilerExpr = PulseDecompilerExpr
    module ValueHistory = PulseValueHistory

    Describe abstract values in terms of source code elements

    type key = AbstractValue.t
    type t
    val pp : F.formatter -> t -> unit
    val empty : t
    val invalid : t
    val add_var_source : key -> IR.Var.t -> t -> t
    val add_block_source : key -> string -> t -> t
    val add_call_source : key -> CallEvent.t -> ((AbstractValue.t * ValueHistory.t) * IR.Typ.t) list -> t -> - t
    val add_access_source : key -> Access.t -> src:key -> t -> t
    \ No newline at end of file + t
    val add_access_source : key -> Access.t -> src:key -> t -> t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDecompilerExpr/index.html b/website/static/odoc/next/infer/Pulselib/PulseDecompilerExpr/index.html index f6215dff979..e3f229b98f2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDecompilerExpr/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDecompilerExpr/index.html @@ -1,2 +1,2 @@ -PulseDecompilerExpr (infer.Pulselib.PulseDecompilerExpr)

    Module Pulselib.PulseDecompilerExpr

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    type base =
    1. | PVar of IR.Pvar.t
    2. | Block of string
    3. | ReturnValue of CallEvent.t
    val compare_base : base -> base -> int
    val equal_base : base -> base -> bool
    type access =
    1. | CaptureFieldAccess of string
    2. | FieldAccess of IR.Fieldname.t
    3. | ArrayAccess of source_expr option
    4. | TakeAddress
    5. | Dereference
    and source_expr = base * access list
    val compare_access : access -> access -> int
    val compare_source_expr : source_expr -> source_expr -> int
    val equal_access : access -> access -> bool
    val equal_source_expr : source_expr -> source_expr -> bool
    type t =
    1. | SourceExpr of source_expr * AbstractValue.t option
    2. | Unknown of AbstractValue.t option
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val pp_source_expr : F.formatter -> source_expr -> unit
    val includes_captured_variable : t -> bool
    val includes_block : t -> bool
    val pp_with_abstract_value : Stdlib.Format.formatter -> t -> unit
    val abstract_value_of_expr : t -> AbstractValue.t option
    val decomp_source_expr_equal : t -> t -> bool
    val is_unknown : t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    val reset_abstract_value : t -> t

    forget the underlying abstract value in the argument: abstract_value_of_expr (reset_abstract_value expr) is None

    \ No newline at end of file +PulseDecompilerExpr (infer.Pulselib.PulseDecompilerExpr)

    Module Pulselib.PulseDecompilerExpr

    module F = Stdlib.Format
    module AbstractValue = PulseAbstractValue
    module CallEvent = PulseCallEvent
    type base =
    1. | PVar of IR.Pvar.t
    2. | Block of string
    3. | ReturnValue of CallEvent.t
    val compare_base : base -> base -> int
    val equal_base : base -> base -> bool
    type access =
    1. | CaptureFieldAccess of string
    2. | FieldAccess of IR.Fieldname.t
    3. | ArrayAccess of source_expr option
    4. | Dereference
    and source_expr = base * access list
    val compare_access : access -> access -> int
    val compare_source_expr : source_expr -> source_expr -> int
    val equal_access : access -> access -> bool
    val equal_source_expr : source_expr -> source_expr -> bool
    type t =
    1. | SourceExpr of source_expr * AbstractValue.t option
    2. | Unknown of AbstractValue.t option
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val pp_source_expr : F.formatter -> source_expr -> unit
    val includes_captured_variable : t -> bool
    val includes_block : t -> bool
    val pp_with_abstract_value : Stdlib.Format.formatter -> t -> unit
    val abstract_value_of_expr : t -> AbstractValue.t option
    val is_unknown : t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    val reset_abstract_value : t -> t

    forget the underlying abstract value in the argument: abstract_value_of_expr (reset_abstract_value expr) is None

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ErlangError/index.html b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ErlangError/index.html index 661a7562f27..a0594826d23 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ErlangError/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ErlangError/index.html @@ -1,2 +1,2 @@ -ErlangError (infer.Pulselib.PulseDiagnostic.ErlangError)

    Module PulseDiagnostic.ErlangError

    type t =
    1. | Badarg of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    2. | Badkey of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    3. | Badmap of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    4. | Badmatch of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    5. | Badrecord of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    6. | Badreturn of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    7. | Case_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    8. | Function_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    9. | If_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    10. | Try_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file +ErlangError (infer.Pulselib.PulseDiagnostic.ErlangError)

    Module PulseDiagnostic.ErlangError

    type t =
    1. | Badarg of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    2. | Badkey of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    3. | Badmap of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    4. | Badmatch of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    5. | Badrecord of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    6. | Badreturn of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    7. | Case_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    8. | Function_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    9. | If_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    10. | Try_clause of {
      1. calling_context : calling_context;
      2. location : IBase.Location.t;
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ReadUninitialized/index.html b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ReadUninitialized/index.html index fbb01bfdc65..20c2fc65bd2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ReadUninitialized/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/ReadUninitialized/index.html @@ -1,2 +1,2 @@ -ReadUninitialized (infer.Pulselib.PulseDiagnostic.ReadUninitialized)

    Module PulseDiagnostic.ReadUninitialized

    type t = {
    1. typ : Attribute.UninitializedTyp.t;
    2. calling_context : calling_context;
      (*

      the list of function calls leading to the issue being realised, which is an additional common prefix to the traces in the record

      *)
    3. trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to read of the uninitialized value

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    \ No newline at end of file +ReadUninitialized (infer.Pulselib.PulseDiagnostic.ReadUninitialized)

    Module PulseDiagnostic.ReadUninitialized

    type t = {
    1. typ : Attribute.UninitializedTyp.t;
    2. calling_context : calling_context;
      (*

      the list of function calls leading to the issue being realised, which is an additional common prefix to the traces in the record

      *)
    3. trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to read of the uninitialized value

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/index.html b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/index.html index 0c97b403d2e..acaf5ff7754 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDiagnostic/index.html @@ -1,5 +1,5 @@ -PulseDiagnostic (infer.Pulselib.PulseDiagnostic)

    Module Pulselib.PulseDiagnostic

    module F = Stdlib.Format
    module Attribute = PulseAttribute
    module CallEvent = PulseCallEvent
    module ConfigName = OpenSource.FbPulseConfigName
    module DecompilerExpr = PulseDecompilerExpr
    module Invalidation = PulseInvalidation
    module TaintItem = PulseTaintItem
    module Trace = PulseTrace
    module TransitiveInfo = PulseTransitiveInfo
    module ValueHistory = PulseValueHistory
    type calling_context = (CallEvent.t * IBase.Location.t) list
    val compare_calling_context : calling_context -> calling_context -> int
    val equal_calling_context : calling_context -> calling_context -> bool
    type access_to_invalid_address = {
    1. calling_context : calling_context;
      (*

      the list of function calls leading to the issue being realised, in outermost-to-innermost order, which is an additional common prefix to the traces in the record

      *)
    2. invalid_address : DecompilerExpr.t;
    3. invalidation : Invalidation.t;
    4. invalidation_trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to invalidation without further assumptions

      *)
    5. access_trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to an access to the value invalidated in invalidation_trace without further assumptions

      *)
    6. must_be_valid_reason : Invalidation.must_be_valid_reason option;
    }
    val compare_access_to_invalid_address : +PulseDiagnostic (infer.Pulselib.PulseDiagnostic)

    Module Pulselib.PulseDiagnostic

    module F = Stdlib.Format
    module Attribute = PulseAttribute
    module CallEvent = PulseCallEvent
    module ConfigName = OpenSource.FbPulseConfigName
    module DecompilerExpr = PulseDecompilerExpr
    module Invalidation = PulseInvalidation
    module TaintItem = PulseTaintItem
    module Trace = PulseTrace
    module TransitiveInfo = PulseTransitiveInfo
    module ValueHistory = PulseValueHistory
    type calling_context = (CallEvent.t * IBase.Location.t) list
    val compare_calling_context : calling_context -> calling_context -> int
    val equal_calling_context : calling_context -> calling_context -> bool
    type access_to_invalid_address = {
    1. calling_context : calling_context;
      (*

      the list of function calls leading to the issue being realised, in outermost-to-innermost order, which is an additional common prefix to the traces in the record

      *)
    2. invalid_address : DecompilerExpr.t;
    3. invalidation : Invalidation.t;
    4. invalidation_trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to invalidation without further assumptions

      *)
    5. access_trace : Trace.t;
      (*

      assuming we are in the calling context, the trace leads to an access to the value invalidated in invalidation_trace without further assumptions

      *)
    6. must_be_valid_reason : Invalidation.must_be_valid_reason option;
    }
    val compare_access_to_invalid_address : access_to_invalid_address -> access_to_invalid_address -> int
    val equal_access_to_invalid_address : @@ -7,4 +7,4 @@ access_to_invalid_address -> bool
    val yojson_of_access_to_invalid_address : access_to_invalid_address -> - Ppx_yojson_conv_lib.Yojson.Safe.t
    module ErlangError : sig ... end
    module ReadUninitialized : sig ... end
    type flow_kind =
    1. | TaintedFlow
    2. | FlowToSink
    3. | FlowFromSource
    val equal_flow_kind : flow_kind -> flow_kind -> bool
    type retain_cycle_data = {
    1. expr : DecompilerExpr.t;
    2. location : IBase.Location.t option;
    3. trace : Trace.t option;
    }
    val equal_retain_cycle_data : retain_cycle_data -> retain_cycle_data -> bool
    type t =
    1. | AccessToInvalidAddress of access_to_invalid_address
    2. | ConfigUsage of {
      1. pname : IR.Procname.t;
      2. config : ConfigName.t;
      3. branch_location : IBase.Location.t;
      4. location : IBase.Location.t;
      5. trace : Trace.t;
      }
    3. | ConstRefableParameter of {
      1. param : IR.Var.t;
      2. typ : IR.Typ.t;
      3. location : IBase.Location.t;
      }
    4. | CSharpResourceLeak of {
      1. class_name : IR.CSharpClassName.t;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    5. | ErlangError of ErlangError.t
    6. | TransitiveAccess of {
      1. tag : string;
      2. description : string;
      3. call_trace : Trace.t;
      4. transitive_callees : TransitiveInfo.Callees.t;
      5. transitive_missed_captures : IR.Typ.Name.Set.t;
      }
    7. | JavaResourceLeak of {
      1. class_name : IR.JavaClassName.t;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    8. | HackUnawaitedAwaitable of {
      1. allocation_trace : Trace.t;
      2. location : IBase.Location.t;
      }
    9. | MemoryLeak of {
      1. allocator : Attribute.allocator;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    10. | ReadonlySharedPtrParameter of {
      1. param : IR.Var.t;
      2. typ : IR.Typ.t;
      3. location : IBase.Location.t;
      4. used_locations : IBase.Location.t list;
      }
    11. | ReadUninitialized of ReadUninitialized.t
    12. | RetainCycle of {
      1. values : retain_cycle_data list;
      2. location : IBase.Location.t;
      }
    13. | StackVariableAddressEscape of {
      1. variable : IR.Var.t;
      2. history : ValueHistory.t;
      3. location : IBase.Location.t;
      }
    14. | TaintFlow of {
      1. expr : DecompilerExpr.t;
      2. source : TaintItem.t * ValueHistory.t;
      3. sink : TaintItem.t * Trace.t;
      4. location : IBase.Location.t;
      5. flow_kind : flow_kind;
      6. policy_description : string;
      7. policy_id : int;
      8. policy_privacy_effect : string option;
      }
    15. | UnnecessaryCopy of {
      1. copied_into : PulseAttribute.CopiedInto.t;
      2. source_typ : IR.Typ.t option;
      3. source_opt : DecompilerExpr.source_expr option;
      4. location : IBase.Location.t;
      5. copied_location : (IR.Procname.t * IBase.Location.t) option;
      6. location_instantiated : IBase.Location.t option;
      7. from : PulseAttribute.CopyOrigin.t;
      }

    an error to report to the user

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val aborts_execution : t -> bool

    whether the presence of an error should abort the execution

    val get_message_and_suggestion : t -> string * string option
    val get_location : t -> IBase.Location.t
    val get_location_instantiated : t -> IBase.Location.t option
    val get_copy_type : t -> IR.Typ.t option
    val get_issue_type : latent:bool -> t -> IBase.IssueType.t
    val get_trace : t -> Absint.Errlog.loc_trace
    \ No newline at end of file + Ppx_yojson_conv_lib.Yojson.Safe.t
    module ErlangError : sig ... end
    module ReadUninitialized : sig ... end
    type flow_kind =
    1. | TaintedFlow
    2. | FlowToSink
    3. | FlowFromSource
    val equal_flow_kind : flow_kind -> flow_kind -> bool
    type retain_cycle_data = {
    1. expr : DecompilerExpr.t;
    2. location : IBase.Location.t option;
    3. trace : Trace.t option;
    }
    val equal_retain_cycle_data : retain_cycle_data -> retain_cycle_data -> bool
    type t =
    1. | AccessToInvalidAddress of access_to_invalid_address
    2. | ConfigUsage of {
      1. pname : IR.Procname.t;
      2. config : ConfigName.t;
      3. branch_location : IBase.Location.t;
      4. location : IBase.Location.t;
      5. trace : Trace.t;
      }
    3. | ConstRefableParameter of {
      1. param : IR.Var.t;
      2. typ : IR.Typ.t;
      3. location : IBase.Location.t;
      }
    4. | CSharpResourceLeak of {
      1. class_name : IR.CSharpClassName.t;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    5. | DynamicTypeMismatch of {
      1. location : IBase.Location.t;
      }
    6. | ErlangError of ErlangError.t
    7. | TransitiveAccess of {
      1. tag : string;
      2. description : string;
      3. call_trace : Trace.t;
      4. transitive_callees : TransitiveInfo.Callees.t;
      5. transitive_missed_captures : IR.Typ.Name.Set.t;
      }
    8. | JavaResourceLeak of {
      1. class_name : IR.JavaClassName.t;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    9. | HackCannotInstantiateAbstractClass of {
      1. type_name : IR.Typ.Name.t;
      2. trace : Trace.t;
      3. location : IBase.Location.t;
      }
    10. | HackUnawaitedAwaitable of {
      1. allocation_trace : Trace.t;
      2. location : IBase.Location.t;
      }
    11. | MemoryLeak of {
      1. allocator : Attribute.allocator;
      2. allocation_trace : Trace.t;
      3. location : IBase.Location.t;
      }
    12. | MutualRecursionCycle of {
      1. cycle : Trace.t;
      2. location : IBase.Location.t;
      }
    13. | ReadonlySharedPtrParameter of {
      1. param : IR.Var.t;
      2. typ : IR.Typ.t;
      3. location : IBase.Location.t;
      4. used_locations : IBase.Location.t list;
      }
    14. | ReadUninitialized of ReadUninitialized.t
    15. | RetainCycle of {
      1. values : retain_cycle_data list;
      2. location : IBase.Location.t;
      3. unknown_access_type : bool;
      }
    16. | StackVariableAddressEscape of {
      1. variable : IR.Var.t;
      2. history : ValueHistory.t;
      3. location : IBase.Location.t;
      }
    17. | TaintFlow of {
      1. expr : DecompilerExpr.t;
      2. source : TaintItem.t * ValueHistory.t;
      3. sink : TaintItem.t * Trace.t;
      4. location : IBase.Location.t;
      5. flow_kind : flow_kind;
      6. policy_description : string;
      7. policy_id : int;
      8. policy_privacy_effect : string option;
      }
    18. | UnnecessaryCopy of {
      1. copied_into : PulseAttribute.CopiedInto.t;
      2. source_typ : IR.Typ.t option;
      3. source_opt : DecompilerExpr.source_expr option;
      4. location : IBase.Location.t;
      5. copied_location : (IR.Procname.t * IBase.Location.t) option;
      6. location_instantiated : IBase.Location.t option;
      7. from : PulseAttribute.CopyOrigin.t;
      }

    an error to report to the user

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val aborts_execution : t -> bool

    whether the presence of an error should abort the execution

    val get_message_and_suggestion : t -> string * string option
    val get_location : t -> IBase.Location.t
    val get_location_instantiated : t -> IBase.Location.t option
    val get_copy_type : t -> IR.Typ.t option
    val get_issue_type : latent:bool -> t -> IBase.IssueType.t
    val get_trace : t -> Absint.Errlog.loc_trace
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseDomainInterface/index.html b/website/static/odoc/next/infer/Pulselib/PulseDomainInterface/index.html index 008ef6324a2..a269c65f47f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseDomainInterface/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseDomainInterface/index.html @@ -1,2 +1,2 @@ -PulseDomainInterface (infer.Pulselib.PulseDomainInterface)

    Module Pulselib.PulseDomainInterface

    High-level Pulse Operations

    If you do any mutations of the state in pulse that go beyond what PulseOperations offers you may want these modules (but consider adding what you need to PulseOperations or to one of the models modules if appropriate). In addition to defining short names for safe versions of stack/heap/... it ensures only those safe versions are used. Do not use lower-level modules directly!

    High-level modules operating on the entire biabductive state

    module AbductiveDomain = PulseAbductiveDomain
    module Stack = AbductiveDomain.Stack
    module Memory = AbductiveDomain.Memory
    module AddressAttributes = AbductiveDomain.AddressAttributes
    module CanonValue = AbductiveDomain.CanonValue

    Low-level modules operating on individual elements of the abductive domain

    module BaseStack = CanonValue.Stack
    module BaseMemory = CanonValue.Memory
    module CanonAccess = BaseMemory.Access
    module CanonAccessSet = BaseMemory.Access.Set
    module BaseAddressAttributes = CanonValue.Attributes
    module Decompiler = PulseAbductiveDecompiler
    module NonDisjDomain = PulseNonDisjunctiveDomain
    module PathContext = PulsePathContext

    Miscellaneous

    module AccessResult = PulseAccessResult
    module DecompilerExpr = PulseDecompilerExpr
    module Diagnostic = PulseDiagnostic
    module ExecutionDomain = PulseExecutionDomain
    module LatentIssue = PulseLatentIssue

    Unsafe modules, use with caution

    Misusing these modules may miss abducing addresses to the pre-condition or mistakenly manipulate non-normalized values. See PulseAbductiveDomain for more information.

    These can safely be used when reading summaries, where all values have already been normalized on creation.

    module BaseDomain = PulseBaseDomain
    module UnsafeStack = PulseBaseStack
    module UnsafeMemory = PulseBaseMemory
    module UnsafeAttributes = PulseBaseAddressAttributes

    Enforce short form usage

    include sig ... end
    module PulseAbductiveDomain = PulseAbductiveDomain
    module PulseAccessResult = PulseAccessResult
    module PulseBaseDomain = PulseBaseDomain
    module PulseBaseStack = PulseBaseStack
    module PulseBaseMemory = PulseBaseMemory
    module PulseBaseAddressAttributes = PulseBaseAddressAttributes
    module PulseAbductiveDecompiler = PulseAbductiveDecompiler
    module PulseDiagnostic = PulseDiagnostic
    module PulseExecutionDomain = PulseExecutionDomain
    module PulseLatentIssue = PulseLatentIssue
    module PulsePathContext = PulsePathContext
    include module type of struct include PulseResult.Type end

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) PulseResult.t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    \ No newline at end of file +PulseDomainInterface (infer.Pulselib.PulseDomainInterface)

    Module Pulselib.PulseDomainInterface

    High-level Pulse Operations

    If you do any mutations of the state in pulse that go beyond what PulseOperations offers you may want these modules (but consider adding what you need to PulseOperations or to one of the models modules if appropriate). In addition to defining short names for safe versions of stack/heap/... it ensures only those safe versions are used. Do not use lower-level modules directly!

    High-level modules operating on the entire biabductive state

    module AbductiveDomain = PulseAbductiveDomain
    module Stack = AbductiveDomain.Stack
    module Memory = AbductiveDomain.Memory
    module AddressAttributes = AbductiveDomain.AddressAttributes
    module CanonValue = AbductiveDomain.CanonValue

    Low-level modules operating on individual elements of the abductive domain

    module BaseStack = CanonValue.Stack
    module BaseMemory = CanonValue.Memory
    module CanonAccess = BaseMemory.Access
    module CanonAccessSet = BaseMemory.Access.Set
    module BaseAddressAttributes = CanonValue.Attributes
    module Decompiler = PulseAbductiveDecompiler
    module NonDisjDomain = PulseNonDisjunctiveDomain
    module PathContext = PulsePathContext

    Miscellaneous

    module AccessResult = PulseAccessResult
    module DecompilerExpr = PulseDecompilerExpr
    module Diagnostic = PulseDiagnostic
    module ExecutionDomain = PulseExecutionDomain
    module LatentIssue = PulseLatentIssue

    Unsafe modules, use with caution

    Misusing these modules may miss abducing addresses to the pre-condition or mistakenly manipulate non-normalized values. See PulseAbductiveDomain for more information.

    These can safely be used when reading summaries, where all values have already been normalized on creation.

    module BaseDomain = PulseBaseDomain
    module UnsafeStack = PulseBaseStack
    module UnsafeMemory = PulseBaseMemory
    module UnsafeAttributes = PulseBaseAddressAttributes

    Enforce short form usage

    include sig ... end
    module PulseAbductiveDomain = PulseAbductiveDomain
    module PulseAccessResult = PulseAccessResult
    module PulseBaseDomain = PulseBaseDomain
    module PulseBaseStack = PulseBaseStack
    module PulseBaseMemory = PulseBaseMemory
    module PulseBaseAddressAttributes = PulseBaseAddressAttributes
    module PulseAbductiveDecompiler = PulseAbductiveDecompiler
    module PulseDiagnostic = PulseDiagnostic
    module PulseExecutionDomain = PulseExecutionDomain
    module PulseLatentIssue = PulseLatentIssue
    module PulsePathContext = PulsePathContext
    include module type of struct include PulseResult.Type end

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) PulseResult.t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseExecutionDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseExecutionDomain/index.html index 63a1fbb200e..5b10065e3ae 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseExecutionDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseExecutionDomain/index.html @@ -1,5 +1,10 @@ -PulseExecutionDomain (infer.Pulselib.PulseExecutionDomain)

    Module Pulselib.PulseExecutionDomain

    module F = Stdlib.Format
    module AbductiveDomain = PulseAbductiveDomain
    module DecompilerExpr = PulseDecompilerExpr
    module LatentIssue = PulseLatentIssue
    type 'abductive_domain_t base_t =
    1. | ContinueProgram of 'abductive_domain_t
      (*

      represents the state at the program point

      *)
    2. | ExceptionRaised of 'abductive_domain_t
      (*

      state after an exception has been thrown

      *)
    3. | ExitProgram of AbductiveDomain.Summary.t
      (*

      represents the state originating at exit/divergence.

      *)
    4. | AbortProgram of AbductiveDomain.Summary.t
      (*

      represents the state at the program point that caused an error

      *)
    5. | LatentAbortProgram of {
      1. astate : AbductiveDomain.Summary.t;
      2. latent_issue : LatentIssue.t;
      }
      (*

      this path leads to an error but we don't have conclusive enough data to report it yet

      *)
    6. | LatentInvalidAccess of {
      1. astate : AbductiveDomain.Summary.t;
      2. address : DecompilerExpr.t;
      3. must_be_valid : Pulselib.PulseBasicInterface.Trace.t +PulseExecutionDomain (infer.Pulselib.PulseExecutionDomain)

        Module Pulselib.PulseExecutionDomain

        module F = Stdlib.Format
        module AbductiveDomain = PulseAbductiveDomain
        module DecompilerExpr = PulseDecompilerExpr
        module LatentIssue = PulseLatentIssue
        type 'abductive_domain_t base_t =
        1. | ContinueProgram of 'abductive_domain_t
          (*

          represents the state at the program point

          *)
        2. | ExceptionRaised of 'abductive_domain_t
          (*

          state after an exception has been thrown

          *)
        3. | ExitProgram of AbductiveDomain.Summary.t
          (*

          represents the state originating at exit/divergence.

          *)
        4. | AbortProgram of AbductiveDomain.Summary.t
          (*

          represents the state at the program point that caused an error

          *)
        5. | LatentAbortProgram of {
          1. astate : AbductiveDomain.Summary.t;
          2. latent_issue : LatentIssue.t;
          }
          (*

          this path leads to an error but we don't have conclusive enough data to report it yet

          *)
        6. | LatentInvalidAccess of {
          1. astate : AbductiveDomain.Summary.t;
          2. address : DecompilerExpr.t;
          3. must_be_valid : Pulselib.PulseBasicInterface.Trace.t * Pulselib.PulseBasicInterface.Invalidation.must_be_valid_reason option;
          4. calling_context : (Pulselib.PulseBasicInterface.CallEvent.t * IBase.Location.t) - list;
          }
          (*

          if address is ever observed to be invalid then there is an invalid access because it must_be_valid

          *)
        include Absint.AbstractDomain.Disjunct with type t := t
        include Absint.AbstractDomain.Comparable with type t := t
        include IStdlib.PrettyPrintable.PrintableType with type t := t
        val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
        val leq : lhs:t -> rhs:t -> bool

        the implication relation: lhs <= rhs means lhs |- rhs

        val equal_fast : t -> t -> bool

        equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

        val is_normal : t -> bool

        test if the abstract state represents exactly concrete states

        val is_exceptional : t -> bool

        test if the abstract state represents exactly exceptional concrete states

        val is_executable : t -> bool

        test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

        val exceptional_to_normal : t -> t

        convert all exceptional states into normal states (used when reaching a handler)

        val continue : AbductiveDomain.t -> t
        val compare_summary : summary -> summary -> int
        val equal_summary : summary -> summary -> bool
        val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
        val pp_summary : F.formatter -> summary -> unit
        val to_name : 'a base_t -> string
        \ No newline at end of file + list
        ;
      }
      (*

      if address is ever observed to be invalid then there is an invalid access because it must_be_valid

      *)
    7. | LatentSpecializedTypeIssue of {
      1. astate : AbductiveDomain.Summary.t;
      2. specialized_type : IR.Typ.Name.t;
      3. trace : Pulselib.PulseBasicInterface.Trace.t;
      }
      (*

      this path leads to an error but we need to know where type specialization happened to report it

      *)
    include Absint.AbstractDomain.Disjunct with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    val pp_with_kind : + IStdlib.Pp.print_kind -> + PulsePathContext.t option -> + F.formatter -> + t -> + unit
    val pp : F.formatter -> t -> unit
    val continue : AbductiveDomain.t -> t
    val compare_summary : summary -> summary -> int
    val equal_summary : summary -> summary -> bool
    val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp_summary : F.formatter -> summary -> unit
    val to_name : 'a base_t -> string
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseFormula/Var/index.html b/website/static/odoc/next/infer/Pulselib/PulseFormula/Var/index.html index 38723654d45..f0b0de34255 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseFormula/Var/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseFormula/Var/index.html @@ -1,2 +1,2 @@ -Var (infer.Pulselib.PulseFormula.Var)

    Module PulseFormula.Var

    module F = Stdlib.Format

    An abstract value (or "symbolic variable"), eg an address in memory.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val mk_fresh : unit -> t

    create an abstract value guaranteed not to appear in the current state

    val mk_fresh_restricted : unit -> t

    a special class of variables that represent non-negative ("restricted") values; variables returned by mk_fresh are called "unrestricted" by opposition

    val mk_fresh_same_kind : t -> t

    creates a fresh restricted or unrestricted abstract value based on the kind of abstract value given

    val is_restricted : t -> bool

    was the variable created with mk_fresh_restricted, i.e. it represents non-negative values (hence its domain is restricted)

    val is_unrestricted : t -> bool

    was the variable created with mk_fresh, i.e. it represents any value, positive, negative, or zero (hence its domain is unrestricted)

    val pp : F.formatter -> t -> unit
    val compare_unrestricted_first : t -> t -> int

    an alternative comparison function that sorts unrestricted variables before restricted variables

    \ No newline at end of file +Var (infer.Pulselib.PulseFormula.Var)

    Module PulseFormula.Var

    module F = Stdlib.Format

    An abstract value (or "symbolic variable"), eg an address in memory.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val mk_fresh : unit -> t

    create an abstract value guaranteed not to appear in the current state

    val mk_fresh_restricted : unit -> t

    a special class of variables that represent non-negative ("restricted") values; variables returned by mk_fresh are called "unrestricted" by opposition

    val mk_fresh_same_kind : t -> t

    creates a fresh restricted or unrestricted abstract value based on the kind of abstract value given

    val is_restricted : t -> bool

    was the variable created with mk_fresh_restricted, i.e. it represents non-negative values (hence its domain is restricted)

    val is_unrestricted : t -> bool

    was the variable created with mk_fresh, i.e. it represents any value, positive, negative, or zero (hence its domain is unrestricted)

    val pp : F.formatter -> t -> unit
    val compare_unrestricted_first : t -> t -> int

    an alternative comparison function that sorts unrestricted variables before restricted variables

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseFormula/index.html b/website/static/odoc/next/infer/Pulselib/PulseFormula/index.html index abc447adf17..7503a73071c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseFormula/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseFormula/index.html @@ -1,5 +1,5 @@ -PulseFormula (infer.Pulselib.PulseFormula)

    Module Pulselib.PulseFormula

    module F = Stdlib.Format
    module SatUnsat = PulseSatUnsat
    module ValueHistory = PulseValueHistory
    module Var : +PulseFormula (infer.Pulselib.PulseFormula)

    Module Pulselib.PulseFormula

    module F = Stdlib.Format
    module SatUnsat = PulseSatUnsat
    module ValueHistory = PulseValueHistory
    module Var : module type of PulseAbstractValue with type t = PulseAbstractValue.t and module Set = PulseAbstractValue.Set @@ -7,16 +7,18 @@ Var.t -> Var.t -> IR.Typ.t -> + nullable:bool -> t -> - (t * new_eqs) SatUnsat.t
    type dynamic_type_data = {
    1. typ : IR.Typ.t;
    2. source_file : IBase.SourceFile.t option;
    }
    val get_dynamic_type : Var.t -> t -> dynamic_type_data option
    val and_dynamic_type_is : + (t * new_eqs) SatUnsat.t
    type dynamic_type_data = {
    1. typ : IR.Typ.t;
    2. source_file : IBase.SourceFile.t option;
    }
    val get_dynamic_type : Var.t -> t -> dynamic_type_data option
    val and_dynamic_type : Var.t -> IR.Typ.t -> - ?source_file:IBase.SourceFile.t -> + ?source_file:IBase.SourceFile.t -> t -> (t * new_eqs) SatUnsat.t
    val add_dynamic_type_unsafe : Var.t -> IR.Typ.t -> - ?source_file:IBase.SourceFile.t -> + ?source_file:IBase.SourceFile.t -> + IBase.Location.t -> t -> t
    val copy_type_constraints : Var.t -> Var.t -> t -> t
    val and_less_equal : operand -> operand -> t -> (t * new_eqs) SatUnsat.t
    val and_less_than : operand -> operand -> t -> (t * new_eqs) SatUnsat.t
    val and_equal_unop : Var.t -> @@ -35,17 +37,25 @@ operand -> t -> (t * new_eqs) SatUnsat.t
    val and_is_int : Var.t -> t -> (t * new_eqs) SatUnsat.t
    val prune_binop : - negated:bool -> + negated:bool -> IR.Binop.t -> operand -> operand -> t -> - (t * new_eqs) SatUnsat.t

    Operations

    val normalize : t -> (t * new_eqs) SatUnsat.t

    think a bit harder about the formula

    val simplify : - precondition_vocabulary:Var.Set.t -> - keep:Var.Set.t -> + (t * new_eqs) SatUnsat.t

    Operations

    val normalize : ?location:IBase.Location.t -> t -> (t * new_eqs) SatUnsat.t

    think a bit harder about the formula

    val simplify : + precondition_vocabulary:Var.Set.t -> + keep:Var.Set.t -> t -> - (t * Var.Set.t * new_eqs) SatUnsat.t
    val is_known_zero : t -> Var.t -> bool
    val as_constant_q : t -> Var.t -> Q.t option
    val as_constant_string : t -> Var.t -> string option
    val is_known_non_pointer : t -> Var.t -> bool
    val is_manifest : is_allocated:(Var.t -> bool) -> t -> bool

    Some types or errors detected by Pulse require that the state be *manifest*, which corresponds to the fact that the error can happen in *any reasonable* calling context (see below). If not, the error is flagged as *latent* and not reported until it becomes manifest.

    A state is *manifest* when its path condition (here meaning the conjunction of conditions encountered in if statements, loop conditions, etc., i.e. anything in a IR.Sil.instr.Prune node) is either a) empty or b) comprised only of facts of the form p>0 or p≠0 where p is known to be allocated. The latter condition captures the idea that addresses being valid pointers in memory should not deter us from reporting any error that we find on that program path as it is somewhat the happy/expected case (also, the fact p is allocated already implies p≠0). The unhappy/unexpected case here would be to report errors that require a pointer to be invalid or null in the precondition; we do not want to report such errors until we see that there exists a calling context in which the pointer is indeed invalid or null! But, to reiterate, we do want to report errors that only have valid pointers in their precondition. Similarly, ignore conditions of the form x≠y where x and y are already different according to the heap (because they are separate memory allocations).

    Some equalities might be represented implicitly in the precondition, see the documentation of PulseArithmetic.is_manifest.

    val get_var_repr : t -> Var.t -> Var.t

    get the canonical representative for the variable according to the equality relation

    val and_callee_formula : + (t * Var.Set.t * new_eqs) SatUnsat.t
    val is_known_zero : t -> Var.t -> bool
    val as_constant_q : t -> Var.t -> Q.t option
    val as_constant_string : t -> Var.t -> string option
    val is_known_non_pointer : t -> Var.t -> bool
    val is_manifest : is_allocated:(Var.t -> bool) -> t -> bool

    Some types or errors detected by Pulse require that the state be *manifest*, which corresponds to the fact that the error can happen in *any reasonable* calling context (see below). If not, the error is flagged as *latent* and not reported until it becomes manifest.

    A state is *manifest* when its path condition (here meaning the conjunction of conditions encountered in if statements, loop conditions, etc., i.e. anything in a IR.Sil.instr.Prune node) is either a) empty or b) comprised only of facts of the form p>0 or p≠0 where p is known to be allocated. The latter condition captures the idea that addresses being valid pointers in memory should not deter us from reporting any error that we find on that program path as it is somewhat the happy/expected case (also, the fact p is allocated already implies p≠0). The unhappy/unexpected case here would be to report errors that require a pointer to be invalid or null in the precondition; we do not want to report such errors until we see that there exists a calling context in which the pointer is indeed invalid or null! But, to reiterate, we do want to report errors that only have valid pointers in their precondition. Similarly, ignore conditions of the form x≠y where x and y are already different according to the heap (because they are separate memory allocations).

    Some equalities might be represented implicitly in the precondition, see the documentation of PulseArithmetic.is_manifest.

    val get_var_repr : t -> Var.t -> Var.t

    get the canonical representative for the variable according to the equality relation

    val and_callee_formula : (Var.t * ValueHistory.t) Var.Map.t -> t -> - callee:t -> - ((Var.t * ValueHistory.t) Var.Map.t * t * new_eqs) SatUnsat.t
    val fold_variables : (t, Var.t, 'acc) IStdlib.IStd.Container.fold

    note: each variable mentioned in the formula is visited at least once, possibly more

    val absval_of_int : t -> IR.IntLit.t -> t * Var.t

    Get or create an abstract value (Var.t is AbstractValue.t) associated with a constant IR.IntLit.t. The idea is that clients will record in the abstract state that the returned t is equal to the given integer. If the same integer is queried later on then this module will return the same abstract variable.

    val absval_of_string : t -> string -> t * Var.t
    \ No newline at end of file + callee:t -> + ((Var.t * ValueHistory.t) Var.Map.t * t * new_eqs) SatUnsat.t
    val fold_variables : (t, Var.t, 'acc) IStdlib.IStd.Container.fold

    note: each variable mentioned in the formula is visited at least once, possibly more

    val absval_of_int : t -> IR.IntLit.t -> t * Var.t

    Get or create an abstract value (Var.t is AbstractValue.t) associated with a constant IR.IntLit.t. The idea is that clients will record in the abstract state that the returned t is equal to the given integer. If the same integer is queried later on then this module will return the same abstract variable.

    val absval_of_string : t -> string -> t * Var.t
    type term
    val explain_as_term : t -> Var.t -> term option
    val pp_term : (F.formatter -> Var.t -> unit) -> F.formatter -> term -> unit
    val pp_conditions_explained : + (F.formatter -> Var.t -> unit) -> + F.formatter -> + t -> + unit
    val pp_formula_explained : + (F.formatter -> Var.t -> unit) -> + F.formatter -> + t -> + unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseInterproc/index.html b/website/static/odoc/next/infer/Pulselib/PulseInterproc/index.html index 98bf2f16bd5..8e37d6b8b86 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseInterproc/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseInterproc/index.html @@ -1,5 +1,5 @@ -PulseInterproc (infer.Pulselib.PulseInterproc)

    Module Pulselib.PulseInterproc

    type call_state
    type contradiction = private
    1. | Aliasing of {
      1. addr_caller : Pulselib.PulseBasicInterface.AbstractValue.t;
      2. addr_callee : Pulselib.PulseBasicInterface.AbstractValue.t;
      3. addr_callee' : Pulselib.PulseBasicInterface.AbstractValue.t;
      4. call_state : call_state;
      }
      (*

      raised when the precondition and the current state disagree on the aliasing, i.e. some addresses callee_addr and callee_addr' that are distinct in the pre are aliased to a single address caller_addr in the caller's current state. Typically raised when calling foo(z,z) where the spec for foo(x,y) says that x and y are disjoint. We only raise this information if we have found this alias through a heap path that is not supported by our current abstraction (like array accesses).

      *)
    2. | AliasingWithAllAliases of IR.Specialization.HeapPath.t list list
      (*

      similar to Aliasing case above but we have collected in a list of alias classes all alias information before raising and all of them rely on heap paths that we support.

      *)
    3. | DynamicTypeNeeded of Pulselib.PulseBasicInterface.AbstractValue.t +PulseInterproc (infer.Pulselib.PulseInterproc)

      Module Pulselib.PulseInterproc

      type call_state
      type contradiction = private
      1. | Aliasing of {
        1. addr_caller : Pulselib.PulseBasicInterface.AbstractValue.t;
        2. addr_callee : Pulselib.PulseBasicInterface.AbstractValue.t;
        3. addr_callee' : Pulselib.PulseBasicInterface.AbstractValue.t;
        4. call_state : call_state;
        }
        (*

        raised when the precondition and the current state disagree on the aliasing, i.e. some addresses callee_addr and callee_addr' that are distinct in the pre are aliased to a single address caller_addr in the caller's current state. Typically raised when calling foo(z,z) where the spec for foo(x,y) says that x and y are disjoint. We only raise this information if we have found this alias through a heap path that is not supported by our current abstraction (like array accesses).

        *)
      2. | AliasingWithAllAliases of IR.Specialization.HeapPath.t list list
        (*

        similar to Aliasing case above but we have collected in a list of alias classes all alias information before raising and all of them rely on heap paths that we support.

        *)
      3. | DynamicTypeNeeded of Pulselib.PulseBasicInterface.AbstractValue.t IR.Specialization.HeapPath.Map.t
        (*

        A map path -> value such that each path leads to a value (in the caller space) that requires dynamic type specialization

        *)
      4. | CapturedFormalActualLength of {
        1. captured_formals : (IR.Pvar.t * IR.Typ.t) list;
        2. captured_actuals : ((Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) * IR.Typ.t) @@ -13,18 +13,19 @@ contradiction option -> contradiction option -> contradiction option

      applying a summary in the caller context may lead to a contradiction; if the summary is a non-trivial list of disjuncts, we will merge all possible contradictions, in each disjunct, into a single one, using this merge_contradictions function.

      result of applying one pre/post pair of a callee's summary:

      • PulseSatUnsat.t.Unsat if that path in the callee is infeasible
      • otherwise, there can be an error detected
      • otherwise, the result is a new abstract state, an optional return value, and a substitution callee_abstract_value -> caller_abstract_value mapping callee's abstract values to what they became in the new (caller) state
      \ No newline at end of file + * contradiction option

    result of applying one pre/post pair of a callee's summary:

    • PulseSatUnsat.t.Unsat if that path in the callee is infeasible
    • otherwise, there can be an error detected
    • otherwise, the result is a new abstract state, an optional return value, and a substitution callee_abstract_value -> caller_abstract_value mapping callee's abstract values to what they became in the new (caller) state
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseInvalidation/index.html b/website/static/odoc/next/infer/Pulselib/PulseInvalidation/index.html index 4b1b4ac87d5..98a2602515b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseInvalidation/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseInvalidation/index.html @@ -1,5 +1,5 @@ -PulseInvalidation (infer.Pulselib.PulseInvalidation)

    Module Pulselib.PulseInvalidation

    module F = Stdlib.Format
    type std_vector_function =
    1. | Assign
    2. | Clear
    3. | Emplace
    4. | EmplaceBack
    5. | Insert
    6. | PushBack
    7. | Reserve
    8. | ShrinkToFit
    val pp_std_vector_function : F.formatter -> std_vector_function -> unit
    type map_type =
    1. | FollyF14Value
    2. | FollyF14Vector
    3. | FollyF14Fast
    type map_function =
    1. | Clear
    2. | Rehash
    3. | Reserve
    4. | OperatorEqual
    5. | Insert
    6. | InsertOrAssign
    7. | Emplace
    8. | TryEmplace
    9. | TryEmplaceToken
    10. | EmplaceHint
    11. | OperatorBracket
    val pp_map_type : F.formatter -> map_type -> unit
    val pp_map_function : F.formatter -> map_function -> unit
    type t =
    1. | CFree
    2. | ConstantDereference of IR.IntLit.t
    3. | CppDelete
    4. | CppDeleteArray
    5. | EndIterator
    6. | GoneOutOfScope of IR.Pvar.t * IR.Typ.t
    7. | OptionalEmpty
    8. | StdVector of std_vector_function
    9. | CppMap of map_type * map_function
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit
    val suggest : t -> string option
    type must_be_valid_reason =
    1. | BlockCall
    2. | InsertionIntoCollectionKey
    3. | InsertionIntoCollectionValue
    4. | SelfOfNonPODReturnMethod of IR.Typ.t
    5. | NullArgumentWhereNonNullExpected of PulseCallEvent.t * int option
    val compare_must_be_valid_reason : +PulseInvalidation (infer.Pulselib.PulseInvalidation)

    Module Pulselib.PulseInvalidation

    module F = Stdlib.Format
    type std_vector_function =
    1. | Assign
    2. | Clear
    3. | Emplace
    4. | EmplaceBack
    5. | Insert
    6. | PushBack
    7. | Reserve
    8. | ShrinkToFit
    val pp_std_vector_function : F.formatter -> std_vector_function -> unit
    type map_type =
    1. | FollyF14Value
    2. | FollyF14Vector
    3. | FollyF14Fast
    type map_function =
    1. | Clear
    2. | Rehash
    3. | Reserve
    4. | OperatorEqual
    5. | Insert
    6. | InsertOrAssign
    7. | Emplace
    8. | TryEmplace
    9. | TryEmplaceToken
    10. | EmplaceHint
    11. | OperatorBracket
    val pp_map_type : F.formatter -> map_type -> unit
    val pp_map_function : F.formatter -> map_function -> unit
    type t =
    1. | CFree
    2. | ConstantDereference of IR.IntLit.t
    3. | CppDelete
    4. | CppDeleteArray
    5. | EndIterator
    6. | GoneOutOfScope of IR.Pvar.t * IR.Typ.t
    7. | OptionalEmpty
    8. | StdVector of std_vector_function
    9. | CppMap of map_type * map_function
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    val describe : F.formatter -> t -> unit
    val suggest : t -> string option
    type must_be_valid_reason =
    1. | BlockCall
    2. | InsertionIntoCollectionKey
    3. | InsertionIntoCollectionValue
    4. | SelfOfNonPODReturnMethod of IR.Typ.t
    5. | NullArgumentWhereNonNullExpected of PulseCallEvent.t * int option
    val compare_must_be_valid_reason : must_be_valid_reason -> must_be_valid_reason -> int
    val equal_must_be_valid_reason : @@ -9,7 +9,7 @@ F.formatter -> must_be_valid_reason option -> unit
    val issue_type_of_cause : - latent:bool -> + latent:bool -> t -> must_be_valid_reason option -> - IBase.IssueType.t
    \ No newline at end of file + IBase.IssueType.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseLatentIssue/index.html b/website/static/odoc/next/infer/Pulselib/PulseLatentIssue/index.html index 8d7dce31d7d..1df56356428 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseLatentIssue/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseLatentIssue/index.html @@ -1,5 +1,5 @@ -PulseLatentIssue (infer.Pulselib.PulseLatentIssue)

    Module Pulselib.PulseLatentIssue

    module F = Stdlib.Format
    module AbductiveDomain = PulseAbductiveDomain
    module Diagnostic = PulseDiagnostic

    A subset of PulseDiagnostic that can be "latent", i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.

    type t =
    1. | AccessToInvalidAddress of Diagnostic.access_to_invalid_address
    2. | ErlangError of Diagnostic.ErlangError.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val to_diagnostic : t -> Diagnostic.t
    val should_report : +PulseLatentIssue (infer.Pulselib.PulseLatentIssue)

    Module Pulselib.PulseLatentIssue

    module F = Stdlib.Format
    module AbductiveDomain = PulseAbductiveDomain
    module Diagnostic = PulseDiagnostic

    A subset of PulseDiagnostic that can be "latent", i.e. there is a potential issue in the code but we want to delay reporting until we see the conditions for the bug manifest themselves in some calling context.

    type t =
    1. | AccessToInvalidAddress of Diagnostic.access_to_invalid_address
    2. | ErlangError of Diagnostic.ErlangError.t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val to_diagnostic : t -> Diagnostic.t
    val should_report : AbductiveDomain.Summary.t -> Diagnostic.t -> [> `DelayReport of t | `ReportNow ]
    val add_call : @@ -11,4 +11,4 @@ Pulselib.PulseBasicInterface.CellId.Map.t) -> AbductiveDomain.t -> t -> - t
    \ No newline at end of file + t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseLoadInstrModels/index.html b/website/static/odoc/next/infer/Pulselib/PulseLoadInstrModels/index.html index f187c89a7b9..61bfb7f1176 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseLoadInstrModels/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseLoadInstrModels/index.html @@ -1,8 +1,8 @@ -PulseLoadInstrModels (infer.Pulselib.PulseLoadInstrModels)

    Module Pulselib.PulseLoadInstrModels

    Models for "Load" instructions, for now just reading from variables with particular names

    type model_data = {
    1. path : Pulselib.PulseDomainInterface.PathContext.t;
    2. location : IBase.Location.t;
    }
    type model = +PulseLoadInstrModels (infer.Pulselib.PulseLoadInstrModels)

    Module Pulselib.PulseLoadInstrModels

    Models for "Load" instructions, for now just reading from variables with particular names

    type model_data = {
    1. path : Pulselib.PulseDomainInterface.PathContext.t;
    2. location : IBase.Location.t;
    }
    val dispatch : load:IR.Exp.t -> model option
    \ No newline at end of file + PulseOperationResult.t
    val dispatch : load:IR.Exp.t -> model option
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModels/index.html b/website/static/odoc/next/infer/Pulselib/PulseModels/index.html index 5f66b081d77..f9f809f8a8d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModels/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModels/index.html @@ -1,6 +1,6 @@ -PulseModels (infer.Pulselib.PulseModels)

    Module Pulselib.PulseModels

    val dispatch : +PulseModels (infer.Pulselib.PulseModels)

    Module Pulselib.PulseModels

    \ No newline at end of file + PulseModelsImport.model option
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsAndroid/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsAndroid/index.html index e8f53477959..dd95290410e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsAndroid/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsAndroid/index.html @@ -1,2 +1,2 @@ -PulseModelsAndroid (infer.Pulselib.PulseModelsAndroid)

    Module Pulselib.PulseModelsAndroid

    val matchers : PulseModelsImport.matcher list
    \ No newline at end of file +PulseModelsAndroid (infer.Pulselib.PulseModelsAndroid)

    Module Pulselib.PulseModelsAndroid

    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsC/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsC/index.html index 90e344bd832..78d579312b5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsC/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsC/index.html @@ -1,2 +1,2 @@ -PulseModelsC (infer.Pulselib.PulseModelsC)

    Module Pulselib.PulseModelsC

    val matchers : PulseModelsImport.matcher list
    \ No newline at end of file +PulseModelsC (infer.Pulselib.PulseModelsC)

    Module Pulselib.PulseModelsC

    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsCSharp/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsCSharp/index.html index 93adb704f11..c4ea5374e4b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsCSharp/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsCSharp/index.html @@ -1,2 +1,2 @@ -PulseModelsCSharp (infer.Pulselib.PulseModelsCSharp)

    Module Pulselib.PulseModelsCSharp

    val matchers : PulseModelsImport.matcher list
    \ No newline at end of file +PulseModelsCSharp (infer.Pulselib.PulseModelsCSharp)

    Module Pulselib.PulseModelsCSharp

    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Function/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Function/index.html index 955c5029fff..8bf5a7fecfd 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Function/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Function/index.html @@ -1,5 +1,5 @@ -Function (infer.Pulselib.PulseModelsCpp.Function)

    Module PulseModelsCpp.Function

    val operator_call : +Function (infer.Pulselib.PulseModelsCpp.Function)

    Module PulseModelsCpp.Function

    \ No newline at end of file + PulseModelsImport.model
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Vector/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Vector/index.html index 21dff06188e..60f23569d90 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Vector/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/Vector/index.html @@ -1,6 +1,6 @@ -Vector (infer.Pulselib.PulseModelsCpp.Vector)

    Module PulseModelsCpp.Vector

    val at : - desc:string -> +Vector (infer.Pulselib.PulseModelsCpp.Vector)

    Module PulseModelsCpp.Vector

    \ No newline at end of file + desc:string -> + PulseModelsImport.model_no_non_disj
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/index.html index 454e2dd781e..c8bf4fee5e2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsCpp/index.html @@ -1,2 +1,2 @@ -PulseModelsCpp (infer.Pulselib.PulseModelsCpp)

    Module Pulselib.PulseModelsCpp

    val abort_matchers : PulseModelsImport.matcher list
    val matchers : PulseModelsImport.matcher list
    module Vector : sig ... end
    module Function : sig ... end
    \ No newline at end of file +PulseModelsCpp (infer.Pulselib.PulseModelsCpp)

    Module Pulselib.PulseModelsCpp

    val abort_matchers : PulseModelsImport.matcher list
    val matchers : PulseModelsImport.matcher list
    module Vector : sig ... end
    module Function : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/Basic/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/Basic/index.html index 9dde8100037..40d9dd2742c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/Basic/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/Basic/index.html @@ -1,7 +1,7 @@ -Basic (infer.Pulselib.PulseModelsDSL.Syntax.Basic)

    Module Syntax.Basic

    val alloc_not_null : - ?desc:string -> +Basic (infer.Pulselib.PulseModelsDSL.Syntax.Basic)

    Module Syntax.Basic

    val alloc_not_null : + ?desc:string -> Pulselib.PulseBasicInterface.Attribute.allocator -> IR.Exp.t option -> - initialize:bool -> - unit model_monad
    \ No newline at end of file + initialize:bool -> + unit model_monad
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/index.html index 029e41144c7..8a40441b935 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/Syntax/index.html @@ -1,24 +1,24 @@ -Syntax (infer.Pulselib.PulseModelsDSL.Syntax)

    Module PulseModelsDSL.Syntax

    module ModeledField = PulseOperations.ModeledField

    Polymorphic Operations

    val let* : 'a model_monad -> ('a -> 'b model_monad) -> 'b model_monad
    val ret : 'a -> 'a model_monad
    val throw : unit model_monad
    val unreachable : 'a model_monad
    val list_fold : +Syntax (infer.Pulselib.PulseModelsDSL.Syntax)

    Module PulseModelsDSL.Syntax

    module ModeledField = PulseOperations.ModeledField

    Polymorphic Operations

    val let* : 'a model_monad -> ('a -> 'b model_monad) -> 'b model_monad
    val ret : 'a -> 'a model_monad
    val throw : unit model_monad
    val unreachable : 'a model_monad
    val list_fold : 'a list -> - init:'accum -> - f:('accum -> 'a -> 'accum model_monad) -> - 'accum model_monad
    val list_iter : 'a list -> f:('a -> unit model_monad) -> unit model_monad
    val list_filter_map : + init:'accum -> + f:('accum -> 'a -> 'accum model_monad) -> + 'accum model_monad
    val list_iter : 'a list -> f:('a -> unit model_monad) -> unit model_monad
    val list_filter_map : 'a list -> - f:('a -> 'b option model_monad) -> - 'b list model_monad
    val option_iter : 'a option -> f:('a -> unit model_monad) -> unit model_monad
    val absvalue_set_fold : + f:('a -> 'b option model_monad) -> + 'b list model_monad
    val option_iter : 'a option -> f:('a -> unit model_monad) -> unit model_monad
    val absvalue_set_fold : Pulselib.PulseBasicInterface.AbstractValue.Set.t -> - init:'accum -> - f: + init:'accum -> + f: ('accum -> Pulselib.PulseBasicInterface.AbstractValue.t -> 'accum model_monad) -> 'accum model_monad
    val ignore : 'a model_monad -> unit model_monad
    val assign_ret : aval -> unit model_monad

    assign the value to the return variable of the current function

    val dynamic_dispatch : - cases:(IR.Typ.name * (unit -> 'a model_monad)) list -> - ?default:(unit -> 'a model_monad) -> + cases:(IR.Typ.name * (unit -> 'a model_monad)) list -> + ?default:(unit -> 'a model_monad) -> aval -> 'a model_monad
    val dispatch_call : (IR.Ident.t * IR.Typ.t) -> @@ -30,10 +30,10 @@ unit model_monad

    Disjunctive reasoning

    val disjuncts : 'a model_monad list -> 'a model_monad
    val start_model : unit model_monad -> PulseModelsImport.model

    get a model from a disjunctive model_monad

    val lift_to_monad : PulseModelsImport.model -> unit model_monad

    beware that the model may modify the PulseModelsImport.model_data.ret field

    val lift_to_monad_and_get_result : PulseModelsImport.model -> aval model_monad

    apply the model and return its result. fails if the model did not assign the reserved model_data.ret variable.

    Operations

    PulseOperations functions you need should be copied here

    val add_dict_contain_const_keys : aval -> unit model_monad
    val add_dict_read_const_key : aval -> IR.Fieldname.t -> unit model_monad
    val remove_dict_contain_const_keys : aval -> unit model_monad
    val add_static_type : IR.Typ.name -> aval -> unit model_monad
    val deep_copy : ?depth_max:int -> aval -> aval model_monad
    val eval_binop : IR.Binop.t -> aval -> aval -> aval model_monad
    val eval_binop_int : IR.Binop.t -> aval -> IR.IntLit.t -> aval model_monad
    val eval_read : IR.Exp.t -> aval model_monad
    val eval_const_int : int -> aval model_monad
    val eval_const_string : string -> aval model_monad
    val eval_string_concat : aval -> aval -> aval model_monad
    val eval_to_value_origin : + unit model_monad
    val add_dict_contain_const_keys : aval -> unit model_monad
    val add_dict_read_const_key : aval -> IR.Fieldname.t -> unit model_monad
    val remove_dict_contain_const_keys : aval -> unit model_monad
    val add_static_type : IR.Typ.name -> aval -> unit model_monad
    val deep_copy : ?depth_max:int -> aval -> aval model_monad
    val eval_binop : IR.Binop.t -> aval -> aval -> aval model_monad
    val eval_binop_int : IR.Binop.t -> aval -> IR.IntLit.t -> aval model_monad
    val eval_read : IR.Exp.t -> aval model_monad
    val eval_const_int : int -> aval model_monad
    val eval_const_string : string -> aval model_monad
    val eval_string_concat : aval -> aval -> aval model_monad
    val and_dynamic_type_is : aval -> IR.Typ.t -> unit model_monad
    val get_dynamic_type : - ask_specialization:bool -> + aval model_monad
    val get_dynamic_type : + ask_specialization:bool -> aval -> - Pulselib.PulseBasicInterface.Formula.dynamic_type_data option model_monad
    val new_ : IR.Exp.t -> aval model_monad
    val constructor : IR.Typ.Name.t -> (string * aval) list -> aval model_monad

    constructor_dsl typ_name fields builds a fresh object of type typ_name and initializes its fields using list fields

    val get_const_string : aval -> string option model_monad
    val mk_fresh : model_desc:string -> ?more:string -> unit -> aval model_monad
    val write_field : ref:aval -> obj:aval -> IR.Fieldname.t -> unit model_monad
    val write_deref_field : - ref:aval -> - obj:aval -> + Pulselib.PulseBasicInterface.Formula.dynamic_type_data option model_monad
    val new_ : IR.Exp.t -> aval model_monad
    val constructor : IR.Typ.Name.t -> (string * aval) list -> aval model_monad

    constructor_dsl typ_name fields builds a fresh object of type typ_name and initializes its fields using list fields

    val get_const_string : aval -> string option model_monad
    val mk_fresh : model_desc:string -> ?more:string -> unit -> aval model_monad
    val write_field : ref:aval -> obj:aval -> IR.Fieldname.t -> unit model_monad
    val write_deref_field : + ref:aval -> + obj:aval -> IR.Fieldname.t -> unit model_monad
    val get_known_fields : aval -> @@ -59,7 +59,7 @@ IR.Struct.field_info option model_monad
    val tenv_resolve_fieldname : IR.Typ.name -> string -> - IR.Fieldname.t option model_monad
    val write_deref : ref:aval -> obj:aval -> unit model_monad

    Invalidation operations

    val invalidate_access : + IR.Fieldname.t option model_monad
    val write_deref : ref:aval -> obj:aval -> unit model_monad

    Invalidation operations

    val exec_operation : (astate -> 'a * astate) -> 'a model_monad
    val exec_partial_operation : (astate -> (astate * 'a) PulseOperationResult.t) -> - 'a model_monad
    val exec_pure_operation : (astate -> 'a) -> 'a model_monad
    module Basic : sig ... end
    \ No newline at end of file + 'a model_monad
    val exec_pure_operation : (astate -> 'a) -> 'a model_monad
    module Basic : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/index.html index 80154245f56..c4f99efb6d2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsDSL/index.html @@ -1,8 +1,8 @@ -PulseModelsDSL (infer.Pulselib.PulseModelsDSL)

    Module Pulselib.PulseModelsDSL

    type 'a model_monad
    type aval = +PulseModelsDSL (infer.Pulselib.PulseModelsDSL)

    Module Pulselib.PulseModelsDSL

    type 'a model_monad
    module Syntax : sig ... end
    val unsafe_to_astate_transformer : 'a model_monad -> PulseModelsImport.model_data -> astate -> - ('a * astate) PulseBasicInterface.sat_unsat_t

    warning: the transformation will fail if the result of the computation is not a single abstract state with no error and it ignores the non-disjunctive state. You should think twice before using it...

    \ No newline at end of file + ('a * astate) PulseBasicInterface.sat_unsat_t

    warning: the transformation will fail if the result of the computation is not a single abstract state with no error and it ignores the non-disjunctive state. You should think twice before using it...

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/Custom/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/Custom/index.html index 9ddc2589136..cc1d92799d2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/Custom/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/Custom/index.html @@ -1,2 +1,2 @@ -Custom (infer.Pulselib.PulseModelsErlang.Custom)

    Module PulseModelsErlang.Custom

    type erlang_value = known_erlang_value option
    and known_erlang_value =
    1. | Atom of string option
    2. | IntLit of string option
    3. | List of erlang_value list
    4. | Tuple of erlang_value list
    5. | GenServer of {
      1. module_name : string option;
      }
    val exists_db_model : IR.Procname.t -> bool
    \ No newline at end of file +Custom (infer.Pulselib.PulseModelsErlang.Custom)

    Module PulseModelsErlang.Custom

    type erlang_value = known_erlang_value option
    and known_erlang_value =
    1. | Atom of string option
    2. | IntLit of string option
    3. | List of erlang_value list
    4. | Tuple of erlang_value list
    5. | GenServer of {
      1. module_name : string option;
      }
    val exists_db_model : IR.Procname.t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/index.html index 9c8038cef2f..d2dd6b99da0 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsErlang/index.html @@ -1,8 +1,8 @@ -PulseModelsErlang (infer.Pulselib.PulseModelsErlang)

    Module Pulselib.PulseModelsErlang

    val matchers : PulseModelsImport.matcher list
    val get_model_from_db : +PulseModelsErlang (infer.Pulselib.PulseModelsErlang)

    Module Pulselib.PulseModelsErlang

    val matchers : PulseModelsImport.matcher list
    val get_module_attribute : IR.Tenv.t -> tag:string -> string option
    val get_erlang_type_or_any : + PulseModelsImport.model_no_non_disj option
    val get_module_attribute : IR.Tenv.t -> tag:string -> string option
    include sig ... end
    module Custom : sig ... end
    \ No newline at end of file + IR.ErlangTypeName.t
    include sig ... end
    module Custom : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/Iterator/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/Iterator/index.html index ed91cadf469..0d2696056be 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/Iterator/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/Iterator/index.html @@ -1,5 +1,5 @@ -Iterator (infer.Pulselib.PulseModelsGenericArrayBackedCollection.Iterator)

    Module PulseModelsGenericArrayBackedCollection.Iterator

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/index.html index 937b35b5b36..dccf9b22b2c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsGenericArrayBackedCollection/index.html @@ -1,5 +1,5 @@ -PulseModelsGenericArrayBackedCollection (infer.Pulselib.PulseModelsGenericArrayBackedCollection)

    Module Pulselib.PulseModelsGenericArrayBackedCollection

    val matchers : PulseModelsImport.matcher list
    val eval : +PulseModelsGenericArrayBackedCollection (infer.Pulselib.PulseModelsGenericArrayBackedCollection)

    Module Pulselib.PulseModelsGenericArrayBackedCollection

    val matchers : PulseModelsImport.matcher list
    val access : _ Absint.MemoryAccess.t
    val field : IR.Fieldname.t
    val size_field : IR.Fieldname.t
    val field : IR.Fieldname.t
    val size_field : IR.Fieldname.t
    module Iterator : sig ... end
    \ No newline at end of file + Pulselib.PulseDomainInterface.AbductiveDomain.t PulseOperationResult.t
    module Iterator : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsHack/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsHack/index.html index 8f908c47dbd..d7ed69ab953 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsHack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsHack/index.html @@ -1,6 +1,6 @@ -PulseModelsHack (infer.Pulselib.PulseModelsHack)

    Module Pulselib.PulseModelsHack

    val matchers : PulseModelsImport.matcher list
    val get_static_companion : - model_desc:string -> +PulseModelsHack (infer.Pulselib.PulseModelsHack)

    Module Pulselib.PulseModelsHack

    \ No newline at end of file + PulseBasicInterface.sat_unsat_t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Basic/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Basic/index.html index cf80ae6a11a..57583fb7e3f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Basic/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Basic/index.html @@ -1,5 +1,5 @@ -Basic (infer.Pulselib.PulseModelsImport.Basic)

    Module PulseModelsImport.Basic

    val ok_continue : +Basic (infer.Pulselib.PulseModelsImport.Basic)

    Module PulseModelsImport.Basic

    val early_exit : model_no_non_disj
    val return_int : desc:string -> int64 -> model_no_non_disj
    val nondet : desc:string -> model_no_non_disj
    val id_first_arg : - desc:string -> + PulseOperationResult.t
    val early_exit : model_no_non_disj
    val return_int : desc:string -> int64 -> model_no_non_disj
    val nondet : desc:string -> model_no_non_disj
    val alloc_not_null : - ?desc:string -> + ?desc:string -> Pulselib.PulseBasicInterface.Attribute.allocator -> IR.Exp.t option -> - initialize:bool -> + initialize:bool -> model_data -> Pulselib.PulseDomainInterface.AbductiveDomain.t -> Pulselib.PulseDomainInterface.AbductiveDomain.t PulseOperationResult.t
    val alloc_no_leak_not_null : - ?desc:string -> + ?desc:string -> IR.Exp.t option -> - initialize:bool -> + initialize:bool -> model_data -> Pulselib.PulseDomainInterface.AbductiveDomain.t -> Pulselib.PulseDomainInterface.AbductiveDomain.t PulseOperationResult.t
    val matchers : matcher list
    \ No newline at end of file + model_no_non_disj
    val matchers : matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Hist/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Hist/index.html index 3194b7fa14f..ff022224571 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Hist/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/Hist/index.html @@ -1,14 +1,14 @@ -Hist (infer.Pulselib.PulseModelsImport.Hist)

    Module PulseModelsImport.Hist

    val alloc_event : +Hist (infer.Pulselib.PulseModelsImport.Hist)

    Module PulseModelsImport.Hist

    val alloc_event : Pulselib.PulseDomainInterface.PathContext.t -> IBase.Location.t -> - ?more:string -> + ?more:string -> string -> Pulselib.PulseBasicInterface.ValueHistory.event
    val single_alloc : Pulselib.PulseDomainInterface.PathContext.t -> IBase.Location.t -> - ?more:string -> + ?more:string -> string -> Pulselib.PulseBasicInterface.ValueHistory.t
    \ No newline at end of file + Pulselib.PulseBasicInterface.ValueHistory.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/index.html index aaec3214406..e4faf252aab 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsImport/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsImport/index.html @@ -1,5 +1,5 @@ -PulseModelsImport (infer.Pulselib.PulseModelsImport)

    Module Pulselib.PulseModelsImport

    type model_data = {
    1. analysis_data : PulseSummary.t Absint.InterproceduralAnalysis.t;
    2. dispatch_call_eval_args : PulseSummary.t Absint.InterproceduralAnalysis.t -> +PulseModelsImport (infer.Pulselib.PulseModelsImport)

      Module Pulselib.PulseModelsImport

      \ No newline at end of file + ('a, model, 'b) Absint.ProcnameDispatcher.Call.matcher
    module Hist : sig ... end
    module Basic : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsJava/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsJava/index.html index 8c343654f42..8b8986e04dd 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsJava/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsJava/index.html @@ -1,5 +1,5 @@ -PulseModelsJava (infer.Pulselib.PulseModelsJava)

    Module Pulselib.PulseModelsJava

    val load_field : +PulseModelsJava (infer.Pulselib.PulseModelsJava)

    Module Pulselib.PulseModelsJava

    \ No newline at end of file + Pulselib.PulseDomainInterface.AccessResult.t
    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsLocks/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsLocks/index.html index c42a567f029..7afbb955887 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsLocks/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsLocks/index.html @@ -1,2 +1,2 @@ -PulseModelsLocks (infer.Pulselib.PulseModelsLocks)

    Module Pulselib.PulseModelsLocks

    val matchers : PulseModelsImport.matcher list
    \ No newline at end of file +PulseModelsLocks (infer.Pulselib.PulseModelsLocks)

    Module Pulselib.PulseModelsLocks

    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsObjC/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsObjC/index.html index 572509b9057..78bc5230263 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsObjC/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsObjC/index.html @@ -1,26 +1,26 @@ -PulseModelsObjC (infer.Pulselib.PulseModelsObjC)

    Module Pulselib.PulseModelsObjC

    val matchers : PulseModelsImport.matcher list
    val transfer_ownership_matchers : PulseModelsImport.matcher list
    val object_at : +PulseModelsObjC (infer.Pulselib.PulseModelsObjC)

    Module Pulselib.PulseModelsObjC

    \ No newline at end of file + desc:string -> + PulseModelsImport.model_no_non_disj
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsOptional/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsOptional/index.html index b1ea741aa83..4f24a07d079 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsOptional/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsOptional/index.html @@ -1,2 +1,2 @@ -PulseModelsOptional (infer.Pulselib.PulseModelsOptional)

    Module Pulselib.PulseModelsOptional

    val matchers : PulseModelsImport.matcher list
    \ No newline at end of file +PulseModelsOptional (infer.Pulselib.PulseModelsOptional)

    Module Pulselib.PulseModelsOptional

    val matchers : PulseModelsImport.matcher list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/SharedPtr/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/SharedPtr/index.html index 0a0ae51cb7b..b5ed18c1b93 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/SharedPtr/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/SharedPtr/index.html @@ -1,10 +1,10 @@ -SharedPtr (infer.Pulselib.PulseModelsSmartPointers.SharedPtr)

    Module PulseModelsSmartPointers.SharedPtr

    val assign_count : +SharedPtr (infer.Pulselib.PulseModelsSmartPointers.SharedPtr)

    Module PulseModelsSmartPointers.SharedPtr

    \ No newline at end of file + Pulselib.PulseDomainInterface.AbductiveDomain.t PulseOperationResult.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/index.html b/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/index.html index 2b48f310ee4..1c965d6fdee 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseModelsSmartPointers/index.html @@ -1,2 +1,2 @@ -PulseModelsSmartPointers (infer.Pulselib.PulseModelsSmartPointers)

    Module Pulselib.PulseModelsSmartPointers

    val matchers : PulseModelsImport.matcher list
    module SharedPtr : sig ... end
    \ No newline at end of file +PulseModelsSmartPointers (infer.Pulselib.PulseModelsSmartPointers)

    Module Pulselib.PulseModelsSmartPointers

    val matchers : PulseModelsImport.matcher list
    module SharedPtr : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseMutualRecursion/index.html b/website/static/odoc/next/infer/Pulselib/PulseMutualRecursion/index.html new file mode 100644 index 00000000000..fcbf72b956b --- /dev/null +++ b/website/static/odoc/next/infer/Pulselib/PulseMutualRecursion/index.html @@ -0,0 +1,2 @@ + +PulseMutualRecursion (infer.Pulselib.PulseMutualRecursion)

    Module Pulselib.PulseMutualRecursion

    module F = Stdlib.Format
    module PathContext = PulsePathContext

    the trace represents the start of a cycle but isn't a cycle yet, it's a sequence of calls that end where ondemand returned no summary due to mutual recursion; these proto-cycles get bubbled the cyclic call stack until the cycle is closed again

    a trace of length 1

    val get_inner_call : t -> IR.Procname.t

    the "initial", innermost call in the cycle

    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/Summary/index.html b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/Summary/index.html index d649b01b543..9e76994836d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/Summary/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/Summary/index.html @@ -1,4 +1,4 @@ -Summary (infer.Pulselib.PulseNonDisjunctiveDomain.Summary)

    Module PulseNonDisjunctiveDomain.Summary

    include Absint.AbstractDomain.WithBottom with type t = summary
    include Absint.AbstractDomain.S with type t = summary
    include Absint.AbstractDomain.Comparable with type t = summary
    include IStdlib.PrettyPrintable.PrintableType with type t = summary
    type t = summary
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val get_transitive_info_if_not_top : +Summary (infer.Pulselib.PulseNonDisjunctiveDomain.Summary)

    Module PulseNonDisjunctiveDomain.Summary

    include Absint.AbstractDomain.WithBottom with type t = summary
    include Absint.AbstractDomain.S with type t = summary
    include Absint.AbstractDomain.Comparable with type t = summary
    include IStdlib.PrettyPrintable.PrintableType with type t = summary
    type t = summary
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val get_transitive_info_if_not_top : t -> - Pulselib.PulseBasicInterface.TransitiveInfo.t option
    \ No newline at end of file + Pulselib.PulseBasicInterface.TransitiveInfo.t option
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/index.html index 80e009a95e0..9445586f884 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveDomain/index.html @@ -1,28 +1,28 @@ -PulseNonDisjunctiveDomain (infer.Pulselib.PulseNonDisjunctiveDomain)

    Module Pulselib.PulseNonDisjunctiveDomain

    module DecompilerExpr = PulseDecompilerExpr
    module BaseMemory = PulseBaseMemory
    type copy_spec_t =
    1. | Copied of {
      1. source_typ : IR.Typ.t option;
      2. source_opt : DecompilerExpr.source_expr option;
      3. location : IBase.Location.t;
      4. copied_location : (IR.Procname.t * IBase.Location.t) option;
      5. heap : BaseMemory.t;
      6. from : Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t;
      7. timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      }
    2. | Modified of {
      1. source_typ : IR.Typ.t option;
      2. source_opt : DecompilerExpr.source_expr option;
      3. location : IBase.Location.t;
      4. copied_location : (IR.Procname.t * IBase.Location.t) option;
      5. from : Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t;
      6. copied_timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      }
    type parameter_spec_t =
    1. | Unmodified of {
      1. typ : IR.Typ.t;
      2. location : IBase.Location.t;
      3. heap : BaseMemory.t;
      }
    2. | Modified
    include Absint.AbstractDomain.WithBottomTop
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    type summary
    val make_summary : t -> summary
    module Summary : sig ... end
    val add_var : +PulseNonDisjunctiveDomain (infer.Pulselib.PulseNonDisjunctiveDomain)

    Module Pulselib.PulseNonDisjunctiveDomain

    module BaseMemory = PulseBaseMemory
    module DecompilerExpr = PulseDecompilerExpr
    module ExecutionDomain = PulseExecutionDomain
    module PathContext = PulsePathContext
    type copy_spec_t =
    1. | Copied of {
      1. source_typ : IR.Typ.t option;
      2. source_opt : DecompilerExpr.source_expr option;
      3. location : IBase.Location.t;
      4. copied_location : (IR.Procname.t * IBase.Location.t) option;
      5. heap : BaseMemory.t;
      6. from : Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t;
      7. timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      }
    2. | Modified of {
      1. source_typ : IR.Typ.t option;
      2. source_opt : DecompilerExpr.source_expr option;
      3. location : IBase.Location.t;
      4. copied_location : (IR.Procname.t * IBase.Location.t) option;
      5. from : Pulselib.PulseBasicInterface.Attribute.CopyOrigin.t;
      6. copied_timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      }
    type parameter_spec_t =
    1. | Unmodified of {
      1. typ : IR.Typ.t;
      2. location : IBase.Location.t;
      3. heap : BaseMemory.t;
      }
    2. | Modified
    include Absint.AbstractDomain.WithBottomTop
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val top : t
    val is_top : t -> bool
    type summary
    val make_summary : t -> summary
    module Summary : sig ... end
    val remove_var : IR.Var.t -> t -> t
    val add_field : IR.Fieldname.t -> - source_addr_opt:Pulselib.PulseBasicInterface.AbstractValue.t option -> + source_addr_opt:Pulselib.PulseBasicInterface.AbstractValue.t option -> copy_spec_t -> t -> t
    val add_parameter : IR.Var.t -> parameter_spec_t -> t -> t
    val checked_via_destructor : IR.Var.t -> t -> t
    val mark_copy_as_modified : - is_modified: + is_modified: (BaseMemory.t -> Pulselib.PulseBasicInterface.Timestamp.t -> bool) -> - copied_into:Pulselib.PulseBasicInterface.Attribute.CopiedInto.t -> - source_addr_opt:Pulselib.PulseBasicInterface.AbstractValue.t option -> + copied_into:Pulselib.PulseBasicInterface.Attribute.CopiedInto.t -> + source_addr_opt:Pulselib.PulseBasicInterface.AbstractValue.t option -> t -> t
    val mark_parameter_as_modified : - is_modified: + is_modified: (BaseMemory.t -> Pulselib.PulseBasicInterface.Timestamp.t -> bool) -> - var:IR.Var.t -> + var:IR.Var.t -> t -> t
    val get_copied : - ref_formals:(IR.Pvar.t * IR.Typ.t) list -> - ptr_formals:(IR.Pvar.t * IR.Typ.t) list -> + ref_formals:(IR.Pvar.t * IR.Typ.t) list -> + ptr_formals:(IR.Pvar.t * IR.Typ.t) list -> t -> (Pulselib.PulseBasicInterface.Attribute.CopiedInto.t * IR.Typ.t option @@ -49,19 +49,19 @@ IR.Exp.t -> (IR.Exp.t * IR.Typ.t) list -> t -> - t
    val is_lifetime_extended : IR.Var.t -> t -> bool
    val remember_dropped_elements : - Pulselib.PulseBasicInterface.TransitiveInfo.t -> + t
    val is_lifetime_extended : IR.Var.t -> t -> bool
    val remember_dropped_disjuncts : + (ExecutionDomain.t * PathContext.t) list -> t -> t
    val apply_summary : - callee_pname:IR.Procname.t -> - call_loc:IBase.Location.t -> - skip_transitive_accesses:bool -> + callee_pname:IR.Procname.t -> + call_loc:IBase.Location.t -> + skip_transitive_accesses:bool -> t -> summary -> - t
    val bind : ('a list * t) -> f:('a -> t -> 'b list * t) -> 'b list * t
    bind ([astate1; astate2; ...; astateN], non_disj) f =
    +  t
    val bind : ('a list * t) -> f:('a -> t -> 'b list * t) -> 'b list * t
    bind ([astate1; astate2; ...; astateN], non_disj) f =
         (astates1 \@ astate2 \@ ... \@ astatesN, non_disj1 U non_disj2 U ... U non_disjN)
     with
       (astates1, non_disj1) = f astate1 non_disj
       (astates2, non_disj2) = f astate2 non_disj
       ...
    -  (astatesN, non_disjN) = f astateN non_disj
    \ No newline at end of file + (astatesN, non_disjN) = f astateN non_disj
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveOperations/index.html b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveOperations/index.html index ab0f641fe8d..478682e196b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveOperations/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseNonDisjunctiveOperations/index.html @@ -1,5 +1,5 @@ -PulseNonDisjunctiveOperations (infer.Pulselib.PulseNonDisjunctiveOperations)

    Module Pulselib.PulseNonDisjunctiveOperations

    val has_copy_in : string -> bool

    Check if the string includes "copy" in case-insensitive

    val init_const_refable_parameters : +PulseNonDisjunctiveOperations (infer.Pulselib.PulseNonDisjunctiveOperations)

    Module Pulselib.PulseNonDisjunctiveOperations

    val has_copy_in : string -> bool

    Check if the string includes "copy" in case-insensitive

    \ No newline at end of file + Pulselib.PulseDomainInterface.NonDisjDomain.t

    Similar to mark_modified_copies_and_parameters, but given by PulseAbductiveDomain.t instead

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseOperationResult/Import/index.html b/website/static/odoc/next/infer/Pulselib/PulseOperationResult/Import/index.html index a21ad3c5f8b..fd8b657505f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseOperationResult/Import/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseOperationResult/Import/index.html @@ -1,5 +1,5 @@ -Import (infer.Pulselib.PulseOperationResult.Import)

    Module PulseOperationResult.Import

    For opening in other modules.

    Monadic operations on the combined monad of SatUnsat and AccessResult.

    let operators produce _ t values following the naming convention letXY where X and Y depend on the types of the inputs: in letXY a = b in c, X is according to the SatUnsat.t behaviour and Y about the AccessResult.t behaviour:

    • X is * if b is a SatUnsat.t and c a SatUnsat.t too (bind)
    • X is + if b is a SatUnsat.t and c is not (map)
    • X is = if b is *not* a SatUnsat.t and c is a SatUnsat.t

    Similarly Y is * or + depending on whether the operation on the underlying AccessResult.t is a map or or bind.

    We also define inline operations >>UV with U being =, |, or > corresponding to *, +, or = above, and similarly for V.

    In practice, to figure out which let binder or operator is right for your call site, just have a look at the types! To figure out which letXY to use for letXY a = b in c, pick the one with the type type_of_b -> (type_of_a -> type_of_c) -> type_of_letXY_a_equal_b_in_c.

    include module type of PulseResult.Let_syntax
    include module type of PulseResult.Monad_infix
    include module type of PulseResult.Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) PulseResult.t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : +Import (infer.Pulselib.PulseOperationResult.Import)

    Module PulseOperationResult.Import

    For opening in other modules.

    Monadic operations on the combined monad of SatUnsat and AccessResult.

    let operators produce _ t values following the naming convention letXY where X and Y depend on the types of the inputs: in letXY a = b in c, X is according to the SatUnsat.t behaviour and Y about the AccessResult.t behaviour:

    • X is * if b is a SatUnsat.t and c a SatUnsat.t too (bind)
    • X is + if b is a SatUnsat.t and c is not (map)
    • X is = if b is *not* a SatUnsat.t and c is a SatUnsat.t

    Similarly Y is * or + depending on whether the operation on the underlying AccessResult.t is a map or or bind.

    We also define inline operations >>UV with U being =, |, or > corresponding to *, +, or = above, and similarly for V.

    In practice, to figure out which let binder or operator is right for your call site, just have a look at the types! To figure out which letXY to use for letXY a = b in c, pick the one with the type type_of_b -> (type_of_a -> type_of_c) -> type_of_letXY_a_equal_b_in_c.

    include module type of PulseResult.Let_syntax
    include module type of PulseResult.Monad_infix
    include module type of PulseResult.Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) PulseResult.t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : ('ok, 'err) PulseResult.t -> ('ok -> 'okk) -> ('okk, 'err) PulseResult.t
    \ No newline at end of file + option;
    }
  • | PotentialInvalidSpecializedCall of {
    1. astate : Pulselib.PulseDomainInterface.AbductiveDomain.t;
    2. specialized_type : IR.Typ.Name.t;
    3. trace : Pulselib.PulseBasicInterface.Trace.t;
    }
  • | ReportableError of {
    1. astate : Pulselib.PulseDomainInterface.AbductiveDomain.t;
    2. diagnostic : Pulselib.PulseDomainInterface.Diagnostic.t;
    }
  • | WithSummary of base_error + * Pulselib.PulseDomainInterface.AbductiveDomain.Summary.t
  • diff --git a/website/static/odoc/next/infer/Pulselib/PulseOperationResult/index.html b/website/static/odoc/next/infer/Pulselib/PulseOperationResult/index.html index ae8350602f6..2bef6a94a1c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseOperationResult/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseOperationResult/index.html @@ -1,7 +1,7 @@ -PulseOperationResult (infer.Pulselib.PulseOperationResult)

    Module Pulselib.PulseOperationResult

    type 'a t = +PulseOperationResult (infer.Pulselib.PulseOperationResult)

    Module Pulselib.PulseOperationResult

    val list_fold : 'a list -> init:'b -> f:('b -> 'a -> 'b t) -> 'b t
    module Import : sig ... end

    For opening in other modules.

    \ No newline at end of file + 'a option
    val list_fold : 'a list -> init:'b -> f:('b -> 'a -> 'b t) -> 'b t
    module Import : sig ... end

    For opening in other modules.

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseOperations/Closures/index.html b/website/static/odoc/next/infer/Pulselib/PulseOperations/Closures/index.html index 118cb530962..c117480ddc8 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseOperations/Closures/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseOperations/Closures/index.html @@ -1,7 +1,7 @@ -Closures (infer.Pulselib.PulseOperations.Closures)

    Module PulseOperations.Closures

    val check_captured_addresses : +Closures (infer.Pulselib.PulseOperations.Closures)

    Module PulseOperations.Closures

    assert the validity of the addresses captured by the lambda

    \ No newline at end of file + t Pulselib.PulseDomainInterface.AccessResult.t

    assert the validity of the addresses captured by the lambda

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseOperations/ModeledField/index.html b/website/static/odoc/next/infer/Pulselib/PulseOperations/ModeledField/index.html index 07d514cdd9b..67d82728b28 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseOperations/ModeledField/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseOperations/ModeledField/index.html @@ -1,2 +1,2 @@ -ModeledField (infer.Pulselib.PulseOperations.ModeledField)

    Module PulseOperations.ModeledField

    val string_length : IR.Fieldname.t

    Modeled field for string length

    val internal_string : IR.Fieldname.t

    Modeled field for internal string

    val internal_ref_count : IR.Fieldname.t

    Modeled field for reference_counting

    val delegated_release : IR.Fieldname.t

    Modeled field for resource release delegation

    \ No newline at end of file +ModeledField (infer.Pulselib.PulseOperations.ModeledField)

    Module PulseOperations.ModeledField

    val string_length : IR.Fieldname.t

    Modeled field for string length

    val internal_string : IR.Fieldname.t

    Modeled field for internal string

    val internal_ref_count : IR.Fieldname.t

    Modeled field for reference_counting

    val delegated_release : IR.Fieldname.t

    Modeled field for resource release delegation

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseOperations/index.html b/website/static/odoc/next/infer/Pulselib/PulseOperations/index.html index c25933ca2b1..5d3b5557b86 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseOperations/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseOperations/index.html @@ -1,7 +1,7 @@ -PulseOperations (infer.Pulselib.PulseOperations)

    Module Pulselib.PulseOperations

    val check_addr_access : +PulseOperations (infer.Pulselib.PulseOperations)

    Module Pulselib.PulseOperations

    Like eval but starts from an address instead of an expression, checks that it is valid, and if so dereferences it according to the access.

    val havoc_id : IR.Ident.t -> @@ -135,7 +136,7 @@ t Pulselib.PulseDomainInterface.AccessResult.t

    Havoc dereferenced field address.

    val realloc_pvar : IR.Tenv.t -> Pulselib.PulseDomainInterface.PathContext.t -> - set_uninitialized:bool -> + set_uninitialized:bool -> IR.Pvar.t -> IR.Typ.t -> IBase.Location.t -> @@ -153,43 +154,43 @@ option
    val java_resource_release : - recursive:bool -> + recursive:bool -> Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t

    releases the resource of the argument, and recursively calls itself on the delegated resource if recursive==true

    val csharp_resource_release : - recursive:bool -> + recursive:bool -> Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t

    releases the resource of the argument, and recursively calls itself on the delegated resource if recursive==true

    returns the address of a new cell with the same edges as the original

    type call_kind = [
    1. | `Closure of - (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list
    2. | `Var of IR.Ident.t
    3. | `ResolvedProcname
    ]
    val get_captured_actuals : + t Pulselib.PulseDomainInterface.AccessResult.t
    type call_kind = [
    1. | `Closure of + (IR.Exp.t * IR.Pvar.t * IR.Typ.t * IR.CapturedVar.capture_mode) list
    2. | `Var of IR.Ident.t
    3. | `ResolvedProcname
    ]

    When we find the store defer_ref = ref, where defer_ref has the cleanup attribute, we remove the allocation attribute from ref. This is because the cleanup attribute is often used to defer freeing variables, so we avoid false positives.

    \ No newline at end of file + PulseBasicInterface.sat_unsat_t

    When we find the store defer_ref = ref, where defer_ref has the cleanup attribute, we remove the allocation attribute from ref. This is because the cleanup attribute is often used to defer freeing variables, so we avoid false positives.

    diff --git a/website/static/odoc/next/infer/Pulselib/PulsePathContext/index.html b/website/static/odoc/next/infer/Pulselib/PulsePathContext/index.html index 2bf836c14a1..19997bbc07b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulsePathContext/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulsePathContext/index.html @@ -1,2 +1,2 @@ -PulsePathContext (infer.Pulselib.PulsePathContext)

    Module Pulselib.PulsePathContext

    type t = {
    1. conditions : Pulselib.PulseBasicInterface.ValueHistory.t list;
      (*

      Each history represents a conditional that is affecting the path currently, with the most recent conditional first. The idea is to add these histories to the histories of all variables and memory locations modified while under the influence of these conditionals.

      *)
    2. timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      (*

      step number in an intra-procedural analysis

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Absint.AbstractDomain.Disjunct with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    val initial : t
    val post_exec_instr : t -> t

    call this after each step of the symbolic execution to update the path information

    \ No newline at end of file +PulsePathContext (infer.Pulselib.PulsePathContext)

    Module Pulselib.PulsePathContext

    type t = {
    1. conditions : Pulselib.PulseBasicInterface.ValueHistory.t list;
      (*

      Each history represents a conditional that is affecting the path currently, with the most recent conditional first. The idea is to add these histories to the histories of all variables and memory locations modified while under the influence of these conditionals.

      *)
    2. timestamp : Pulselib.PulseBasicInterface.Timestamp.t;
      (*

      step number in an intra-procedural analysis

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Absint.AbstractDomain.Disjunct with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val equal_fast : t -> t -> bool

    equal_fast x y must imply x <=> y; it's a good idea for this function to be "fast", e.g. not depend on the size of its input

    val is_normal : t -> bool

    test if the abstract state represents exactly concrete states

    val is_exceptional : t -> bool

    test if the abstract state represents exactly exceptional concrete states

    val is_executable : t -> bool

    test if the abstract state represents executable states, e.g. ContinueProgram or ExceptionRaised.

    val exceptional_to_normal : t -> t

    convert all exceptional states into normal states (used when reaching a handler)

    val initial : t
    val post_exec_instr : t -> t

    call this after each step of the symbolic execution to update the path information

    diff --git a/website/static/odoc/next/infer/Pulselib/PulsePp/index.html b/website/static/odoc/next/infer/Pulselib/PulsePp/index.html new file mode 100644 index 00000000000..152450ace3f --- /dev/null +++ b/website/static/odoc/next/infer/Pulselib/PulsePp/index.html @@ -0,0 +1,7 @@ + +PulsePp (infer.Pulselib.PulsePp)

    Module Pulselib.PulsePp

    module F = Stdlib.Format
    val pp : + IStdlib.Pp.print_kind -> + PulsePathContext.t option -> + F.formatter -> + PulseAbductiveDomain.t -> + unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseRefCounting/index.html b/website/static/odoc/next/infer/Pulselib/PulseRefCounting/index.html index 3e1bfbe9d34..1f7b4d6ddeb 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseRefCounting/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseRefCounting/index.html @@ -1,9 +1,12 @@ -PulseRefCounting (infer.Pulselib.PulseRefCounting)

    Module Pulselib.PulseRefCounting

    val count_references : +PulseRefCounting (infer.Pulselib.PulseRefCounting)

    Module Pulselib.PulseRefCounting

    type access_type =
    1. | Strong
    2. | Weak
    3. | Unknown
    val compare_access_type : access_type -> access_type -> int
    val equal_access_type : access_type -> access_type -> bool
    val is_strong_access : IR.Tenv.t -> 'a Absint.MemoryAccess.t -> bool
    \ No newline at end of file + IR.Var.t list
    val pp_access_type : Stdlib.Format.formatter -> access_type -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseReport/index.html b/website/static/odoc/next/infer/Pulselib/PulseReport/index.html index 5fc910775aa..1c06e57497d 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseReport/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseReport/index.html @@ -1,8 +1,8 @@ -PulseReport (infer.Pulselib.PulseReport)

    Module Pulselib.PulseReport

    val report : +PulseReport (infer.Pulselib.PulseReport)

    Module Pulselib.PulseReport

    val report : IR.Tenv.t -> - is_suppressed:bool -> - latent:bool -> + is_suppressed:bool -> + latent:bool -> IR.Procdesc.t -> Absint.Errlog.t -> Pulselib.PulseDomainInterface.Diagnostic.t -> @@ -35,4 +35,4 @@ Pulselib.PulseDomainInterface.ExecutionDomain.t Pulselib.PulseDomainInterface.AccessResult.t list -> - Pulselib.PulseDomainInterface.ExecutionDomain.t list
    \ No newline at end of file + Pulselib.PulseDomainInterface.ExecutionDomain.t list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseResult/Let_syntax/index.html b/website/static/odoc/next/infer/Pulselib/PulseResult/Let_syntax/index.html index 33535c3c776..58d21e6305f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseResult/Let_syntax/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseResult/Let_syntax/index.html @@ -1,2 +1,2 @@ -Let_syntax (infer.Pulselib.PulseResult.Let_syntax)

    Module PulseResult.Let_syntax

    include module type of Monad_infix
    include module type of Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val (>>=) : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    val let+ : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val let* : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    \ No newline at end of file +Let_syntax (infer.Pulselib.PulseResult.Let_syntax)

    Module PulseResult.Let_syntax

    include module type of Monad_infix
    include module type of Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val (>>=) : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    val let+ : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val let* : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseResult/Monad_infix/index.html b/website/static/odoc/next/infer/Pulselib/PulseResult/Monad_infix/index.html index 5a5d2652bc9..e99dfcc66d8 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseResult/Monad_infix/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseResult/Monad_infix/index.html @@ -1,2 +1,2 @@ -Monad_infix (infer.Pulselib.PulseResult.Monad_infix)

    Module PulseResult.Monad_infix

    include module type of Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val (>>=) : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    \ No newline at end of file +Monad_infix (infer.Pulselib.PulseResult.Monad_infix)

    Module PulseResult.Monad_infix

    include module type of Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    val (>>|) : ('ok, 'err) t -> ('ok -> 'okk) -> ('okk, 'err) t
    val (>>=) : ('ok, 'err) t -> ('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseResult/Type/index.html b/website/static/odoc/next/infer/Pulselib/PulseResult/Type/index.html index 342e67a316d..d4cd8375fa5 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseResult/Type/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseResult/Type/index.html @@ -1,2 +1,2 @@ -Type (infer.Pulselib.PulseResult.Type)

    Module PulseResult.Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    \ No newline at end of file +Type (infer.Pulselib.PulseResult.Type)

    Module PulseResult.Type

    for opening locally

    type ('ok, 'err) pulse_result = ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseResult/index.html b/website/static/odoc/next/infer/Pulselib/PulseResult/index.html index 9dc4d5d24d8..62b578f04fa 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseResult/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseResult/index.html @@ -1,23 +1,23 @@ -PulseResult (infer.Pulselib.PulseResult)

    Module Pulselib.PulseResult

    type ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list

    Pulse's base error monad: some errors can be accumulated along paths, others are fatal and there's no point continuing the execution.

    val append_errors : 'err list -> ('ok, 'err) t -> ('ok, 'err) t

    adds the given error list to the result, possibly changing an Ok result into a Recoverable one in the process

    val ok : ('ok, _) t -> 'ok option
    val ok_exn : ('ok, _) t -> 'ok

    dies if the argument is not of the form Ok _

    val map : ('ok, 'err) t -> f:('ok -> 'okk) -> ('okk, 'err) t
    val map_error : ('ok, 'err) t -> f:('err -> 'err') -> ('ok, 'err') t
    val bind : ('ok, 'err) t -> f:('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    val join : (('ok, 'err) t, 'err) t -> ('ok, 'err) t

    Interaction with other datatypes

    val of_some : ('ok option, 'err) t -> ('ok, 'err) t option
    val recoverable_of_result : - ok_of_error:('err -> 'ok) -> +PulseResult (infer.Pulselib.PulseResult)

    Module Pulselib.PulseResult

    type ('ok, 'err) t =
    1. | Ok of 'ok
    2. | Recoverable of 'ok * 'err list
    3. | FatalError of 'err * 'err list

    Pulse's base error monad: some errors can be accumulated along paths, others are fatal and there's no point continuing the execution.

    val append_errors : 'err list -> ('ok, 'err) t -> ('ok, 'err) t

    adds the given error list to the result, possibly changing an Ok result into a Recoverable one in the process

    val ok : ('ok, _) t -> 'ok option
    val ok_exn : ('ok, _) t -> 'ok

    dies if the argument is not of the form Ok _

    val map : ('ok, 'err) t -> f:('ok -> 'okk) -> ('okk, 'err) t
    val map_error : ('ok, 'err) t -> f:('err -> 'err') -> ('ok, 'err') t
    val bind : ('ok, 'err) t -> f:('ok -> ('okk, 'err) t) -> ('okk, 'err) t
    val join : (('ok, 'err) t, 'err) t -> ('ok, 'err) t

    Interaction with other datatypes

    val of_some : ('ok option, 'err) t -> ('ok, 'err) t option
    val recoverable_of_result : + ok_of_error:('err -> 'ok) -> ('ok, 'err) IStdlib.IStd.result -> ('ok, 'err) t

    changes Result.Error to Recoverable using ok_of_error

    val fatal_of_result : ('ok, 'err) IStdlib.IStd.result -> ('ok, 'err) t

    changes Result.Error to FatalError

    val to_result : ('ok, 'err) t -> ('ok, 'err list) IStdlib.IStd.result

    Recoverable and FatalError are both sent to Error

    val list_fold : 'a list -> - init:'ok -> - f:('ok -> 'a -> ('ok, 'err) t) -> + init:'ok -> + f:('ok -> 'a -> ('ok, 'err) t) -> ('ok, 'err) t
    val list_fold2 : 'a list -> 'b list -> - init:'ok -> - f:('ok -> 'a -> 'b -> ('ok, 'err) t) -> + init:'ok -> + f:('ok -> 'a -> 'b -> ('ok, 'err) t) -> ('ok, 'err) t IStdlib.IStd.List.Or_unequal_lengths.t
    val list_foldi : - init:'acc -> - f:(int -> 'acc -> 'a -> ('acc, 'err) t) -> + init:'acc -> + f:(int -> 'acc -> 'a -> ('acc, 'err) t) -> 'a list -> ('acc, 'err) t
    val container_fold : - fold:('t, 'a, ('accum, 'err) t) IStdlib.IStd.Container.fold -> + fold:('t, 'a, ('accum, 'err) t) IStdlib.IStd.Container.fold -> 't -> - init:'accum -> - f:('accum -> 'a -> ('accum, 'err) t) -> - ('accum, 'err) t
    module Type : sig ... end

    for opening locally

    module Monad_infix : sig ... end
    module Let_syntax : sig ... end
    \ No newline at end of file + init:'accum -> + f:('accum -> 'a -> ('accum, 'err) t) -> + ('accum, 'err) t
    module Type : sig ... end

    for opening locally

    module Monad_infix : sig ... end
    module Let_syntax : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseRetainCycleChecker/index.html b/website/static/odoc/next/infer/Pulselib/PulseRetainCycleChecker/index.html index a6dc82e2725..c4a0c8c130b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseRetainCycleChecker/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseRetainCycleChecker/index.html @@ -1,6 +1,5 @@ -PulseRetainCycleChecker (infer.Pulselib.PulseRetainCycleChecker)

    Module Pulselib.PulseRetainCycleChecker

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Import/index.html b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Import/index.html index 5bb9af98cea..b11f6c9b4c2 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Import/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Import/index.html @@ -1,2 +1,2 @@ -Import (infer.Pulselib.PulseSatUnsat.Import)

    Module PulseSatUnsat.Import

    include module type of Types

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a t =
    1. | Unsat
    2. | Sat of 'a
    val (>>|) : 'a t -> ('a -> 'b) -> 'b t
    val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
    val let+ : 'a t -> ('a -> 'b) -> 'b t
    val let* : 'a t -> ('a -> 'b t) -> 'b t
    \ No newline at end of file +Import (infer.Pulselib.PulseSatUnsat.Import)

    Module PulseSatUnsat.Import

    include module type of Types

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a t =
    1. | Unsat
    2. | Sat of 'a
    val (>>|) : 'a t -> ('a -> 'b) -> 'b t
    val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
    val let+ : 'a t -> ('a -> 'b) -> 'b t
    val let* : 'a t -> ('a -> 'b t) -> 'b t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Types/index.html b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Types/index.html index 790482b24f6..7333281b254 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Types/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/Types/index.html @@ -1,2 +1,2 @@ -Types (infer.Pulselib.PulseSatUnsat.Types)

    Module PulseSatUnsat.Types

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a t =
    1. | Unsat
    2. | Sat of 'a
    \ No newline at end of file +Types (infer.Pulselib.PulseSatUnsat.Types)

    Module PulseSatUnsat.Types

    for opening to get Sat and Unsat in the namespace

    type nonrec 'a sat_unsat_t = 'a t =
    1. | Unsat
    2. | Sat of 'a
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/index.html b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/index.html index 74462f4b43e..e74570b2609 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSatUnsat/index.html @@ -1,10 +1,10 @@ -PulseSatUnsat (infer.Pulselib.PulseSatUnsat)

    Module Pulselib.PulseSatUnsat

    module F = Stdlib.Format
    type 'a t =
    1. | Unsat
    2. | Sat of 'a
    include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val pp : (F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    module Types : sig ... end

    for opening to get Sat and Unsat in the namespace

    val map : ('a -> 'b) -> 'a t -> 'b t
    val bind : ('a -> 'b t) -> 'a t -> 'b t
    val sat : 'a t -> 'a option
    val of_option : 'a option -> 'a t
    val list_fold : +PulseSatUnsat (infer.Pulselib.PulseSatUnsat)

    Module Pulselib.PulseSatUnsat

    module F = Stdlib.Format
    type 'a t =
    1. | Unsat
    2. | Sat of 'a
    include Ppx_compare_lib.Equal.S1 with type 'a t := 'a t
    val equal : 'a Base__Ppx_compare_lib.equal -> 'a t Base__Ppx_compare_lib.equal
    val pp : (F.formatter -> 'a -> unit) -> F.formatter -> 'a t -> unit
    module Types : sig ... end

    for opening to get Sat and Unsat in the namespace

    val map : ('a -> 'b) -> 'a t -> 'b t
    val bind : ('a -> 'b t) -> 'a t -> 'b t
    val sat : 'a t -> 'a option
    val of_option : 'a option -> 'a t
    val list_fold : 'a list -> - init:'accum -> - f:('accum -> 'a -> 'accum t) -> + init:'accum -> + f:('accum -> 'a -> 'accum t) -> 'accum t
    val to_list : 'a t -> 'a list
    val filter : 'a t list -> 'a list

    keep only Sat _ elements

    val seq_fold : 'a IStdlib.IStd.Caml.Seq.t -> - init:'accum -> - f:('accum -> 'a -> 'accum t) -> - 'accum t
    module Import : sig ... end
    \ No newline at end of file + init:'accum -> + f:('accum -> 'a -> 'accum t) -> + 'accum t
    module Import : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSkippedCalls/index.html b/website/static/odoc/next/infer/Pulselib/PulseSkippedCalls/index.html index a4634f124b0..e1caa606577 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSkippedCalls/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSkippedCalls/index.html @@ -1,5 +1,5 @@ -PulseSkippedCalls (infer.Pulselib.PulseSkippedCalls)

    Module Pulselib.PulseSkippedCalls

    include Absint.AbstractDomain.MapS +PulseSkippedCalls (infer.Pulselib.PulseSkippedCalls)

    Module Pulselib.PulseSkippedCalls

    include Absint.AbstractDomain.MapS with type key = IR.Procname.t and type value = PulseTrace.t
    include IStdlib.PrettyPrintable.PPMonoMap with type key = IR.Procname.t @@ -11,4 +11,4 @@ t -> t
    val union : (key -> value -> value -> value option) -> t -> t -> t
    val iter : (key -> value -> unit) -> t -> unit
    val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (key -> value -> bool) -> t -> bool
    val exists : (key -> value -> bool) -> t -> bool
    val filter : (key -> value -> bool) -> t -> t
    val filter_map : (key -> value -> value option) -> t -> t
    val partition : (key -> value -> bool) -> t -> t * t
    val cardinal : t -> int
    val bindings : t -> (key * value) list
    val min_binding : t -> key * value
    val min_binding_opt : t -> (key * value) option
    val max_binding : t -> key * value
    val max_binding_opt : t -> (key * value) option
    val choose : t -> key * value
    val choose_opt : t -> (key * value) option
    val split : key -> t -> t * value option * t
    val find : key -> t -> value
    val find_opt : key -> t -> value option
    val find_first : (key -> bool) -> t -> key * value
    val find_first_opt : (key -> bool) -> t -> (key * value) option
    val find_last : (key -> bool) -> t -> key * value
    val find_last_opt : (key -> bool) -> t -> (key * value) option
    val map : (value -> value) -> t -> t
    val mapi : (key -> value -> value) -> t -> t
    val is_singleton_or_more : t -> - (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val compare : t -> t -> int
    val equal : t -> t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    \ No newline at end of file + (key * value) IStdlib.IContainer.singleton_or_more
    val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
    val fold_mapi : t -> init:'a -> f:(key -> 'a -> value -> 'a * value) -> 'a * t
    val of_seq : (key * value) Stdlib.Seq.t -> t
    val to_seq : t -> (key * value) Stdlib.Seq.t
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val compare : t -> t -> int
    val equal : t -> t -> bool
    val yojson_of_t : t -> Yojson.Safe.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSpecialization/index.html b/website/static/odoc/next/infer/Pulselib/PulseSpecialization/index.html index fe976d122c4..bdc58f6cde8 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSpecialization/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSpecialization/index.html @@ -1,5 +1,6 @@ -PulseSpecialization (infer.Pulselib.PulseSpecialization)

    Module Pulselib.PulseSpecialization

    val apply : +PulseSpecialization (infer.Pulselib.PulseSpecialization)

    Module Pulselib.PulseSpecialization

    \ No newline at end of file + PulseAbductiveDomain.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseSummary/index.html b/website/static/odoc/next/infer/Pulselib/PulseSummary/index.html index 22fd841f303..9498ebc8518 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseSummary/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseSummary/index.html @@ -1,10 +1,11 @@ -PulseSummary (infer.Pulselib.PulseSummary)

    Module Pulselib.PulseSummary

    val yojson_of_pre_post_list : +PulseSummary (infer.Pulselib.PulseSummary)

    Module Pulselib.PulseSummary

    val yojson_of_pre_post_list : pre_post_list -> Ppx_yojson_conv_lib.Yojson.Safe.t
    type summary = {
    1. pre_post_list : pre_post_list;
    2. non_disj : Pulselib.PulseDomainInterface.NonDisjDomain.Summary.t;
    }
    val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
    type t = {
    1. main : summary;
    2. specialized : summary IR.Specialization.Pulse.Map.t;
    }
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t

    The initial state of the analysis, with the additional path condition self > 0 for Objective-C and this>0 for C++ instance methods.

    val merge : t -> t -> t

    Merge specialized summaries.

    \ No newline at end of file + Pulselib.PulseDomainInterface.ExecutionDomain.summary option
    val merge : t -> t -> t

    Merge specialized summaries.

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/Set/index.html index 00a7e9e0945..564392191dd 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseTaintConfig.Kind.Set)

    Module Kind.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Pulselib.PulseTaintConfig.Kind.Set)

    Module Kind.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/index.html index 35548bca326..d78f9063447 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Pulselib.PulseTaintConfig.Kind)

    Module PulseTaintConfig.Kind

    type t = private string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val pp : F.formatter -> t -> unit
    val is_data_flow_only : t -> bool
    \ No newline at end of file +Kind (infer.Pulselib.PulseTaintConfig.Kind)

    Module PulseTaintConfig.Kind

    type t = private string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val pp : F.formatter -> t -> unit
    val is_data_flow_only : t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/SinkPolicy/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/SinkPolicy/index.html index 61437381870..dc5f392f86a 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/SinkPolicy/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/SinkPolicy/index.html @@ -1,2 +1,2 @@ -SinkPolicy (infer.Pulselib.PulseTaintConfig.SinkPolicy)

    Module PulseTaintConfig.SinkPolicy

    type t = {
    1. source_kinds : Kind.t list;
    2. sanitizer_kinds : Kind.t list;
    3. description : string;
    4. policy_id : int;
    5. privacy_effect : string option;
    6. exclude_in : string list option;
    7. exclude_matching : Str.regexp list option;
    }
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val sink_policies : (Kind.t, t list) Base.Hashtbl.t
    \ No newline at end of file +SinkPolicy (infer.Pulselib.PulseTaintConfig.SinkPolicy)

    Module PulseTaintConfig.SinkPolicy

    type t = {
    1. source_kinds : Kind.t list;
    2. sanitizer_kinds : Kind.t list;
    3. description : string;
    4. policy_id : int;
    5. privacy_effect : string option;
    6. exclude_in : string list option;
    7. exclude_matching : IStdlib.IStd.Str.regexp list option;
    }
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val sink_policies : (Kind.t, t list) Base.Hashtbl.t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Target/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Target/index.html index e0bd4ce7cfe..51664a8c43a 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Target/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Target/index.html @@ -1,2 +1,2 @@ -Target (infer.Pulselib.PulseTaintConfig.Target)

    Module PulseTaintConfig.Target

    type procedure_target =
    1. | ReturnValue
    2. | AllArguments
    3. | ArgumentPositions of int list
    4. | AllArgumentsButPositions of int list
    5. | ArgumentsMatchingTypes of string list
    6. | InstanceReference
    7. | FieldsOfValue of (string * procedure_target) list
    type field_target =
    1. | GetField
    2. | SetField
    \ No newline at end of file +Target (infer.Pulselib.PulseTaintConfig.Target)

    Module PulseTaintConfig.Target

    type procedure_target =
    1. | ReturnValue
    2. | AllArguments
    3. | ArgumentPositions of int list
    4. | AllArgumentsButPositions of int list
    5. | ArgumentsMatchingTypes of string list
    6. | InstanceReference
    7. | FieldsOfValue of (string * procedure_target) list
    type field_target =
    1. | GetField
    2. | SetField
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Unit/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Unit/index.html index 9c289fdafde..0abcb0e8788 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Unit/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/Unit/index.html @@ -1,2 +1,2 @@ -Unit (infer.Pulselib.PulseTaintConfig.Unit)

    Module PulseTaintConfig.Unit

    type procedure_matcher =
    1. | ProcedureName of {
      1. name : string;
      }
    2. | ProcedureNameRegex of {
      1. name_regex : Str.regexp;
      2. exclude_in : string list option;
      }
    3. | ClassNameRegex of {
      1. name_regex : Str.regexp;
      2. exclude_in : string list option;
      }
    4. | ClassAndMethodNames of {
      1. class_names : string list;
      2. method_names : string list;
      }
    5. | ClassNameAndMethodRegex of {
      1. class_names : string list;
      2. method_name_regex : Str.regexp;
      3. exclude_in : string list option;
      }
    6. | ClassRegexAndMethodRegex of {
      1. class_name_regex : Str.regexp;
      2. method_name_regex : Str.regexp;
      3. exclude_in : string list option;
      }
    7. | ClassAndMethodReturnTypeNames of {
      1. class_names : string list;
      2. method_return_type_names : string list;
      }
    8. | ClassWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    9. | ClassWithAnnotationAndRegexAndMethodRegex of {
      1. annotation : string;
      2. annotation_values : string list option;
      3. class_name_regex : Str.regexp;
      4. method_name_regex : Str.regexp;
      5. exclude_in : string list option;
      }
    10. | OverridesOfClassWithAnnotation of {
      1. annotation : string;
      }
    11. | MethodWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    12. | Block of {
      1. name : string;
      }
    13. | BlockNameRegex of {
      1. name_regex : Str.regexp;
      2. exclude_in : string list option;
      }
    14. | Allocation of {
      1. class_name : string;
      }
    type field_matcher =
    1. | FieldRegex of {
      1. name_regex : Str.regexp;
      2. exclude_in : string list option;
      }
    2. | ClassAndFieldNames of {
      1. class_names : string list;
      2. field_names : string list;
      }
    3. | FieldWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    type procedure_unit = {
    1. procedure_matcher : procedure_matcher;
    2. arguments : ATDGenerated.Pulse_config_t.argument_constraint list;
    3. kinds : Kind.t list;
    4. procedure_target : Target.procedure_target;
    }
    type field_unit = {
    1. field_matcher : field_matcher;
    2. kinds : Kind.t list;
    3. field_target : Target.field_target;
    4. sanitized_in : string list option;
    }
    type t =
    1. | ProcedureUnit of procedure_unit
    2. | FieldUnit of field_unit
    \ No newline at end of file +Unit (infer.Pulselib.PulseTaintConfig.Unit)

    Module PulseTaintConfig.Unit

    type procedure_matcher =
    1. | ProcedureName of {
      1. name : string;
      }
    2. | ProcedureNameRegex of {
      1. name_regex : IStdlib.IStd.Str.regexp;
      2. exclude_in : string list option;
      3. exclude_names : string list option;
      }
    3. | ClassNameRegex of {
      1. name_regex : IStdlib.IStd.Str.regexp;
      2. exclude_in : string list option;
      3. exclude_names : string list option;
      }
    4. | ClassAndMethodNames of {
      1. class_names : string list;
      2. method_names : string list;
      }
    5. | ClassNameAndMethodRegex of {
      1. class_names : string list;
      2. method_name_regex : IStdlib.IStd.Str.regexp;
      3. exclude_in : string list option;
      4. exclude_names : string list option;
      }
    6. | ClassRegexAndMethodRegex of {
      1. class_name_regex : IStdlib.IStd.Str.regexp;
      2. method_name_regex : IStdlib.IStd.Str.regexp;
      3. exclude_in : string list option;
      4. exclude_names : string list option;
      }
    7. | ClassAndMethodReturnTypeNames of {
      1. class_names : string list;
      2. method_return_type_names : string list;
      }
    8. | ClassWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    9. | ClassWithAnnotationAndRegexAndMethodRegex of {
      1. annotation : string;
      2. annotation_values : string list option;
      3. class_name_regex : IStdlib.IStd.Str.regexp;
      4. method_name_regex : IStdlib.IStd.Str.regexp;
      5. exclude_in : string list option;
      6. exclude_names : string list option;
      }
    10. | OverridesOfClassWithAnnotation of {
      1. annotation : string;
      }
    11. | MethodWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    12. | Block of {
      1. name : string;
      }
    13. | BlockNameRegex of {
      1. name_regex : IStdlib.IStd.Str.regexp;
      2. exclude_in : string list option;
      }
    14. | Allocation of {
      1. class_name : string;
      }
    type field_matcher =
    1. | FieldRegex of {
      1. name_regex : IStdlib.IStd.Str.regexp;
      2. exclude_in : string list option;
      3. exclude_names : string list option;
      }
    2. | ClassAndFieldNames of {
      1. class_names : string list;
      2. field_names : string list;
      }
    3. | FieldWithAnnotation of {
      1. annotation : string;
      2. annotation_values : string list option;
      }
    type procedure_unit = {
    1. procedure_matcher : procedure_matcher;
    2. arguments : ATDGenerated.Pulse_config_t.argument_constraint list;
    3. kinds : Kind.t list;
    4. procedure_target : Target.procedure_target;
    }
    type field_unit = {
    1. field_matcher : field_matcher;
    2. kinds : Kind.t list;
    3. field_target : Target.field_target;
    4. sanitized_in : string list option;
    }
    type t =
    1. | ProcedureUnit of procedure_unit
    2. | FieldUnit of field_unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/index.html index 3808fd649d4..7124cff2a8f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintConfig/index.html @@ -1,2 +1,2 @@ -PulseTaintConfig (infer.Pulselib.PulseTaintConfig)

    Module Pulselib.PulseTaintConfig

    module F = Stdlib.Format
    module Kind : sig ... end
    module Target : sig ... end
    module Unit : sig ... end
    module SinkPolicy : sig ... end
    val allocation_sources : (string * Kind.t list) list
    val source_procedure_matchers : Unit.procedure_unit list
    val source_block_matchers : Unit.procedure_unit list
    val source_field_getters_matchers : Unit.field_unit list
    val source_field_setters_matchers : Unit.field_unit list
    val sink_procedure_matchers : Unit.procedure_unit list
    val sink_field_getters_matchers : Unit.field_unit list
    val sink_field_setters_matchers : Unit.field_unit list
    val sanitizer_matchers : Unit.procedure_unit list
    val propagator_matchers : Unit.procedure_unit list
    val log_taint_config : unit -> unit
    \ No newline at end of file +PulseTaintConfig (infer.Pulselib.PulseTaintConfig)

    Module Pulselib.PulseTaintConfig

    module F = Stdlib.Format
    module Kind : sig ... end
    module Target : sig ... end
    module Unit : sig ... end
    module SinkPolicy : sig ... end
    val allocation_sources : (string * Kind.t list) list
    val source_procedure_matchers : Unit.procedure_unit list
    val source_block_matchers : Unit.procedure_unit list
    val source_field_getters_matchers : Unit.field_unit list
    val source_field_setters_matchers : Unit.field_unit list
    val sink_procedure_matchers : Unit.procedure_unit list
    val sink_field_getters_matchers : Unit.field_unit list
    val sink_field_setters_matchers : Unit.field_unit list
    val sanitizer_matchers : Unit.procedure_unit list
    val propagator_matchers : Unit.procedure_unit list
    val log_taint_config : unit -> unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintItem/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintItem/index.html index 0164adab17c..ba443cbcfee 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintItem/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintItem/index.html @@ -1,4 +1,4 @@ -PulseTaintItem (infer.Pulselib.PulseTaintItem)

    Module Pulselib.PulseTaintItem

    module F = Stdlib.Format
    module TaintConfig = PulseTaintConfig
    type origin =
    1. | Argument of {
      1. index : int;
      }
    2. | InstanceReference
    3. | ReturnValue
    4. | Allocation of {
      1. typ : string;
      }
    5. | GetField
    6. | SetField
    7. | FieldOfValue of {
      1. name : string;
      2. origin : origin;
      }
    val compare_origin : origin -> origin -> int
    val equal_origin : origin -> origin -> bool
    type value =
    1. | TaintBlockPassedTo of IR.Procname.t
    2. | TaintField of IR.Fieldname.t
    3. | TaintProcedure of IR.Procname.t
    val compare_value : value -> value -> int
    val equal_value : value -> value -> bool
    type value_tuple =
    1. | Basic of {
      1. value : value;
      2. origin : origin;
      }
    2. | FieldOf of {
      1. name : string;
      2. value_tuple : value_tuple;
      }
    3. | PointedToBy of {
      1. value_tuple : value_tuple;
      }
    val compare_value_tuple : value_tuple -> value_tuple -> int
    val equal_value_tuple : value_tuple -> value_tuple -> bool
    type t = {
    1. kinds : TaintConfig.Kind.t list;
    2. value_tuple : value_tuple;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp_value : F.formatter -> value -> unit
    val pp_value_plain : F.formatter -> value -> unit
    val pp_value_tuple_debug : F.formatter -> value_tuple -> unit
    val pp : F.formatter -> t -> unit
    val is_argument_origin : t -> bool
    val is_set_field_origin : t -> bool
    val value_of_taint : t -> value
    val field_of_origin : t -> string -> t
    val get_rev_field_access_list : +PulseTaintItem (infer.Pulselib.PulseTaintItem)

    Module Pulselib.PulseTaintItem

    module F = Stdlib.Format
    module TaintConfig = PulseTaintConfig
    type origin =
    1. | Argument of {
      1. index : int;
      }
    2. | InstanceReference
    3. | ReturnValue
    4. | Allocation of {
      1. typ : string;
      }
    5. | GetField
    6. | SetField
    7. | FieldOfValue of {
      1. name : string;
      2. origin : origin;
      }
    val compare_origin : origin -> origin -> int
    val equal_origin : origin -> origin -> bool
    type value =
    1. | TaintBlockPassedTo of IR.Procname.t
    2. | TaintField of IR.Fieldname.t
    3. | TaintProcedure of IR.Procname.t
    val compare_value : value -> value -> int
    val equal_value : value -> value -> bool
    type value_tuple =
    1. | Basic of {
      1. value : value;
      2. origin : origin;
      }
    2. | FieldOf of {
      1. name : string;
      2. value_tuple : value_tuple;
      }
    3. | PointedToBy of {
      1. value_tuple : value_tuple;
      }
    val compare_value_tuple : value_tuple -> value_tuple -> int
    val equal_value_tuple : value_tuple -> value_tuple -> bool
    type t = {
    1. kinds : TaintConfig.Kind.t list;
    2. value_tuple : value_tuple;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp_value : F.formatter -> value -> unit
    val pp_value_plain : F.formatter -> value -> unit
    val pp_value_tuple_debug : F.formatter -> value_tuple -> unit
    val pp : F.formatter -> t -> unit
    val is_argument_origin : t -> bool
    val is_set_field_origin : t -> bool
    val value_of_taint : t -> value
    val field_of_origin : t -> string -> t
    val get_rev_field_access_list : value_tuple -> - [> `Field of string | `Deref ] list
    \ No newline at end of file + [> `Field of string | `Deref ] list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintItemMatcher/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintItemMatcher/index.html index 31237c4c7eb..acde6857232 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintItemMatcher/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintItemMatcher/index.html @@ -1,9 +1,9 @@ -PulseTaintItemMatcher (infer.Pulselib.PulseTaintItemMatcher)

    Module Pulselib.PulseTaintItemMatcher

    type taint_match = {
    1. taint : Pulselib.PulseBasicInterface.TaintItem.t;
    2. value_origin : Pulselib.PulseBasicInterface.ValueOrigin.t;
    3. typ : IR.Typ.t;
    4. exp : IR.Exp.t option;
    }
    val procedure_matches : +PulseTaintItemMatcher (infer.Pulselib.PulseTaintItemMatcher)

    Module Pulselib.PulseTaintItemMatcher

    type taint_match = {
    1. taint : Pulselib.PulseBasicInterface.TaintItem.t;
    2. value_origin : Pulselib.PulseBasicInterface.ValueOrigin.t;
    3. typ : IR.Typ.t;
    4. exp : IR.Exp.t option;
    }
    val procedure_matches_any : @@ -20,8 +20,8 @@ IR.Tenv.t -> Pulselib.PulseDomainInterface.PathContext.t -> IBase.Location.t -> - ?proc_attributes:IR.ProcAttributes.t -> - has_added_return_param:bool -> + ?proc_attributes:IR.ProcAttributes.t -> + has_added_return_param:bool -> IR.Procname.t -> Pulselib.PulseBasicInterface.ValueOrigin.t Absint.ProcnameDispatcher.Call.FuncArg.t @@ -40,7 +40,7 @@ Pulselib.PulseDomainInterface.AbductiveDomain.t * taint_match list
    \ No newline at end of file + Pulselib.PulseDomainInterface.AbductiveDomain.t * taint_match list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTaintOperations/index.html b/website/static/odoc/next/infer/Pulselib/PulseTaintOperations/index.html index a7a51236e2b..b0409cf9de3 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTaintOperations/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTaintOperations/index.html @@ -1,10 +1,10 @@ -PulseTaintOperations (infer.Pulselib.PulseTaintOperations)

    Module Pulselib.PulseTaintOperations

    val call : +PulseTaintOperations (infer.Pulselib.PulseTaintOperations)

    Module Pulselib.PulseTaintOperations

    val procedure_matches_source : IR.Tenv.t -> IR.Procname.t -> bool
    \ No newline at end of file + list
    val procedure_matches_source : IR.Tenv.t -> IR.Procname.t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTimestamp/index.html b/website/static/odoc/next/infer/Pulselib/PulseTimestamp/index.html index 4b687397c3c..292e2390eeb 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTimestamp/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTimestamp/index.html @@ -1,2 +1,2 @@ -PulseTimestamp (infer.Pulselib.PulseTimestamp)

    Module Pulselib.PulseTimestamp

    module F = Stdlib.Format
    type t = private int
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val t0 : t
    val pp : F.formatter -> t -> unit
    val incr : t -> t
    type trace = private t list

    A trace of timestamps: a way of recording evolution of a timestamp over the course of analysis. In particular, this can permit lightweight comparison of histories across interprocedural calls.

    val compare_trace : trace -> trace -> int
    val equal_trace : trace -> trace -> bool
    val trace0 : t -> trace
    val pp_trace : F.formatter -> trace -> unit
    val add_to_trace : trace -> t -> trace
    \ No newline at end of file +PulseTimestamp (infer.Pulselib.PulseTimestamp)

    Module Pulselib.PulseTimestamp

    module F = Stdlib.Format
    type t = private int
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val t0 : t
    val pp : F.formatter -> t -> unit
    val incr : t -> t
    type trace = private t list

    A trace of timestamps: a way of recording evolution of a timestamp over the course of analysis. In particular, this can permit lightweight comparison of histories across interprocedural calls.

    val compare_trace : trace -> trace -> int
    val equal_trace : trace -> trace -> bool
    val trace0 : t -> trace
    val pp_trace : F.formatter -> trace -> unit
    val add_to_trace : trace -> t -> trace
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTopl/Debug/index.html b/website/static/odoc/next/infer/Pulselib/PulseTopl/Debug/index.html index 273847431be..a5063849740 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTopl/Debug/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTopl/Debug/index.html @@ -1,2 +1,2 @@ -Debug (infer.Pulselib.PulseTopl.Debug)

    Module PulseTopl.Debug

    val get_dropped_disjuncts_count : unit -> int
    \ No newline at end of file +Debug (infer.Pulselib.PulseTopl.Debug)

    Module PulseTopl.Debug

    val get_dropped_disjuncts_count : unit -> int
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTopl/index.html b/website/static/odoc/next/infer/Pulselib/PulseTopl/index.html index daf09510560..09d5f817830 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTopl/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTopl/index.html @@ -1,18 +1,24 @@ -PulseTopl (infer.Pulselib.PulseTopl)

    Module Pulselib.PulseTopl

    module BaseDomain = PulseBaseDomain
    type static_type = IR.Typ.t
    type value_and_type = value * static_type
    type event =
    1. | ArrayWrite of {
      1. aw_array : value;
      2. aw_index : value;
      }
    2. | Call of {
      1. return : value_and_type option;
      2. arguments : value_and_type list;
      3. procname : IR.Procname.t;
      }
    type state
    val compare_state : state -> state -> int
    val equal_state : state -> state -> bool
    type pulse_state = {
    1. pulse_post : BaseDomain.t;
    2. pulse_pre : BaseDomain.t;
    3. path_condition : Pulselib.PulseBasicInterface.Formula.t;
    4. get_reachable : unit -> Pulselib.PulseBasicInterface.AbstractValue.Set.t;
    }

    This is a subset of AbductiveDomain.t, which is needed to evolve the topl state. The purpose of this type is to avoid a cyclic dependency between PulseTopl and PulseAbductiveDomain, so that we can keep them separate. The problem is as follows. A PulseAbductiveDomain.t has a PulseTopl.state as a component. Evolving a PulseAbductiveDomain.t must (a) evolve the non-topl parts without looking at the topl parts, which is why PulseTopl.state is abstract, and (b) trigger the evolution of the topl parts, which *should* look at the non-topl parts of the abductive domain. Those necessary non-topl parts are what PulseTopl.pulse_state contains.

    val start : unit -> state

    Return the initial state of Topl.automaton ().

    val small_step : IBase.Location.t -> pulse_state -> event -> state -> state
    val large_step : - call_location:IBase.Location.t -> - callee_proc_name:IR.Procname.t -> - substitution: +PulseTopl (infer.Pulselib.PulseTopl)

    Module Pulselib.PulseTopl

    module BaseDomain = PulseBaseDomain
    type static_type = IR.Typ.t
    type value_and_type = value * static_type
    type event =
    1. | ArrayWrite of {
      1. aw_array : value;
      2. aw_index : value;
      }
    2. | Call of {
      1. return : value_and_type option;
      2. arguments : value_and_type list;
      3. procname : IR.Procname.t;
      }
    type state
    val compare_state : state -> state -> int
    val equal_state : state -> state -> bool
    type pulse_state = {
    1. pulse_post : BaseDomain.t;
    2. pulse_pre : BaseDomain.t;
    3. path_condition : Pulselib.PulseBasicInterface.Formula.t;
    4. get_reachable : unit -> Pulselib.PulseBasicInterface.AbstractValue.Set.t;
    }

    This is a subset of AbductiveDomain.t, which is needed to evolve the topl state. The purpose of this type is to avoid a cyclic dependency between PulseTopl and PulseAbductiveDomain, so that we can keep them separate. The problem is as follows. A PulseAbductiveDomain.t has a PulseTopl.state as a component. Evolving a PulseAbductiveDomain.t must (a) evolve the non-topl parts without looking at the topl parts, which is why PulseTopl.state is abstract, and (b) trigger the evolution of the topl parts, which *should* look at the non-topl parts of the abductive domain. Those necessary non-topl parts are what PulseTopl.pulse_state contains.

    val start : unit -> state

    Return the initial state of Topl.automaton ().

    val small_step : + IR.Tenv.t -> + IBase.Location.t -> + pulse_state -> + event -> + state -> + state
    val large_step : + call_location:IBase.Location.t -> + callee_proc_name:IR.Procname.t -> + substitution: (value * Pulselib.PulseBasicInterface.ValueHistory.t) Pulselib.PulseBasicInterface.AbstractValue.Map.t -> pulse_state -> - callee_summary:state -> - callee_is_manifest:bool -> + callee_summary:state -> + callee_is_manifest:bool -> state -> state

    large_step ~call_location ~callee_proc_name ~substitution pulse_state ~callee_summary ~callee_is_manifest state updates state according to callee_summary. The abstract values in pulse_state and state are in one scope, and those in callee_summary in another scope: the substitution maps from the callee scope to the caller scope.

    val filter_for_summary : pulse_state -> state -> state

    Remove from state those parts that are inconsistent with the path condition. (We do a cheap check to not introduce inconsistent Topl states, but they may become inconsistent because the program path condition is updated later.)

    val simplify : pulse_state -> state -> state

    Keep only a subset of abstract values. This is used for extracting summaries.

    val report_errors : IR.Procdesc.t -> Absint.Errlog.t -> - pulse_is_manifest:bool -> + pulse_is_manifest:bool -> state -> - unit

    Calls Reporting.log_issue with error traces, if any.

    val pp_state : Stdlib.Format.formatter -> state -> unit
    module Debug : sig ... end
    \ No newline at end of file + unit

    Calls Reporting.log_issue with error traces, if any.

    val pp_state : Stdlib.Format.formatter -> state -> unit
    module Debug : sig ... end
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTrace/Set/index.html b/website/static/odoc/next/infer/Pulselib/PulseTrace/Set/index.html index 77ce89672b7..6cdc7da0fd1 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTrace/Set/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTrace/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Pulselib.PulseTrace.Set)

    Module PulseTrace.Set

    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val map_callee : CallEvent.t -> IBase.Location.t -> t -> t
    \ No newline at end of file +Set (infer.Pulselib.PulseTrace.Set)

    Module PulseTrace.Set

    include IStdlib.PrettyPrintable.PPSet with type elt = t
    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    val map_callee : CallEvent.t -> IBase.Location.t -> t -> t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html b/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html index 2646466e7da..0e06ae510be 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html @@ -1,20 +1,20 @@ -PulseTrace (infer.Pulselib.PulseTrace)

    Module Pulselib.PulseTrace

    module F = Stdlib.Format
    module CallEvent = PulseCallEvent
    module ValueHistory = PulseValueHistory
    module CellId = PulseValueHistory.CellId
    type t =
    1. | Immediate of {
      1. location : IBase.Location.t;
      2. history : ValueHistory.t;
      }
    2. | ViaCall of {
      1. f : CallEvent.t;
      2. location : IBase.Location.t;
        (*

        location of the call event

        *)
      3. history : ValueHistory.t;
        (*

        the call involves a value with this prior history

        *)
      4. in_call : t;
        (*

        last step of the trace is in a call to f made at location

        *)
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : sig ... end
    val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
    val get_outer_location : t -> IBase.Location.t

    skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

    val get_start_location : t -> IBase.Location.t

    initial step in the history if not empty, or else same as get_outer_location

    val add_call : +PulseTrace (infer.Pulselib.PulseTrace)

    Module Pulselib.PulseTrace

    module F = Stdlib.Format
    module CallEvent = PulseCallEvent
    module ValueHistory = PulseValueHistory
    module CellId = PulseValueHistory.CellId
    type t =
    1. | Immediate of {
      1. location : IBase.Location.t;
      2. history : ValueHistory.t;
      }
    2. | ViaCall of {
      1. f : CallEvent.t;
      2. location : IBase.Location.t;
        (*

        location of the call event

        *)
      3. history : ValueHistory.t;
        (*

        the call involves a value with this prior history

        *)
      4. in_call : t;
        (*

        last step of the trace is in a call to f made at location

        *)
      }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : sig ... end
    val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
    val get_outer_location : t -> IBase.Location.t

    skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

    val get_start_location : t -> IBase.Location.t

    initial step in the history if not empty, or else same as get_outer_location

    val get_immediate : t -> IBase.Location.t * ValueHistory.t

    the (innermost and unique) Immediate of a trace

    val add_call : CallEvent.t -> IBase.Location.t -> ValueHistory.t CellId.Map.t -> - default_caller_history:ValueHistory.t -> + default_caller_history:ValueHistory.t -> t -> t
    val add_to_errlog : - ?include_value_history:bool -> - ?include_taint_events:bool -> - nesting:int -> - pp_immediate:(F.formatter -> unit) -> + ?include_value_history:bool -> + ?include_taint_events:bool -> + nesting:int -> + pp_immediate:(F.formatter -> unit) -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
    val synchronous_add_to_errlog : - nesting:int -> - pp_immediate:(F.formatter -> unit) -> + nesting:int -> + pp_immediate:(F.formatter -> unit) -> t list -> Absint.Errlog.loc_trace_elem list -> - Absint.Errlog.loc_trace_elem list

    synchronous_add_to_errlog adds a list of the traces to the errlog in the given order while grouping traces that take place at the same location to reduce deduplication and ensure events happening together are identifiable as such. E.g. if two traces start with a ViaCall and they happen at the same location, then that call will only appear once and the rest of those traces will then be added synchronously as well

    val find_map_last_main : t -> f:(ValueHistory.event -> 'a option) -> 'a option

    find_map applied to history events in reverse order; does not look into contextual events

    val exists_main : t -> f:(ValueHistory.event -> bool) -> bool

    whether the trace contains an event satisfying f; does not look into contextual events

    val get_trace_until : t -> f:(ValueHistory.event -> bool) -> t option

    build a sub-trace leading to the first element of the trace satisfying f

    \ No newline at end of file + Absint.Errlog.loc_trace_elem list

    synchronous_add_to_errlog adds a list of the traces to the errlog in the given order while grouping traces that take place at the same location to reduce deduplication and ensure events happening together are identifiable as such. E.g. if two traces start with a ViaCall and they happen at the same location, then that call will only appear once and the rest of those traces will then be added synchronously as well

    val find_map_last_main : t -> f:(ValueHistory.event -> 'a option) -> 'a option

    find_map applied to history events in reverse order; does not look into contextual events

    val exists_main : t -> f:(ValueHistory.event -> bool) -> bool

    whether the trace contains an event satisfying f; does not look into contextual events

    val get_trace_until : t -> f:(ValueHistory.event -> bool) -> t option

    build a sub-trace leading to the first element of the trace satisfying f

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTransitiveAccessChecker/index.html b/website/static/odoc/next/infer/Pulselib/PulseTransitiveAccessChecker/index.html index a200c40e58a..a548e048b96 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTransitiveAccessChecker/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTransitiveAccessChecker/index.html @@ -1,5 +1,5 @@ -PulseTransitiveAccessChecker (infer.Pulselib.PulseTransitiveAccessChecker)

    Module Pulselib.PulseTransitiveAccessChecker

    val should_skip_call : IR.Procname.t -> bool
    val record_load : +PulseTransitiveAccessChecker (infer.Pulselib.PulseTransitiveAccessChecker)

    Module Pulselib.PulseTransitiveAccessChecker

    val should_skip_call : IR.Tenv.t -> IR.Procname.t -> bool
    val record_load : IR.Exp.t -> IBase.Location.t -> PulseExecutionDomain.t list -> @@ -13,4 +13,4 @@ IR.Procdesc.t -> Absint.Errlog.t -> PulseSummary.summary -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/Callees/index.html b/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/Callees/index.html index 38406649564..92e7cf66ff9 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/Callees/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/Callees/index.html @@ -1,9 +1,10 @@ -Callees (infer.Pulselib.PulseTransitiveInfo.Callees)

    Module PulseTransitiveInfo.Callees

    for each call site, we remember which resolution was performed

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val pp : Stdlib.Format.formatter -> t -> unit
    type call_kind =
    1. | Static
    2. | Virtual
    3. | Closure
    type resolution =
    1. | ResolvedUsingDynamicType
    2. | ResolvedUsingStaticType
    3. | Unresolved
    val record : - caller_name:string -> - caller_loc:IBase.Location.t -> - callsite_loc:IBase.Location.t -> +Callees (infer.Pulselib.PulseTransitiveInfo.Callees)

    Module PulseTransitiveInfo.Callees

    for each call site, we remember which resolution was performed

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val pp : Stdlib.Format.formatter -> t -> unit
    type call_kind =
    1. | Static
    2. | Virtual
    3. | Closure

    NOTE: only Closure is recorded for now

    type resolution =
    1. | ResolvedUsingDynamicType
      (*

      the most precise resolution

      *)
    2. | ResolvedUsingStaticType
      (*

      may not be exact

      *)
    3. | Unresolved
      (*

      the worst resolution because we don't have enough type information or the capture was incomplete

      *)
    val record : + caller:IR.Procdesc.t -> + IBase.Location.t -> call_kind -> resolution -> t -> - t
    type item = {
    1. callsite_loc : IBase.Location.t;
    2. caller_name : string;
    3. caller_loc : IBase.Location.t;
    4. kind : call_kind;
    5. resolution : resolution;
    }
    val report_as_extra_info : t -> item list
    \ No newline at end of file + t
    val to_jsonbug_transitive_callees : + t -> + ATDGenerated.Jsonbug_t.transitive_callee list
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/index.html b/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/index.html index a4b035b607a..a437162f78b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTransitiveInfo/index.html @@ -1,12 +1,7 @@ -PulseTransitiveInfo (infer.Pulselib.PulseTransitiveInfo)

    Module Pulselib.PulseTransitiveInfo

    module Callees : sig ... end

    for each call site, we remember which resolution was performed

    type t = {
    1. accesses : PulseTrace.Set.t;
      (*

      record specific accesses inter-procedurally

      *)
    2. callees : Callees.t;
      (*

      record all call resolutions that were transitively performed

      *)
    3. missed_captures : IR.Typ.Name.Set.t;
      (*

      record types that were missing during name resolution (fields/methods) while analysing this function and its transitive callees

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val apply_summary : - callee_pname:IR.Procname.t -> - call_loc:IBase.Location.t -> - summary:t -> +PulseTransitiveInfo (infer.Pulselib.PulseTransitiveInfo)

    Module Pulselib.PulseTransitiveInfo

    module Callees : sig ... end

    for each call site, we remember which resolution was performed

    type t = {
    1. accesses : PulseTrace.Set.t;
      (*

      record specific accesses inter-procedurally

      *)
    2. callees : Callees.t;
      (*

      record all call resolutions that were transitively performed

      *)
    3. missed_captures : IR.Typ.Name.Set.t;
      (*

      record types that were missing during name resolution (fields/methods) while analysing this function and its transitive callees

      *)
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Absint.AbstractDomain.WithBottom with type t := t
    include Absint.AbstractDomain.S with type t := t
    include Absint.AbstractDomain.Comparable with type t := t
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    val apply_summary : + callee_pname:IR.Procname.t -> + call_loc:IBase.Location.t -> + summary:t -> t -> - t
    val remember_dropped_elements : dropped:t -> t -> t
    val transfer_transitive_info_to_caller : - caller:t -> - IR.Procname.t -> - IBase.Location.t -> - callee_summary:t -> - t
    \ No newline at end of file + t
    val remember_dropped_elements : dropped:t -> t -> t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseUninitBlocklist/index.html b/website/static/odoc/next/infer/Pulselib/PulseUninitBlocklist/index.html index ce939c07246..89de8515ff8 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseUninitBlocklist/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseUninitBlocklist/index.html @@ -1,2 +1,2 @@ -PulseUninitBlocklist (infer.Pulselib.PulseUninitBlocklist)

    Module Pulselib.PulseUninitBlocklist

    val is_blocklisted_struct : IR.Typ.name -> bool

    Check if a struct name is in the blocklist for uninit checker.

    \ No newline at end of file +PulseUninitBlocklist (infer.Pulselib.PulseUninitBlocklist)

    Module Pulselib.PulseUninitBlocklist

    val is_blocklisted_struct : IR.Typ.name -> bool

    Check if a struct name is in the blocklist for uninit checker.

    diff --git a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/CellId/index.html b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/CellId/index.html index 5030f3f9014..382ee9c4baa 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/CellId/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/CellId/index.html @@ -1,2 +1,2 @@ -CellId (infer.Pulselib.PulseValueHistory.CellId)

    Module PulseValueHistory.CellId

    Used to identify which cells (places in the memory) in the current precondition are mentioned in a value history in the current abstract state, i.e. were used to compute that value.

    type t = private int
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val next : unit -> t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +CellId (infer.Pulselib.PulseValueHistory.CellId)

    Module PulseValueHistory.CellId

    Used to identify which cells (places in the memory) in the current precondition are mentioned in a value history in the current abstract state, i.e. were used to compute that value.

    type t = private int
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val pp : F.formatter -> t -> unit
    val next : unit -> t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html index e7e88ee3136..8829bf74e8c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html @@ -1,15 +1,15 @@ -PulseValueHistory (infer.Pulselib.PulseValueHistory)

    Module Pulselib.PulseValueHistory

    module F = Stdlib.Format
    module CallEvent = PulseCallEvent
    module TaintItem = PulseTaintItem
    module Timestamp = PulseTimestamp
    module CellId : sig ... end

    Used to identify which cells (places in the memory) in the current precondition are mentioned in a value history in the current abstract state, i.e. were used to compute that value.

    type event =
    1. | Allocation of {
      1. f : CallEvent.t;
      2. location : IBase.Location.t;
      3. timestamp : Timestamp.t;
      }
    2. | Assignment of IBase.Location.t * Timestamp.t
    3. | Call of {
      1. f : CallEvent.t;
      2. location : IBase.Location.t;
      3. in_call : t;
      4. timestamp : Timestamp.t;
      }
    4. | Capture of {
      1. captured_as : IR.Pvar.t;
      2. mode : IR.CapturedVar.capture_mode;
      3. location : IBase.Location.t;
      4. timestamp : Timestamp.t;
      }
    5. | ConditionPassed of {
      1. if_kind : IR.Sil.if_kind;
      2. is_then_branch : bool;
      3. location : IBase.Location.t;
      4. timestamp : Timestamp.t;
      }
    6. | CppTemporaryCreated of IBase.Location.t * Timestamp.t
    7. | FormalDeclared of IR.Pvar.t * IBase.Location.t * Timestamp.t
    8. | Invalidated of PulseInvalidation.t * IBase.Location.t * Timestamp.t
    9. | NilMessaging of IBase.Location.t * Timestamp.t
    10. | Returned of IBase.Location.t * Timestamp.t
    11. | StructFieldAddressCreated of IR.Fieldname.t IStdlib.RevList.t +PulseValueHistory (infer.Pulselib.PulseValueHistory)

      Module Pulselib.PulseValueHistory

      module F = Stdlib.Format
      module CallEvent = PulseCallEvent
      module TaintItem = PulseTaintItem
      module Timestamp = PulseTimestamp
      module CellId : sig ... end

      Used to identify which cells (places in the memory) in the current precondition are mentioned in a value history in the current abstract state, i.e. were used to compute that value.

      type event =
      1. | Allocation of {
        1. f : CallEvent.t;
        2. location : IBase.Location.t;
        3. timestamp : Timestamp.t;
        }
      2. | Assignment of IBase.Location.t * Timestamp.t
      3. | Call of {
        1. f : CallEvent.t;
        2. location : IBase.Location.t;
        3. in_call : t;
        4. timestamp : Timestamp.t;
        }
      4. | Capture of {
        1. captured_as : IR.Pvar.t;
        2. mode : IR.CapturedVar.capture_mode;
        3. location : IBase.Location.t;
        4. timestamp : Timestamp.t;
        }
      5. | ConditionPassed of {
        1. if_kind : IR.Sil.if_kind;
        2. is_then_branch : bool;
        3. location : IBase.Location.t;
        4. timestamp : Timestamp.t;
        }
      6. | CppTemporaryCreated of IBase.Location.t * Timestamp.t
      7. | FormalDeclared of IR.Pvar.t * IBase.Location.t * Timestamp.t
      8. | Invalidated of PulseInvalidation.t * IBase.Location.t * Timestamp.t
      9. | NilMessaging of IBase.Location.t * Timestamp.t
      10. | Returned of IBase.Location.t * Timestamp.t
      11. | StructFieldAddressCreated of IR.Fieldname.t IStdlib.RevList.t * IBase.Location.t - * Timestamp.t
      12. | TaintSource of TaintItem.t * IBase.Location.t * Timestamp.t
      13. | TaintPropagated of IBase.Location.t * Timestamp.t
      14. | VariableAccessed of IR.Pvar.t * IBase.Location.t * Timestamp.t
      15. | VariableDeclared of IR.Pvar.t * IBase.Location.t * Timestamp.t
      and t = private
      1. | Epoch
        (*

        start of time

        *)
      2. | Sequence of event * t
        (*

        Sequence [event, hist] represents an event event occurring *after* hist. Invariant: the timestamp of event is greater than all the (local, i.e. not inside function calls) timestamps in hist.

        *)
      3. | InContext of {
        1. main : t;
          (*

          trace of the "main" value being traced

          *)
        2. context : t list;
          (*

          contextual traces, eg conditionals that the path is under

          *)
        }
      4. | BinaryOp of IR.Binop.t * t * t
        (*

        branch history due to a binop

        *)
      5. | FromCellIds of CellId.Set.t * t
        (*

        the set of cells that this were used in this history; used in particular in summary application to know which caller value histories should be pre-pended to a callee value history

        *)
      6. | Multiplex of t list
        (*

        interlace multiple histories together

        *)
      7. | UnknownCall of {
        1. f : CallEvent.t;
        2. actuals : t list;
        3. location : IBase.Location.t;
        4. timestamp : Timestamp.t;
        }
      val compare_event : event -> event -> int
      val compare : t -> t -> int
      val equal_event : event -> event -> bool
      val equal : t -> t -> bool
      val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
      val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
      val epoch : t
      val sequence : ?context:t list -> event -> t -> t
      val in_context : t list -> t -> t
      val binary_op : IR.Binop.t -> t -> t -> t
      val from_cell_id : CellId.t -> t -> t
      val unknown_call : + * Timestamp.t
    12. | TaintSource of TaintItem.t * IBase.Location.t * Timestamp.t
    13. | TaintPropagated of IBase.Location.t * Timestamp.t
    14. | VariableAccessed of IR.Pvar.t * IBase.Location.t * Timestamp.t
    15. | VariableDeclared of IR.Pvar.t * IBase.Location.t * Timestamp.t
    and t = private
    1. | Epoch
      (*

      start of time

      *)
    2. | Sequence of event * t
      (*

      Sequence [event, hist] represents an event event occurring *after* hist. Invariant: the timestamp of event is greater than all the (local, i.e. not inside function calls) timestamps in hist.

      *)
    3. | InContext of {
      1. main : t;
        (*

        trace of the "main" value being traced

        *)
      2. context : t list;
        (*

        contextual traces, eg conditionals that the path is under

        *)
      }
    4. | BinaryOp of IR.Binop.t * t * t
      (*

      branch history due to a binop

      *)
    5. | FromCellIds of CellId.Set.t * t
      (*

      the set of cells that this were used in this history; used in particular in summary application to know which caller value histories should be pre-pended to a callee value history

      *)
    6. | Multiplex of t list
      (*

      interlace multiple histories together

      *)
    7. | UnknownCall of {
      1. f : CallEvent.t;
      2. actuals : t list;
      3. location : IBase.Location.t;
      4. timestamp : Timestamp.t;
      }
    val compare_event : event -> event -> int
    val compare : t -> t -> int
    val equal_event : event -> event -> bool
    val equal : t -> t -> bool
    val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val epoch : t
    val sequence : ?context:t list -> event -> t -> t
    val in_context : t list -> t -> t
    val binary_op : IR.Binop.t -> t -> t -> t
    val from_cell_id : CellId.t -> t -> t
    val unknown_call : CallEvent.t -> t list -> IBase.Location.t -> Timestamp.t -> - t
    val pp : F.formatter -> t -> unit
    val pp_fields : F.formatter -> IR.Fieldname.t IStdlib.RevList.t -> unit
    val singleton : event -> t
    val get_cell_ids : t -> CellId.Set.t option
    val get_cell_id_exn : t -> CellId.t option

    same as get_cell_ids but assumes the resulting set is a singleton

    val of_cell_ids_in_map : t CellId.Map.t -> CellId.Set.t -> t option

    multiplex of the histories corresponding to the given cell ids according to the cell id map provided; None if there are no such histories to multiplex together

    type iter_event =
    1. | EnterCall of CallEvent.t * IBase.Location.t
    2. | ReturnFromCall of CallEvent.t * IBase.Location.t
    3. | Event of event
    val rev_iter_main : t -> f:(iter_event -> unit) -> unit

    iterate on all events in reverse timestamp order, ignoring events in contexts and recursing into the histories inside call events. Timestamp order is the lexicographic order induced by projecting events onto their timestamps and appending timestamps within calls, e.g. the timestamp of the inner assignement in

    Call {timestamp=10; in_call=[..., Call{timestamp=4;
    -in_call=[..., Assignement (...,timestamp=3) ] } ] }

    can be written 10.4.3 and the order is such that, e.g., 10.4.3 < 10.5, 10.5 being the timestamp of the event following the inner Call event in the example above.

    val iter : main_only:bool -> t -> f:(iter_event -> unit) -> unit

    like rev_iter_main but iterates in order (by reversing the order iteration) and iterates on only main events like rev_iter_main if main_only is true, otherwise iterates on *all* events including contexts if main_only is false

    val location_of_event : event -> IBase.Location.t
    val timestamp_of_event : event -> Timestamp.t
    val add_to_errlog : - ?include_taint_events:bool -> - nesting:int -> + t
    val pp : F.formatter -> t -> unit
    val pp_fields : F.formatter -> IR.Fieldname.t IStdlib.RevList.t -> unit
    val singleton : event -> t
    val get_cell_ids : t -> CellId.Set.t option
    val get_cell_id_exn : t -> CellId.t option

    same as get_cell_ids but assumes the resulting set is a singleton

    val of_cell_ids_in_map : t CellId.Map.t -> CellId.Set.t -> t option

    multiplex of the histories corresponding to the given cell ids according to the cell id map provided; None if there are no such histories to multiplex together

    type iter_event =
    1. | EnterCall of CallEvent.t * IBase.Location.t
    2. | ReturnFromCall of CallEvent.t * IBase.Location.t
    3. | Event of event
    val rev_iter_main : t -> f:(iter_event -> unit) -> unit

    iterate on all events in reverse timestamp order, ignoring events in contexts and recursing into the histories inside call events. Timestamp order is the lexicographic order induced by projecting events onto their timestamps and appending timestamps within calls, e.g. the timestamp of the inner assignement in

    Call {timestamp=10; in_call=[..., Call{timestamp=4;
    +in_call=[..., Assignement (...,timestamp=3) ] } ] }

    can be written 10.4.3 and the order is such that, e.g., 10.4.3 < 10.5, 10.5 being the timestamp of the event following the inner Call event in the example above.

    val iter : main_only:bool -> t -> f:(iter_event -> unit) -> unit

    like rev_iter_main but iterates in order (by reversing the order iteration) and iterates on only main events like rev_iter_main if main_only is true, otherwise iterates on *all* events including contexts if main_only is false

    val location_of_event : event -> IBase.Location.t
    val timestamp_of_event : event -> Timestamp.t
    val add_to_errlog : + ?include_taint_events:bool -> + nesting:int -> t -> Absint.Errlog.loc_trace_elem list -> - Absint.Errlog.loc_trace_elem list
    val get_first_main_event : t -> event option
    val exists_main : t -> f:(event -> bool) -> bool
    \ No newline at end of file + Absint.Errlog.loc_trace_elem list
    val get_first_main_event : t -> event option
    val exists_main : t -> f:(event -> bool) -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/PulseValueOrigin/index.html b/website/static/odoc/next/infer/Pulselib/PulseValueOrigin/index.html index 096a5a01f27..88f8e51265f 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseValueOrigin/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseValueOrigin/index.html @@ -1,5 +1,5 @@ -PulseValueOrigin (infer.Pulselib.PulseValueOrigin)

    Module Pulselib.PulseValueOrigin

    module AbstractValue = PulseAbstractValue
    module ValueHistory = PulseValueHistory
    module Access = PulseAccess
    type t =
    1. | InMemory of {
      1. src : AbstractValue.t * ValueHistory.t;
      2. access : Access.t;
      3. dest : AbstractValue.t * ValueHistory.t;
      }
    2. | OnStack of {
      1. var : IR.Var.t;
      2. addr_hist : AbstractValue.t * ValueHistory.t;
      }
    3. | Unknown of AbstractValue.t * ValueHistory.t
      (*

      Values without a known origin such as those containing constant values.

      *)

    Describes a (value, history) pair with path/origin when available.

    Useful when one needs to overwrite a history of a particular value in the abstract state.

    val unknown : (AbstractValue.t * ValueHistory.t) -> t
    val addr_hist : t -> AbstractValue.t * ValueHistory.t
    val addr_hist_args : +PulseValueOrigin (infer.Pulselib.PulseValueOrigin)

    Module Pulselib.PulseValueOrigin

    module AbstractValue = PulseAbstractValue
    module ValueHistory = PulseValueHistory
    module Access = PulseAccess
    type t =
    1. | InMemory of {
      1. src : AbstractValue.t * ValueHistory.t;
      2. access : Access.t;
      3. dest : AbstractValue.t * ValueHistory.t;
      }
    2. | OnStack of {
      1. var : IR.Var.t;
      2. addr_hist : AbstractValue.t * ValueHistory.t;
      }
    3. | Unknown of AbstractValue.t * ValueHistory.t
      (*

      Values without a known origin such as those containing constant values.

      *)

    Describes a (value, history) pair with path/origin when available.

    Useful when one needs to overwrite a history of a particular value in the abstract state.

    val unknown : (AbstractValue.t * ValueHistory.t) -> t
    val addr_hist : t -> AbstractValue.t * ValueHistory.t
    val value : t -> AbstractValue.t
    \ No newline at end of file + list
    val value : t -> AbstractValue.t
    diff --git a/website/static/odoc/next/infer/Pulselib/QSafeCapped/index.html b/website/static/odoc/next/infer/Pulselib/QSafeCapped/index.html index 911392b44a2..a87c9cae943 100644 --- a/website/static/odoc/next/infer/Pulselib/QSafeCapped/index.html +++ b/website/static/odoc/next/infer/Pulselib/QSafeCapped/index.html @@ -1,2 +1,2 @@ -QSafeCapped (infer.Pulselib.QSafeCapped)

    Module Pulselib.QSafeCapped

    include module type of struct include Q end
    type t = Q.t = {
    1. num : Z.t;
    2. den : Z.t;
    }
    val make : Z.t -> Z.t -> t
    val zero : t
    val one : t
    val minus_one : t
    val inf : t
    val minus_inf : t
    val undef : t
    val of_bigint : Z.t -> t
    val of_int : int -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_nativeint : nativeint -> t
    val of_ints : int -> int -> t
    val of_float : float -> t
    val of_string : string -> t
    val num : t -> Z.t
    val den : t -> Z.t
    type kind = Q.kind =
    1. | ZERO
    2. | INF
    3. | MINF
    4. | UNDEF
    5. | NZERO
    val classify : t -> kind
    val is_real : t -> bool
    val sign : t -> int
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val min : t -> t -> t
    val max : t -> t -> t
    val leq : t -> t -> bool
    val geq : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val to_string : t -> string
    val to_float : t -> float
    val neg : t -> t
    val abs : t -> t
    val add : t -> t -> t
    val sub : t -> t -> t
    val mul : t -> t -> t
    val inv : t -> t
    val div : t -> t -> t
    val mul_2exp : t -> int -> t
    val div_2exp : t -> int -> t
    val print : t -> unit
    val output : Stdlib.out_channel -> t -> unit
    val sprint : unit -> t -> string
    val bprint : Stdlib.Buffer.t -> t -> unit
    val pp_print : Stdlib.Format.formatter -> t -> unit
    val (~-) : t -> t
    val (~+) : t -> t
    val (+) : t -> t -> t
    val (-) : t -> t -> t
    val (*) : t -> t -> t
    val (/) : t -> t -> t
    val (lsl) : t -> int -> t
    val (asr) : t -> int -> t
    val (~$) : int -> t
    val (//) : int -> int -> t
    val (~$$) : Z.t -> t
    val (///) : Z.t -> Z.t -> t
    val (=) : t -> t -> bool
    val (<) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (>=) : t -> t -> bool
    val (<>) : t -> t -> bool
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val is_zero : t -> bool
    val is_not_zero : t -> bool
    val is_one : t -> bool
    val is_minus_one : t -> bool
    val not_equal : t -> t -> bool
    val to_int : t -> int option
    val to_int32 : t -> int32 option
    val to_int64 : t -> int64 option
    val to_bigint : t -> Z.t option
    val to_nativeint : t -> nativeint option
    val is_rational : t -> bool
    \ No newline at end of file +QSafeCapped (infer.Pulselib.QSafeCapped)

    Module Pulselib.QSafeCapped

    include module type of struct include Q end
    type t = Q.t = {
    1. num : Z.t;
    2. den : Z.t;
    }
    val make : Z.t -> Z.t -> t
    val zero : t
    val one : t
    val minus_one : t
    val inf : t
    val minus_inf : t
    val undef : t
    val of_bigint : Z.t -> t
    val of_int : int -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_nativeint : nativeint -> t
    val of_ints : int -> int -> t
    val of_float : float -> t
    val of_string : string -> t
    val num : t -> Z.t
    val den : t -> Z.t
    type kind = Q.kind =
    1. | ZERO
    2. | INF
    3. | MINF
    4. | UNDEF
    5. | NZERO
    val classify : t -> kind
    val is_real : t -> bool
    val sign : t -> int
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val min : t -> t -> t
    val max : t -> t -> t
    val leq : t -> t -> bool
    val geq : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val to_string : t -> string
    val to_float : t -> float
    val neg : t -> t
    val abs : t -> t
    val add : t -> t -> t
    val sub : t -> t -> t
    val mul : t -> t -> t
    val inv : t -> t
    val div : t -> t -> t
    val mul_2exp : t -> int -> t
    val div_2exp : t -> int -> t
    val print : t -> unit
    val output : Stdlib.out_channel -> t -> unit
    val sprint : unit -> t -> string
    val bprint : Stdlib.Buffer.t -> t -> unit
    val pp_print : Stdlib.Format.formatter -> t -> unit
    val (~-) : t -> t
    val (~+) : t -> t
    val (+) : t -> t -> t
    val (-) : t -> t -> t
    val (*) : t -> t -> t
    val (/) : t -> t -> t
    val (lsl) : t -> int -> t
    val (asr) : t -> int -> t
    val (~$) : int -> t
    val (//) : int -> int -> t
    val (~$$) : Z.t -> t
    val (///) : Z.t -> Z.t -> t
    val (=) : t -> t -> bool
    val (<) : t -> t -> bool
    val (>) : t -> t -> bool
    val (<=) : t -> t -> bool
    val (>=) : t -> t -> bool
    val (<>) : t -> t -> bool
    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val is_zero : t -> bool
    val is_not_zero : t -> bool
    val is_one : t -> bool
    val is_minus_one : t -> bool
    val not_equal : t -> t -> bool
    val to_int : t -> int option
    val to_int32 : t -> int32 option
    val to_int64 : t -> int64 option
    val to_bigint : t -> Z.t option
    val to_nativeint : t -> nativeint option
    val is_rational : t -> bool
    diff --git a/website/static/odoc/next/infer/Pulselib/ZSafe/index.html b/website/static/odoc/next/infer/Pulselib/ZSafe/index.html index 00092d995a9..e76d64ff3df 100644 --- a/website/static/odoc/next/infer/Pulselib/ZSafe/index.html +++ b/website/static/odoc/next/infer/Pulselib/ZSafe/index.html @@ -1,2 +1,2 @@ -ZSafe (infer.Pulselib.ZSafe)

    Module Pulselib.ZSafe

    include module type of struct include Z end
    type t = Z.t
    exception Overflow
    val zero : t
    val one : t
    val minus_one : t
    val of_int : int -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_nativeint : nativeint -> t
    val of_int32_unsigned : int32 -> t
    val of_int64_unsigned : int64 -> t
    val of_nativeint_unsigned : nativeint -> t
    val of_float : float -> t
    val of_string : string -> t
    val of_substring : string -> pos:int -> len:int -> t
    val of_string_base : int -> string -> t
    val of_substring_base : int -> string -> pos:int -> len:int -> t
    val succ : t -> t
    val pred : t -> t
    val abs : t -> t
    val neg : t -> t
    val add : t -> t -> t
    val sub : t -> t -> t
    val mul : t -> t -> t
    val divisible : t -> t -> bool
    val congruent : t -> t -> t -> bool
    val logand : t -> t -> t
    val logor : t -> t -> t
    val logxor : t -> t -> t
    val lognot : t -> t
    val shift_left : t -> int -> t
    val shift_right : t -> int -> t
    val shift_right_trunc : t -> int -> t
    val numbits : t -> int
    val trailing_zeros : t -> int
    val testbit : t -> int -> bool
    val popcount : t -> int
    val hamdist : t -> t -> int
    val to_int : t -> int
    val to_int32 : t -> int32
    val to_int64 : t -> int64
    val to_nativeint : t -> nativeint
    val to_int32_unsigned : t -> int32
    val to_int64_unsigned : t -> int64
    val to_nativeint_unsigned : t -> nativeint
    val to_float : t -> float
    val to_string : t -> string
    val format : string -> t -> string
    val fits_int : t -> bool
    val fits_int32 : t -> bool
    val fits_int64 : t -> bool
    val fits_nativeint : t -> bool
    val fits_int32_unsigned : t -> bool
    val fits_int64_unsigned : t -> bool
    val fits_nativeint_unsigned : t -> bool
    val print : t -> unit
    val output : Stdlib.out_channel -> t -> unit
    val sprint : unit -> t -> string
    val bprint : Stdlib.Buffer.t -> t -> unit
    val pp_print : Stdlib.Format.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val leq : t -> t -> bool
    val geq : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val sign : t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    val is_even : t -> bool
    val is_odd : t -> bool
    val hash : t -> int
    val probab_prime : t -> int -> int
    val nextprime : t -> t
    val jacobi : t -> t -> int
    val legendre : t -> t -> int
    val kronecker : t -> t -> int
    val remove : t -> t -> t * int
    val fac : int -> t
    val fac2 : int -> t
    val facM : int -> int -> t
    val primorial : int -> t
    val bin : t -> int -> t
    val fib : int -> t
    val lucnum : int -> t
    val pow : t -> int -> t
    val sqrt : t -> t
    val sqrt_rem : t -> t * t
    val root : t -> int -> t
    val rootrem : t -> int -> t * t
    val perfect_power : t -> bool
    val perfect_square : t -> bool
    val log2 : t -> int
    val log2up : t -> int
    val size : t -> int
    val extract : t -> int -> int -> t
    val signed_extract : t -> int -> int -> t
    val to_bits : t -> string
    val of_bits : string -> t
    val random_int : ?rng:Stdlib.Random.State.t -> t -> t
    val random_bits : ?rng:Stdlib.Random.State.t -> int -> t
    val random_int_gen : fill:(bytes -> int -> int -> unit) -> t -> t
    val random_bits_gen : fill:(bytes -> int -> int -> unit) -> int -> t
    val (~-) : t -> t
    val (~+) : t -> t
    val (+) : t -> t -> t
    val (-) : t -> t -> t
    val (*) : t -> t -> t
    val (land) : t -> t -> t
    val (lor) : t -> t -> t
    val (lxor) : t -> t -> t
    val (~!) : t -> t
    val (lsl) : t -> int -> t
    val (asr) : t -> int -> t
    val (~$) : int -> t
    val (**) : t -> int -> t
    module Compare = Z.Compare
    val version : string
    val round_to_float : t -> bool -> float
    val protect : ('a -> 'b) -> 'a -> 'b option

    None instead of throwing Division_by_zero | Invalid_argument _ | Z.Overflow

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val div : t -> t -> t option
    val rem : t -> t -> t option
    val div_rem : t -> t -> (t * t) option
    val cdiv : t -> t -> t option
    val fdiv : t -> t -> t option
    val ediv_rem : t -> t -> (t * t) option
    val ediv : t -> t -> t option
    val erem : t -> t -> t option
    val divexact : t -> t -> t option
    val gcd : t -> t -> t option
    val gcdext : t -> t -> (t * t * t) option
    val lcm : t -> t -> t option
    val powm : t -> t -> (t -> t) option
    val powm_sec : t -> t -> (t -> t) option
    val invert : t -> t -> t option
    val (/) : t -> t -> t option
    val (/>) : t -> t -> t option
    val (/<) : t -> t -> t option
    val (/|) : t -> t -> t option
    val (mod) : t -> t -> t option
    \ No newline at end of file +ZSafe (infer.Pulselib.ZSafe)

    Module Pulselib.ZSafe

    include module type of struct include Z end
    type t = Z.t
    exception Overflow
    val zero : t
    val one : t
    val minus_one : t
    val of_int : int -> t
    val of_int32 : int32 -> t
    val of_int64 : int64 -> t
    val of_nativeint : nativeint -> t
    val of_int32_unsigned : int32 -> t
    val of_int64_unsigned : int64 -> t
    val of_nativeint_unsigned : nativeint -> t
    val of_float : float -> t
    val of_string : string -> t
    val of_substring : string -> pos:int -> len:int -> t
    val of_string_base : int -> string -> t
    val of_substring_base : int -> string -> pos:int -> len:int -> t
    val succ : t -> t
    val pred : t -> t
    val abs : t -> t
    val neg : t -> t
    val add : t -> t -> t
    val sub : t -> t -> t
    val mul : t -> t -> t
    val divisible : t -> t -> bool
    val congruent : t -> t -> t -> bool
    val logand : t -> t -> t
    val logor : t -> t -> t
    val logxor : t -> t -> t
    val lognot : t -> t
    val shift_left : t -> int -> t
    val shift_right : t -> int -> t
    val shift_right_trunc : t -> int -> t
    val numbits : t -> int
    val trailing_zeros : t -> int
    val testbit : t -> int -> bool
    val popcount : t -> int
    val hamdist : t -> t -> int
    val to_int : t -> int
    val to_int32 : t -> int32
    val to_int64 : t -> int64
    val to_nativeint : t -> nativeint
    val to_int32_unsigned : t -> int32
    val to_int64_unsigned : t -> int64
    val to_nativeint_unsigned : t -> nativeint
    val to_float : t -> float
    val to_string : t -> string
    val format : string -> t -> string
    val fits_int : t -> bool
    val fits_int32 : t -> bool
    val fits_int64 : t -> bool
    val fits_nativeint : t -> bool
    val fits_int32_unsigned : t -> bool
    val fits_int64_unsigned : t -> bool
    val fits_nativeint_unsigned : t -> bool
    val print : t -> unit
    val output : Stdlib.out_channel -> t -> unit
    val sprint : unit -> t -> string
    val bprint : Stdlib.Buffer.t -> t -> unit
    val pp_print : Stdlib.Format.formatter -> t -> unit
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val leq : t -> t -> bool
    val geq : t -> t -> bool
    val lt : t -> t -> bool
    val gt : t -> t -> bool
    val sign : t -> int
    val min : t -> t -> t
    val max : t -> t -> t
    val is_even : t -> bool
    val is_odd : t -> bool
    val hash : t -> int
    val probab_prime : t -> int -> int
    val nextprime : t -> t
    val jacobi : t -> t -> int
    val legendre : t -> t -> int
    val kronecker : t -> t -> int
    val remove : t -> t -> t * int
    val fac : int -> t
    val fac2 : int -> t
    val facM : int -> int -> t
    val primorial : int -> t
    val bin : t -> int -> t
    val fib : int -> t
    val lucnum : int -> t
    val pow : t -> int -> t
    val sqrt : t -> t
    val sqrt_rem : t -> t * t
    val root : t -> int -> t
    val rootrem : t -> int -> t * t
    val perfect_power : t -> bool
    val perfect_square : t -> bool
    val log2 : t -> int
    val log2up : t -> int
    val size : t -> int
    val extract : t -> int -> int -> t
    val signed_extract : t -> int -> int -> t
    val to_bits : t -> string
    val of_bits : string -> t
    val random_int : ?rng:Stdlib.Random.State.t -> t -> t
    val random_bits : ?rng:Stdlib.Random.State.t -> int -> t
    val random_int_gen : fill:(bytes -> int -> int -> unit) -> t -> t
    val random_bits_gen : fill:(bytes -> int -> int -> unit) -> int -> t
    val (~-) : t -> t
    val (~+) : t -> t
    val (+) : t -> t -> t
    val (-) : t -> t -> t
    val (*) : t -> t -> t
    val (land) : t -> t -> t
    val (lor) : t -> t -> t
    val (lxor) : t -> t -> t
    val (~!) : t -> t
    val (lsl) : t -> int -> t
    val (asr) : t -> int -> t
    val (~$) : int -> t
    val (**) : t -> int -> t
    module Compare = Z.Compare
    val version : string
    val round_to_float : t -> bool -> float
    val protect : ('a -> 'b) -> 'a -> 'b option

    None instead of throwing Division_by_zero | Invalid_argument _ | Z.Overflow

    val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
    val div : t -> t -> t option
    val rem : t -> t -> t option
    val div_rem : t -> t -> (t * t) option
    val cdiv : t -> t -> t option
    val fdiv : t -> t -> t option
    val ediv_rem : t -> t -> (t * t) option
    val ediv : t -> t -> t option
    val erem : t -> t -> t option
    val divexact : t -> t -> t option
    val gcd : t -> t -> t option
    val gcdext : t -> t -> (t * t * t) option
    val lcm : t -> t -> t option
    val powm : t -> t -> (t -> t) option
    val powm_sec : t -> t -> (t -> t) option
    val invert : t -> t -> t option
    val (/) : t -> t -> t option
    val (/>) : t -> t -> t option
    val (/<) : t -> t -> t option
    val (/|) : t -> t -> t option
    val (mod) : t -> t -> t option
    diff --git a/website/static/odoc/next/infer/Pulselib/index.html b/website/static/odoc/next/infer/Pulselib/index.html index 5d517167e8e..358829f291e 100644 --- a/website/static/odoc/next/infer/Pulselib/index.html +++ b/website/static/odoc/next/infer/Pulselib/index.html @@ -1,2 +1,2 @@ -Pulselib (infer.Pulselib)

    Module Pulselib

    module Pulse : sig ... end
    module PulseAbductiveDecompiler : sig ... end
    module PulseAbductiveDomain : sig ... end
    module PulseAbstractValue : sig ... end
    module PulseAccess : sig ... end
    module PulseAccessResult : sig ... end
    module PulseArithmetic : sig ... end
    module PulseAttribute : sig ... end
    module PulseBaseAddressAttributes : sig ... end
    module PulseBaseDomain : sig ... end
    module PulseBaseMemory : sig ... end
    module PulseBaseStack : sig ... end
    module PulseBasicInterface : sig ... end

    Basic Pulse modules that are safe to use in any module

    module PulseCItv : sig ... end
    module PulseCallEvent : sig ... end
    module PulseCallOperations : sig ... end
    module PulseCanonValue : sig ... end
    module PulseCheapCopyTypes : sig ... end
    module PulseContext : sig ... end
    module PulseDecompiler : sig ... end
    module PulseDecompilerExpr : sig ... end
    module PulseDiagnostic : sig ... end
    module PulseDomainInterface : sig ... end
    module PulseExecutionDomain : sig ... end
    module PulseFormula : sig ... end
    module PulseInterproc : sig ... end
    module PulseInvalidation : sig ... end
    module PulseLatentIssue : sig ... end
    module PulseLoadInstrModels : sig ... end
    module PulseModels : sig ... end
    module PulseModelsAndroid : sig ... end
    module PulseModelsC : sig ... end
    module PulseModelsCSharp : sig ... end
    module PulseModelsCpp : sig ... end
    module PulseModelsDSL : sig ... end
    module PulseModelsErlang : sig ... end
    module PulseModelsHack : sig ... end
    module PulseModelsImport : sig ... end
    module PulseModelsJava : sig ... end
    module PulseModelsLocks : sig ... end
    module PulseModelsObjC : sig ... end
    module PulseModelsOptional : sig ... end
    module PulseModelsSmartPointers : sig ... end
    module PulseNonDisjunctiveDomain : sig ... end
    module PulseNonDisjunctiveOperations : sig ... end
    module PulseOperationResult : sig ... end
    module PulseOperations : sig ... end
    module PulsePathContext : sig ... end
    module PulseRefCounting : sig ... end
    module PulseReport : sig ... end
    module PulseResult : sig ... end
    module PulseRetainCycleChecker : sig ... end
    module PulseSatUnsat : sig ... end
    module PulseSkippedCalls : sig ... end
    module PulseSpecialization : sig ... end
    module PulseSummary : sig ... end
    module PulseTaintConfig : sig ... end
    module PulseTaintItem : sig ... end
    module PulseTaintItemMatcher : sig ... end
    module PulseTaintOperations : sig ... end
    module PulseTimestamp : sig ... end
    module PulseTopl : sig ... end
    module PulseTrace : sig ... end
    module PulseTransitiveAccessChecker : sig ... end
    module PulseTransitiveInfo : sig ... end
    module PulseUninitBlocklist : sig ... end
    module PulseValueHistory : sig ... end
    module PulseValueOrigin : sig ... end
    module QSafeCapped : sig ... end
    module ZSafe : sig ... end
    \ No newline at end of file +Pulselib (infer.Pulselib)

    Module Pulselib

    module Pulse : sig ... end
    module PulseAbductiveDecompiler : sig ... end
    module PulseAbductiveDomain : sig ... end
    module PulseAbstractValue : sig ... end
    module PulseAccess : sig ... end
    module PulseAccessResult : sig ... end
    module PulseArithmetic : sig ... end
    module PulseAttribute : sig ... end
    module PulseBaseAddressAttributes : sig ... end
    module PulseBaseDomain : sig ... end
    module PulseBaseMemory : sig ... end
    module PulseBaseStack : sig ... end
    module PulseBasicInterface : sig ... end

    Basic Pulse modules that are safe to use in any module

    module PulseCItv : sig ... end
    module PulseCallEvent : sig ... end
    module PulseCallOperations : sig ... end
    module PulseCanonValue : sig ... end
    module PulseCheapCopyTypes : sig ... end
    module PulseContext : sig ... end
    module PulseDecompiler : sig ... end
    module PulseDecompilerExpr : sig ... end
    module PulseDiagnostic : sig ... end
    module PulseDomainInterface : sig ... end
    module PulseExecutionDomain : sig ... end
    module PulseFormula : sig ... end
    module PulseInterproc : sig ... end
    module PulseInvalidation : sig ... end
    module PulseLatentIssue : sig ... end
    module PulseLoadInstrModels : sig ... end
    module PulseModels : sig ... end
    module PulseModelsAndroid : sig ... end
    module PulseModelsC : sig ... end
    module PulseModelsCSharp : sig ... end
    module PulseModelsCpp : sig ... end
    module PulseModelsDSL : sig ... end
    module PulseModelsErlang : sig ... end
    module PulseModelsHack : sig ... end
    module PulseModelsImport : sig ... end
    module PulseModelsJava : sig ... end
    module PulseModelsLocks : sig ... end
    module PulseModelsObjC : sig ... end
    module PulseModelsOptional : sig ... end
    module PulseModelsSmartPointers : sig ... end
    module PulseMutualRecursion : sig ... end
    module PulseNonDisjunctiveDomain : sig ... end
    module PulseNonDisjunctiveOperations : sig ... end
    module PulseOperationResult : sig ... end
    module PulseOperations : sig ... end
    module PulsePathContext : sig ... end
    module PulsePp : sig ... end
    module PulseRefCounting : sig ... end
    module PulseReport : sig ... end
    module PulseResult : sig ... end
    module PulseRetainCycleChecker : sig ... end
    module PulseSatUnsat : sig ... end
    module PulseSkippedCalls : sig ... end
    module PulseSpecialization : sig ... end
    module PulseSummary : sig ... end
    module PulseTaintConfig : sig ... end
    module PulseTaintItem : sig ... end
    module PulseTaintItemMatcher : sig ... end
    module PulseTaintOperations : sig ... end
    module PulseTimestamp : sig ... end
    module PulseTopl : sig ... end
    module PulseTrace : sig ... end
    module PulseTransitiveAccessChecker : sig ... end
    module PulseTransitiveInfo : sig ... end
    module PulseUninitBlocklist : sig ... end
    module PulseValueHistory : sig ... end
    module PulseValueOrigin : sig ... end
    module QSafeCapped : sig ... end
    module ZSafe : sig ... end
    diff --git a/website/static/odoc/next/infer/PythonFrontend/FFI/Code/index.html b/website/static/odoc/next/infer/PythonFrontend/FFI/Code/index.html index e218febe651..96799df3aea 100644 --- a/website/static/odoc/next/infer/PythonFrontend/FFI/Code/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/FFI/Code/index.html @@ -1,2 +1,2 @@ -Code (infer.PythonFrontend.FFI.Code)

    Module FFI.Code

    type t = private {
    1. co_name : string;
    2. co_filename : string;
    3. co_flags : int;
    4. co_cellvars : string array;
      (*

      A tuple containing the names of nonlocal variables. These are the local variables of a function accessed by its inner functions.

      *)
    5. co_freevars : string array;
      (*

      A tuple containing the names of free variables. Free variables are the local variables of an outer function which are accessed by its inner function.

      *)
    6. co_names : string array;
      (*

      A tuple containing the names used by the bytecode which can be global variables, functions, and classes or also attributes loaded from objects. There are "global names". Local variables & the like are going in other arrays

      *)
    7. co_varnames : string array;
      (*

      A tuple containing the local names used by the bytecode (arguments first, then the local variables).

      *)
    8. co_nlocals : int;
    9. co_argcount : int;
    10. co_firstlineno : int;
    11. co_posonlyargcount : int;
    12. co_stacksize : int;
    13. co_kwonlyargcount : int;
    14. co_lnotab : char array;
    15. co_consts : Constant.t array;
      (*

      A tuple containing the literals used by the bytecode. By experience, it is only int, string, tuples, None or code objects

      *)
    16. instructions : Instruction.t list;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val full_show : t -> string
    val is_closure : t -> bool
    val get_arguments : t -> string array
    val get_locals : t -> string array
    \ No newline at end of file +Code (infer.PythonFrontend.FFI.Code)

    Module FFI.Code

    type t = private {
    1. co_name : string;
    2. co_filename : string;
    3. co_flags : int;
    4. co_cellvars : string array;
      (*

      A tuple containing the names of nonlocal variables. These are the local variables of a function accessed by its inner functions.

      *)
    5. co_freevars : string array;
      (*

      A tuple containing the names of free variables. Free variables are the local variables of an outer function which are accessed by its inner function.

      *)
    6. co_names : string array;
      (*

      A tuple containing the names used by the bytecode which can be global variables, functions, and classes or also attributes loaded from objects. There are "global names". Local variables & the like are going in other arrays

      *)
    7. co_varnames : string array;
      (*

      A tuple containing the local names used by the bytecode (arguments first, then the local variables).

      *)
    8. co_nlocals : int;
    9. co_argcount : int;
    10. co_firstlineno : int;
    11. co_posonlyargcount : int;
    12. co_stacksize : int;
    13. co_kwonlyargcount : int;
    14. co_lnotab : char array;
    15. co_consts : Constant.t array;
      (*

      A tuple containing the literals used by the bytecode. By experience, it is only int, string, tuples, None or code objects

      *)
    16. instructions : Instruction.t list;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val full_show : t -> string
    val is_closure : t -> bool
    val get_arguments : t -> string array
    val get_locals : t -> string array
    diff --git a/website/static/odoc/next/infer/PythonFrontend/FFI/Constant/index.html b/website/static/odoc/next/infer/PythonFrontend/FFI/Constant/index.html index 24470ee52e5..6ab745870cf 100644 --- a/website/static/odoc/next/infer/PythonFrontend/FFI/Constant/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/FFI/Constant/index.html @@ -1,2 +1,2 @@ -Constant (infer.PythonFrontend.FFI.Constant)

    Module FFI.Constant

    type t = private
    1. | PYCBool of bool
    2. | PYCInt of Z.t
    3. | PYCFloat of float
    4. | PYCComplex of {
      1. real : float;
      2. imag : float;
      }
    5. | PYCString of string
    6. | PYCInvalidUnicode of int array
    7. | PYCBytes of bytes
    8. | PYCTuple of t array
    9. | PYCFrozenSet of t list
    10. | PYCCode of Code.t
    11. | PYCNone
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val show : ?full:bool -> t -> string

    Only shows the name of a PYCCode constant if full is false. Otherwise, shows everything.

    val pp : Stdlib.Format.formatter -> t -> unit
    val as_code : t -> Code.t option
    val as_name : t -> string option
    \ No newline at end of file +Constant (infer.PythonFrontend.FFI.Constant)

    Module FFI.Constant

    type t = private
    1. | PYCBool of bool
    2. | PYCInt of Z.t
    3. | PYCFloat of float
    4. | PYCComplex of {
      1. real : float;
      2. imag : float;
      }
    5. | PYCString of string
    6. | PYCInvalidUnicode of int array
    7. | PYCBytes of bytes
    8. | PYCTuple of t array
    9. | PYCFrozenSet of t list
    10. | PYCCode of Code.t
    11. | PYCNone
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val show : ?full:bool -> t -> string

    Only shows the name of a PYCCode constant if full is false. Otherwise, shows everything.

    val pp : Stdlib.Format.formatter -> t -> unit
    val as_code : t -> Code.t option
    val as_name : t -> string option
    diff --git a/website/static/odoc/next/infer/PythonFrontend/FFI/Error/index.html b/website/static/odoc/next/infer/PythonFrontend/FFI/Error/index.html index caed1d3a3a5..d7f85ac431d 100644 --- a/website/static/odoc/next/infer/PythonFrontend/FFI/Error/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/FFI/Error/index.html @@ -1,2 +1,2 @@ -Error (infer.PythonFrontend.FFI.Error)

    Module FFI.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    \ No newline at end of file +Error (infer.PythonFrontend.FFI.Error)

    Module FFI.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/FFI/Instruction/index.html b/website/static/odoc/next/infer/PythonFrontend/FFI/Instruction/index.html index 88a6021348a..6ac049998a6 100644 --- a/website/static/odoc/next/infer/PythonFrontend/FFI/Instruction/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/FFI/Instruction/index.html @@ -1,2 +1,2 @@ -Instruction (infer.PythonFrontend.FFI.Instruction)

    Module FFI.Instruction

    type t = private {
    1. opname : string;
    2. opcode : int;
    3. arg : int;
    4. argval : Constant.t;
    5. offset : int;
    6. starts_line : int option;
    7. is_jump_target : bool;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    \ No newline at end of file +Instruction (infer.PythonFrontend.FFI.Instruction)

    Module FFI.Instruction

    type t = private {
    1. opname : string;
    2. opcode : int;
    3. arg : int;
    4. argval : Constant.t;
    5. offset : int;
    6. starts_line : int option;
    7. is_jump_target : bool;
    }
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    diff --git a/website/static/odoc/next/infer/PythonFrontend/FFI/index.html b/website/static/odoc/next/infer/PythonFrontend/FFI/index.html index 81147d8672b..60daba943d8 100644 --- a/website/static/odoc/next/infer/PythonFrontend/FFI/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/FFI/index.html @@ -1,8 +1,8 @@ -FFI (infer.PythonFrontend.FFI)

    Module PythonFrontend.FFI

    This file is about translating Python3.8 code objects into an OCaml representation. Some interesting readings:

    module Error : sig ... end
    module Constant : sig ... end
    module Code : sig ... end
    module Instruction : sig ... end
    val from_string : - source:string -> - filename:string -> +FFI (infer.PythonFrontend.FFI)

    Module PythonFrontend.FFI

    This file is about translating Python3.8 code objects into an OCaml representation. Some interesting readings:

    module Error : sig ... end
    module Constant : sig ... end
    module Code : sig ... end
    module Instruction : sig ... end
    val from_string : + source:string -> + filename:string -> (Code.t, Error.t) IStdlib.IStd.result

    Compiles the python program describes by source into a Code.t object

    val from_file : - is_binary:bool -> + is_binary:bool -> string -> - (Code.t, Error.t) IStdlib.IStd.result

    Generates a Code.t object from a file. If the file is a source file, the builtin compile from Python is called to generate the bytecode. If the file is already a bytecode file, it is used right away using the Python module Marshal

    \ No newline at end of file + (Code.t, Error.t) IStdlib.IStd.result

    Generates a Code.t object from a file. If the file is a source file, the builtin compile from Python is called to generate the bytecode. If the file is already a bytecode file, it is used right away using the Python module Marshal

    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Compare/index.html b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Compare/index.html index 97c56d0910a..088f2e8b075 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Compare/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Compare/index.html @@ -1,2 +1,2 @@ -Compare (infer.PythonFrontend.PyBuiltin.Compare)

    Module PyBuiltin.Compare

    type t =
    1. | Lt
    2. | Le
    3. | Eq
    4. | Neq
    5. | Gt
    6. | Ge
    7. | In
    8. | NotIn
    9. | Is
    10. | IsNot
    11. | Exception
    12. | BAD
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    val to_string : t -> string
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Compare (infer.PythonFrontend.PyBuiltin.Compare)

    Module PyBuiltin.Compare

    type t =
    1. | Lt
    2. | Le
    3. | Eq
    4. | Neq
    5. | Gt
    6. | Ge
    7. | In
    8. | NotIn
    9. | Is
    10. | IsNot
    11. | Exception
    12. | BAD
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_enumerate_lib.Enumerable.S with type t := t
    val all : t list
    val to_string : t -> string
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Set/index.html b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Set/index.html index 4df41ef1369..5d790477ae8 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Set/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.PythonFrontend.PyBuiltin.Set)

    Module PyBuiltin.Set

    type t

    This module keeps track of the builtins used by a code unit. Only the necessary Textual declarations are generated. Note that primitive wrappers are always generated (python_int, ...)

    val supported_builtins : unit -> string list
    val empty : t
    val to_textual : t -> Textuallib.Textual.Module.decl list

    Encode a set of builtin declarations into Textual declarations

    val register : t -> builtin -> t
    \ No newline at end of file +Set (infer.PythonFrontend.PyBuiltin.Set)

    Module PyBuiltin.Set

    type t

    This module keeps track of the builtins used by a code unit. Only the necessary Textual declarations are generated. Note that primitive wrappers are always generated (python_int, ...)

    val supported_builtins : unit -> string list
    val empty : t
    val to_textual : t -> Textuallib.Textual.Module.decl list

    Encode a set of builtin declarations into Textual declarations

    val register : t -> builtin -> t
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/index.html b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/index.html index 58bfac698aa..a1ea40171d0 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyBuiltin/index.html @@ -1,2 +1,2 @@ -PyBuiltin (infer.PythonFrontend.PyBuiltin)

    Module PythonFrontend.PyBuiltin

    module Compare : sig ... end
    type binary_op =
    1. | Add
    2. | And
    3. | FloorDivide
    4. | LShift
    5. | MatrixMultiply
    6. | Modulo
    7. | Multiply
    8. | Or
    9. | Power
    10. | RShift
    11. | Subtract
    12. | TrueDivide
    13. | Xor
    val compare_binary_op : binary_op -> binary_op -> int
    type unary_op =
    1. | Positive
    2. | Negative
    3. | Not
    4. | Invert
    val compare_unary_op : unary_op -> unary_op -> int
    type builder =
    1. | List
    2. | Set
    3. | Tuple
    4. | Map
    5. | String
    6. | Slice
    val compare_builder : builder -> builder -> int
    type textual =
    1. | IsTrue
    2. | Binary of binary_op
    3. | Inplace of binary_op
    4. | Unary of unary_op
    5. | PythonCall
    6. | PythonCallKW
    7. | PythonKWArg
    8. | PythonClass
    9. | PythonClassName
    10. | PythonCode
    11. | PythonIter
    12. | PythonIterNext
    13. | PythonBuild of builder
    14. | PythonIndex
    15. | PythonSubscriptGet
    16. | PythonSubscriptSet
    17. | PythonFormatRepr
    18. | PythonFormatStr
    19. | PythonFormatAscii
    20. | PythonFormat
    21. | CompareOp of Compare.t
    val compare_textual : textual -> textual -> int
    type builtin
    val textual : textual -> builtin
    val of_string : string -> builtin option
    module Set : sig ... end
    \ No newline at end of file +PyBuiltin (infer.PythonFrontend.PyBuiltin)

    Module PythonFrontend.PyBuiltin

    module Compare : sig ... end
    type binary_op =
    1. | Add
    2. | And
    3. | FloorDivide
    4. | LShift
    5. | MatrixMultiply
    6. | Modulo
    7. | Multiply
    8. | Or
    9. | Power
    10. | RShift
    11. | Subtract
    12. | TrueDivide
    13. | Xor
    val compare_binary_op : binary_op -> binary_op -> int
    type unary_op =
    1. | Positive
    2. | Negative
    3. | Not
    4. | Invert
    val compare_unary_op : unary_op -> unary_op -> int
    type builder =
    1. | List
    2. | Set
    3. | Tuple
    4. | Map
    5. | String
    6. | Slice
    val compare_builder : builder -> builder -> int
    type textual =
    1. | IsTrue
    2. | Binary of binary_op
    3. | Inplace of binary_op
    4. | Unary of unary_op
    5. | PythonCall
    6. | PythonCallKW
    7. | PythonKWArg
    8. | PythonClass
    9. | PythonClassName
    10. | PythonCode
    11. | PythonIter
    12. | PythonIterNext
    13. | PythonBuild of builder
    14. | PythonIndex
    15. | PythonSubscriptGet
    16. | PythonSubscriptSet
    17. | PythonFormatRepr
    18. | PythonFormatStr
    19. | PythonFormatAscii
    20. | PythonFormat
    21. | CompareOp of Compare.t
    val compare_textual : textual -> textual -> int
    type builtin
    val textual : textual -> builtin
    val of_string : string -> builtin option
    module Set : sig ... end
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/Error/index.html b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/Error/index.html index d1baaf9f7f3..08fb8fdb423 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/Error/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/Error/index.html @@ -1,2 +1,2 @@ -Error (infer.PythonFrontend.PyClassDecl.Error)

    Module PyClassDecl.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    \ No newline at end of file +Error (infer.PythonFrontend.PyClassDecl.Error)

    Module PyClassDecl.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/State/index.html b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/State/index.html index 522d81c08ec..0fcb013a8b0 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/State/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/State/index.html @@ -1,2 +1,2 @@ -State (infer.PythonFrontend.PyClassDecl.State)

    Module PyClassDecl.State

    type method_info = private {
    1. name : string;
    2. raw_qualified_name : string;
    3. code : FFI.Constant.t;
    4. signature : PyCommon.signature;
    5. defaults : PyEnv.DataStack.cell list;
    6. is_static : bool;
    7. is_abstract : bool;
    8. flags : PyCommon.MakeFunctionFlags.t;
    }
    type t = private {
    1. members : PyCommon.annotated_name list;
    2. methods : method_info list;
    3. static_methods : method_info list;
    4. has_annotations : bool;
    5. has_init : PyCommon.annotated_name list option;
    6. has_new : PyCommon.annotated_name list option;
    }
    \ No newline at end of file +State (infer.PythonFrontend.PyClassDecl.State)

    Module PyClassDecl.State

    type method_info = private {
    1. name : string;
    2. raw_qualified_name : string;
    3. code : FFI.Constant.t;
    4. signature : PyCommon.signature;
    5. defaults : PyEnv.DataStack.cell list;
    6. is_static : bool;
    7. is_abstract : bool;
    8. flags : PyCommon.MakeFunctionFlags.t;
    }
    type t = private {
    1. members : PyCommon.annotated_name list;
    2. methods : method_info list;
    3. static_methods : method_info list;
    4. has_annotations : bool;
    5. has_init : PyCommon.annotated_name list option;
    6. has_new : PyCommon.annotated_name list option;
    }
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/index.html b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/index.html index 455faea3bf3..079708458e8 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyClassDecl/index.html @@ -1,6 +1,6 @@ -PyClassDecl (infer.PythonFrontend.PyClassDecl)

    Module PythonFrontend.PyClassDecl

    module Error : sig ... end
    module State : sig ... end
    val parse_class_declaration : +PyClassDecl (infer.PythonFrontend.PyClassDecl)

    Module PythonFrontend.PyClassDecl

    module Error : sig ... end
    module State : sig ... end
    val parse_class_declaration : FFI.Code.t -> string -> FFI.Instruction.t list -> - (State.t, Error.kind) IStdlib.IStd.result
    \ No newline at end of file + (State.t, Error.kind) IStdlib.IStd.result
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyCommon/ABC/index.html b/website/static/odoc/next/infer/PythonFrontend/PyCommon/ABC/index.html index 22a076d4007..4e81efc256f 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyCommon/ABC/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyCommon/ABC/index.html @@ -1,2 +1,2 @@ -ABC (infer.PythonFrontend.PyCommon.ABC)

    Module PyCommon.ABC

    val abstract_method : string
    \ No newline at end of file +ABC (infer.PythonFrontend.PyCommon.ABC)

    Module PyCommon.ABC

    val abstract_method : string
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyCommon/Ident/index.html b/website/static/odoc/next/infer/PythonFrontend/PyCommon/Ident/index.html index cac2881f5ef..ec51a59ae75 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyCommon/Ident/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyCommon/Ident/index.html @@ -1,13 +1,13 @@ -Ident (infer.PythonFrontend.PyCommon.Ident)

    Module PyCommon.Ident

    type t

    Python uses qualified identifiers such as sys.exit. Locally defined names don't have any prefix, but we still add some in textual to deal with ambiguity. The only identifiers without any prefix are local variables.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val root : t -> t

    Strip the whole path of an identifier, only keeping its root

    val from_string : - ?on:char -> - ?global:bool -> - ?loc:Textuallib.Textual.Location.t -> +Ident (infer.PythonFrontend.PyCommon.Ident)

    Module PyCommon.Ident

    type t

    Python uses qualified identifiers such as sys.exit. Locally defined names don't have any prefix, but we still add some in textual to deal with ambiguity. The only identifiers without any prefix are local variables.

    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val root : t -> t

    Strip the whole path of an identifier, only keeping its root

    val from_string : + ?on:char -> + ?global:bool -> + ?loc:Textuallib.Textual.Location.t -> string -> t option
    val pp : Stdlib.Format.formatter -> t -> unit
    val fold : - f_root: - ('a -> global:bool -> loc:Textuallib.Textual.Location.t -> string -> 'b) -> - f_path:(string -> 'b -> 'b) -> - init:'a -> + f_root: + ('a -> global:bool -> loc:Textuallib.Textual.Location.t -> string -> 'b) -> + f_path:(string -> 'b -> 'b) -> + init:'a -> t -> - 'b
    val to_string : sep:string -> t -> string
    val to_qualified_procname : t -> Textuallib.Textual.QualifiedProcName.t
    val to_type_name : ?static:bool -> t -> Textuallib.Textual.TypeName.t
    val to_proc_name : t -> Textuallib.Textual.ProcName.t
    val to_constructor : t -> Textuallib.Textual.ProcName.t
    val to_typ : t -> Textuallib.Textual.Typ.t
    val is_primitive_type : t -> bool
    val to_var_name : t -> Textuallib.Textual.VarName.t
    val mk_unknown_ident : ?loc:Textuallib.Textual.Location.t -> string -> t

    Wrap a variable name into a special enclosing class when a global's origin can't be found.

    val extend_unknown_ident : t -> t

    Wrap an existing identifier into a special enclosing class when a global's origin can't be found.

    val mk : ?global:bool -> ?loc:Textuallib.Textual.Location.t -> string -> t
    val extend : prefix:t -> string -> t
    val pop : t -> string * t option
    val mk_builtin : string -> t
    val is_imported_ABC : t -> bool

    Checks if an id is the standard abc.ABC metaclass name

    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file + 'b
    val to_string : sep:string -> t -> string
    val to_qualified_procname : t -> Textuallib.Textual.QualifiedProcName.t
    val to_type_name : ?static:bool -> t -> Textuallib.Textual.TypeName.t
    val to_proc_name : t -> Textuallib.Textual.ProcName.t
    val to_constructor : t -> Textuallib.Textual.ProcName.t
    val to_typ : t -> Textuallib.Textual.Typ.t
    val is_primitive_type : t -> bool
    val to_var_name : t -> Textuallib.Textual.VarName.t
    val mk_unknown_ident : ?loc:Textuallib.Textual.Location.t -> string -> t

    Wrap a variable name into a special enclosing class when a global's origin can't be found.

    val extend_unknown_ident : t -> t

    Wrap an existing identifier into a special enclosing class when a global's origin can't be found.

    val mk : ?global:bool -> ?loc:Textuallib.Textual.Location.t -> string -> t
    val extend : prefix:t -> string -> t
    val pop : t -> string * t option
    val mk_builtin : string -> t
    val is_imported_ABC : t -> bool

    Checks if an id is the standard abc.ABC metaclass name

    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyCommon/MakeFunctionFlags/index.html b/website/static/odoc/next/infer/PythonFrontend/PyCommon/MakeFunctionFlags/index.html index 6dce92ff0ae..8efc587c17c 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyCommon/MakeFunctionFlags/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyCommon/MakeFunctionFlags/index.html @@ -1,2 +1,2 @@ -MakeFunctionFlags (infer.PythonFrontend.PyCommon.MakeFunctionFlags)

    Module PyCommon.MakeFunctionFlags

    Flags used by MAKE_FUNCTION

    type flag =
    1. | DefaultValues
    2. | DictDefaultValues
    3. | Annotations
    4. | Closure
    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val mk : int -> t
    val mem : t -> flag -> bool
    val set : t -> flag -> t
    val unset : t -> flag -> t
    \ No newline at end of file +MakeFunctionFlags (infer.PythonFrontend.PyCommon.MakeFunctionFlags)

    Module PyCommon.MakeFunctionFlags

    Flags used by MAKE_FUNCTION

    type flag =
    1. | DefaultValues
    2. | DictDefaultValues
    3. | Annotations
    4. | Closure
    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    val mk : int -> t
    val mem : t -> flag -> bool
    val set : t -> flag -> t
    val unset : t -> flag -> t
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyCommon/index.html b/website/static/odoc/next/infer/PythonFrontend/PyCommon/index.html index fc8cdde5e8d..bd84b20f489 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyCommon/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyCommon/index.html @@ -1,19 +1,19 @@ -PyCommon (infer.PythonFrontend.PyCommon)

    Module PythonFrontend.PyCommon

    module SMap : IStdlib.IStd.Caml.Map.S with type key = string
    module SSet : IStdlib.IStd.Caml.Set.S with type elt = string
    module IMap : IStdlib.IStd.Caml.Map.S with type key = int
    val proc_name : - ?loc:Textuallib.Textual.Location.t -> +PyCommon (infer.PythonFrontend.PyCommon)

    Module PythonFrontend.PyCommon

    module SMap : IStdlib.IStd.Caml.Map.S with type key = string
    module SSet : IStdlib.IStd.Caml.Set.S with type elt = string
    module IMap : IStdlib.IStd.Caml.Map.S with type key = int
    val mk_type : string -> Textuallib.Textual.Typ.t
    val builtin_name : string -> Textuallib.Textual.QualifiedProcName.t

    Helper function to encode known builtin names correctly

    Encoding of Python int type. Since Python integers are of arbitrary precision, they are not modeled directly with int.

    Encoding of Python float type.

    Encoding of Python str type.

    Encoding of Python bytes type.

    Encoding of Python bool type.

    Encoding of Python tuple type. It is the raw "untyped" one where every item is of type object.

    object is the top type of Python. It helps us when no type information is available.

    code is a builtin Python type to describe any code (function, class, ...) object

    Like pyCode but for class creation

    val pyIterItem : Textuallib.Textual.Typ.t

    Wrapper type to implement next access on an iterator. Declared as pyIterItemStruct

    val py_iter_item_has_item : Textuallib.Textual.qualified_fieldname
    val py_iter_item_next_item : Textuallib.Textual.qualified_fieldname
    val pyIterItemStruct : Textuallib.Textual.Struct.t

    Textual structure with two fields. has_item indicates if something was read from the iterator or if it was empty. If has_item is true, next_item holds the value read from the iterator.

    Textual encoding of the primitive Python type int

    Textual encoding of the primitive Python type str

    Textual encoding of the primitive Python type bytes

    Textual encoding of the primitive Python type bool

    Textual encoding of the primitive Python type float

    Textual encoding of the primitive Python type None

    Python's builtin list type

    Python's builtin map type

    Python's builtin set type

    Python's builtin tuple type

    val mk_int : Z.t -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for literal integers.

    val mk_float : float -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for literal floats.

    val mk_string : string -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for literal strings.

    val get_string : Textuallib.Textual.Exp.t -> string option

    Helper to get back a string built with mk_string

    val get_tuple_as_list : Textuallib.Textual.Exp.t -> - Textuallib.Textual.Exp.t list option

    Helper to get back the inner elements of a python_tuple

    val mk_bytes : bytes -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for literal bytes.

    val mk_bool : bool -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for boolean.

    module Ident : sig ... end
    type annotated_name = {
    1. name : string;
    2. annotation : Ident.t;
    }

    Encoding of some type annotation like x: int

    val pp_annotated_name : Stdlib.Format.formatter -> annotated_name -> unit
    type signature = annotated_name list
    val pp_signature : Stdlib.Format.formatter -> signature -> unit
    val toplevel_function : string
    val static_method : string
    val static_companion : string -> string
    module ABC : sig ... end
    val init__ : string

    Name of the Python initialization method

    val new__ : string

    Name of the Python instantiation method

    val exit : string

    Name of the Python context exit method

    val enter : string

    Name of the Python context enter method

    val return : string

    Name of the binding name of return types of functions / methods

    val class__ : string

    Special name for __class__

    val classcell : string

    Special name for __classcell__

    val annotations : string

    Special name for __annotations__

    val entry : string

    Textual label name for entry points of function we synthesized (constructors, __init__, ...)

    val self : string

    Common name of the self argument in Python

    module MakeFunctionFlags : sig ... end

    Flags used by MAKE_FUNCTION

    \ No newline at end of file + Textuallib.Textual.Exp.t list option

    Helper to get back the inner elements of a python_tuple

    val mk_bytes : bytes -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for literal bytes.

    val mk_bool : bool -> Textuallib.Textual.Exp.t

    Helper function to define typed Textual expression for boolean.

    module Ident : sig ... end
    type annotated_name = {
    1. name : string;
    2. annotation : Ident.t;
    }

    Encoding of some type annotation like x: int

    val pp_annotated_name : Stdlib.Format.formatter -> annotated_name -> unit
    type signature = annotated_name list
    val pp_signature : Stdlib.Format.formatter -> signature -> unit
    val toplevel_function : string
    val static_method : string
    val static_companion : string -> string
    module ABC : sig ... end
    val init__ : string

    Name of the Python initialization method

    val new__ : string

    Name of the Python instantiation method

    val exit : string

    Name of the Python context exit method

    val enter : string

    Name of the Python context enter method

    val return : string

    Name of the binding name of return types of functions / methods

    val class__ : string

    Special name for __class__

    val classcell : string

    Special name for __classcell__

    val annotations : string

    Special name for __annotations__

    val entry : string

    Textual label name for entry points of function we synthesized (constructors, __init__, ...)

    val self : string

    Common name of the self argument in Python

    module MakeFunctionFlags : sig ... end

    Flags used by MAKE_FUNCTION

    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyDebug/index.html b/website/static/odoc/next/infer/PythonFrontend/PyDebug/index.html index 998cb72964d..dec51b4dfb3 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyDebug/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyDebug/index.html @@ -1,2 +1,2 @@ -PyDebug (infer.PythonFrontend.PyDebug)

    Module PythonFrontend.PyDebug

    val p : ('a, Stdlib.Format.formatter, unit, unit) IStdlib.IStd.format4 -> 'a
    val todo : ('a, Stdlib.Format.formatter, unit, unit) IStdlib.IStd.format4 -> 'a
    val enable_debug : unit -> unit
    val disable_debug : unit -> unit
    \ No newline at end of file +PyDebug (infer.PythonFrontend.PyDebug)

    Module PythonFrontend.PyDebug

    val p : ('a, Stdlib.Format.formatter, unit, unit) IStdlib.IStd.format4 -> 'a
    val todo : ('a, Stdlib.Format.formatter, unit, unit) IStdlib.IStd.format4 -> 'a
    val enable_debug : unit -> unit
    val disable_debug : unit -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/DataStack/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/DataStack/index.html index bd0e80181df..26e478601ef 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/DataStack/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/DataStack/index.html @@ -1,2 +1,2 @@ -DataStack (infer.PythonFrontend.PyEnv.DataStack)

    Module PyEnv.DataStack

    In Python, everything is an object, and the interpreter maintains a stack of references to such objects. Pushing and popping on the stack are always references to objets that leave in a heap. There is no need to model this heap, but the data stack is quite important.

    type cell =
    1. | Const of FFI.Constant.t
      (*

      constant from co_consts

      *)
    2. | Name of {
      1. global : bool;
      2. name : string;
      }
      (*

      reference to a name, from co_names.

      *)
    3. | VarName of string
      (*

      reference to a local name, fromco_varnames

      *)
    4. | Temp of T.Ident.t
      (*

      SSA variable

      *)
    5. | Code of {
      1. fun_or_class : bool;
      2. code_name : string;
      3. code : FFI.Code.t;
      }
      (*

      code Python object with its name. It can be a function, class, closure, ...

      *)
    6. | List of PyBuiltin.builder * cell list
      (*

      Light encoding of raw Python tuples/lists.

      *)
    7. | Map of (T.Exp.t * cell) list
      (*

      Light encoding of raw Python maps/dicts.

      *)
    8. | BuiltinBuildClass
      (*

      see Python's LOAD_BUILD_CLASS

      *)
    9. | Import of {
      1. import_path : Ident.t;
      2. from_list : string list;
      }
      (*

      imported module path, with optional names of symbols from that module

      *)
    10. | ImportFrom of {
      1. import_path : Ident.t;
      2. imported_name : string;
      }
      (*

      imported symbol from a module. Must have been loaded via Import first

      *)
    11. | ImportCall of {
      1. id : Ident.t;
      2. loc : T.Location.t;
      }
      (*

      Static call to export definition

      *)
    12. | MethodCall of {
      1. receiver : T.Exp.t;
      2. name : T.QualifiedProcName.t;
      }
      (*

      Virtual call, usually of a method of a class. Could be an access to a closure that is called straight away

      *)
    13. | StaticCall of {
      1. call_name : T.QualifiedProcName.t;
      2. receiver : T.Exp.t option;
      }
      (*

      call to static method in class. Because we turn some method calls into static ones, we have to keep the receiver around, just in case.

      *)
    14. | Super
      (*

      special name to refer to the parent class, like in super().__init__()

      *)
    15. | Path of Ident.t
      (*

      Qualified path for sequence of imports, attribute accesses, ...

      *)
    16. | WithContext of T.Ident.t
      (*

      value to be used for calling __enter__ and __exit__ with the `with context` statement

      *)
    17. | NoException
      (*

      Special NONE symbol pushed by the exception infra to express that no exception has been raised

      *)
    val pp_cell : Stdlib.Format.formatter -> cell -> unit
    val as_code : cell -> FFI.Code.t option
    val as_name : cell -> string option
    val as_id : cell -> Ident.t option
    val is_path : cell -> bool
    val is_no_exception : cell -> bool
    type t = cell list
    \ No newline at end of file +DataStack (infer.PythonFrontend.PyEnv.DataStack)

    Module PyEnv.DataStack

    In Python, everything is an object, and the interpreter maintains a stack of references to such objects. Pushing and popping on the stack are always references to objets that leave in a heap. There is no need to model this heap, but the data stack is quite important.

    type cell =
    1. | Const of FFI.Constant.t
      (*

      constant from co_consts

      *)
    2. | Name of {
      1. global : bool;
      2. name : string;
      }
      (*

      reference to a name, from co_names.

      *)
    3. | VarName of string
      (*

      reference to a local name, fromco_varnames

      *)
    4. | Temp of T.Ident.t
      (*

      SSA variable

      *)
    5. | Code of {
      1. fun_or_class : bool;
      2. code_name : string;
      3. code : FFI.Code.t;
      }
      (*

      code Python object with its name. It can be a function, class, closure, ...

      *)
    6. | List of PyBuiltin.builder * cell list
      (*

      Light encoding of raw Python tuples/lists.

      *)
    7. | Map of (T.Exp.t * cell) list
      (*

      Light encoding of raw Python maps/dicts.

      *)
    8. | BuiltinBuildClass
      (*

      see Python's LOAD_BUILD_CLASS

      *)
    9. | Import of {
      1. import_path : Ident.t;
      2. from_list : string list;
      }
      (*

      imported module path, with optional names of symbols from that module

      *)
    10. | ImportFrom of {
      1. import_path : Ident.t;
      2. imported_name : string;
      }
      (*

      imported symbol from a module. Must have been loaded via Import first

      *)
    11. | ImportCall of {
      1. id : Ident.t;
      2. loc : T.Location.t;
      }
      (*

      Static call to export definition

      *)
    12. | MethodCall of {
      1. receiver : T.Exp.t;
      2. name : T.QualifiedProcName.t;
      }
      (*

      Virtual call, usually of a method of a class. Could be an access to a closure that is called straight away

      *)
    13. | StaticCall of {
      1. call_name : T.QualifiedProcName.t;
      2. receiver : T.Exp.t option;
      }
      (*

      call to static method in class. Because we turn some method calls into static ones, we have to keep the receiver around, just in case.

      *)
    14. | Super
      (*

      special name to refer to the parent class, like in super().__init__()

      *)
    15. | Path of Ident.t
      (*

      Qualified path for sequence of imports, attribute accesses, ...

      *)
    16. | WithContext of T.Ident.t
      (*

      value to be used for calling __enter__ and __exit__ with the `with context` statement

      *)
    17. | NoException
      (*

      Special NONE symbol pushed by the exception infra to express that no exception has been raised

      *)
    val pp_cell : Stdlib.Format.formatter -> cell -> unit
    val as_code : cell -> FFI.Code.t option
    val as_name : cell -> string option
    val as_id : cell -> Ident.t option
    val is_path : cell -> bool
    val is_no_exception : cell -> bool
    type t = cell list
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Info/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Info/index.html index 7df6118788d..1fffb3c8482 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Info/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Info/index.html @@ -1,2 +1,2 @@ -Info (infer.PythonFrontend.PyEnv.Info)

    Module PyEnv.Info

    Type information about various entities (toplevel declarations, temporaries, ...).

    type kind =
    1. | Code
    2. | Class
    3. | Other
    type t = {
    1. kind : kind;
    2. typ : T.Typ.t;
    }
    val default : T.Typ.t -> t
    val is_code : kind -> bool
    val is_class : kind -> bool
    \ No newline at end of file +Info (infer.PythonFrontend.PyEnv.Info)

    Module PyEnv.Info

    Type information about various entities (toplevel declarations, temporaries, ...).

    type kind =
    1. | Code
    2. | Class
    3. | Other
    type t = {
    1. kind : kind;
    2. typ : T.Typ.t;
    }
    val default : T.Typ.t -> t
    val is_code : kind -> bool
    val is_class : kind -> bool
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Label/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Label/index.html index 1c1fe84e8c4..404a9e0a371 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Label/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Label/index.html @@ -1,10 +1,10 @@ -Label (infer.PythonFrontend.PyEnv.Label)

    Module PyEnv.Label

    type info

    Information about a "yet to reach" label location, with its name, type of ssa parameters, and a function to update the environment before processing the code after the label. For example, inserting some pruning operations before the label and the code. Since we don't always know the location of the label before-hand, the prelude is expecting one.

    We also keep track of the label status: if we already processed it within the nodes function. This is to avoid infinite loops.

    val mk : - ?ssa_parameters:T.Typ.t list -> - ?prelude:(T.Location.t -> t -> t) -> +Label (infer.PythonFrontend.PyEnv.Label)

    Module PyEnv.Label

    type info

    Information about a "yet to reach" label location, with its name, type of ssa parameters, and a function to update the environment before processing the code after the label. For example, inserting some pruning operations before the label and the code. Since we don't always know the location of the label before-hand, the prelude is expecting one.

    We also keep track of the label status: if we already processed it within the nodes function. This is to avoid infinite loops.

    val mk : + ?ssa_parameters:T.Typ.t list -> + ?prelude:(T.Location.t -> t -> t) -> string -> info

    Create a label_info with the provided arguments. Mostly used with the defaults

    val update_ssa_parameters : info -> T.Typ.t list -> info

    Update the ssa_parameters of a label

    val is_processed : info -> bool

    Returns true iff the label was already encountered during processing

    val name : info -> string

    Returns the name of a label

    val to_textual : t -> T.Location.t -> info -> - t * string * (T.Ident.t * T.Typ.t) list

    Process a label info and turn it into Textual information

    \ No newline at end of file + t * string * (T.Ident.t * T.Typ.t) list

    Process a label info and turn it into Textual information

    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Signature/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Signature/index.html index 645752173c8..7bad9d5d104 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Signature/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Signature/index.html @@ -1,2 +1,2 @@ -Signature (infer.PythonFrontend.PyEnv.Signature)

    Module PyEnv.Signature

    type t = {
    1. annotations : PyCommon.annotated_name list;
    2. is_static : bool;
    3. is_abstract : bool;
    }
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Signature (infer.PythonFrontend.PyEnv.Signature)

    Module PyEnv.Signature

    type t = {
    1. annotations : PyCommon.annotated_name list;
    2. is_static : bool;
    3. is_abstract : bool;
    }
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Symbol/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Symbol/index.html index 721bc4ef674..7d863a6c5b0 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/Symbol/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/Symbol/index.html @@ -1,2 +1,2 @@ -Symbol (infer.PythonFrontend.PyEnv.Symbol)

    Module PyEnv.Symbol

    type kind =
    1. | Name of {
      1. is_imported : bool;
      2. typ : T.Typ.t;
      }
      (*

      The identifier is a name, like a variable name, or any name that might have been imported

      *)
    2. | Builtin
      (*

      The identifier is a known builtin, like print or range

      *)
    3. | Code
      (*

      The identifier is a code object, like a function declaration

      *)
    4. | Class
      (*

      The identifier is a class name

      *)
    5. | ImportCall
      (*

      The identifier is an imported name that has been used in a call, so we can suppose it is a function

      *)
    6. | Import
      (*

      The identifier is the name of an imported module

      *)
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    type t = {
    1. id : Ident.t;
    2. kind : kind;
    3. loc : T.Location.t;
    }
    type key =
    1. | Global of Ident.t
    2. | Local of string
    val pp_key : Stdlib.Format.formatter -> key -> unit
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Symbol (infer.PythonFrontend.PyEnv.Symbol)

    Module PyEnv.Symbol

    type kind =
    1. | Name of {
      1. is_imported : bool;
      2. typ : T.Typ.t;
      }
      (*

      The identifier is a name, like a variable name, or any name that might have been imported

      *)
    2. | Builtin
      (*

      The identifier is a known builtin, like print or range

      *)
    3. | Code
      (*

      The identifier is a code object, like a function declaration

      *)
    4. | Class
      (*

      The identifier is a class name

      *)
    5. | ImportCall
      (*

      The identifier is an imported name that has been used in a call, so we can suppose it is a function

      *)
    6. | Import
      (*

      The identifier is the name of an imported module

      *)
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    type t = {
    1. id : Ident.t;
    2. kind : kind;
    3. loc : T.Location.t;
    }
    type key =
    1. | Global of Ident.t
    2. | Local of string
    val pp_key : Stdlib.Format.formatter -> key -> unit
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyEnv/index.html b/website/static/odoc/next/infer/PythonFrontend/PyEnv/index.html index 33f6cdc0ccf..2c413e4cd38 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyEnv/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyEnv/index.html @@ -1,15 +1,15 @@ -PyEnv (infer.PythonFrontend.PyEnv)

    Module PythonFrontend.PyEnv

    module Ident = PyCommon.Ident
    module Info : sig ... end

    Type information about various entities (toplevel declarations, temporaries, ...).

    module Symbol : sig ... end
    module Signature : sig ... end
    module DataStack : sig ... end

    In Python, everything is an object, and the interpreter maintains a stack of references to such objects. Pushing and popping on the stack are always references to objets that leave in a heap. There is no need to model this heap, but the data stack is quite important.

    type t

    Global environment used during bytecode processing. Stores common global information like the toplevel symbols processed so far, or more local ones like the set of labels or variable ids currently used by a declaration.

    module Label : sig ... end
    type class_info = {
    1. qualified_name : Ident.t;
    2. parents : Ident.t list;
    }

    Class level info. For now, only the parent info (if present) is tracked, supporting multiple inheritance and its full qualified name (for nested classes). We may track more information in the future, like being an abstract class, a dataclass, ...

    type method_info = {
    1. signature : Signature.t;
    2. default_arguments : T.Exp.t list;
    }

    Method level info. We store a method/function signature, and its default arugments

    val empty : Ident.t -> t
    val loc : t -> T.Location.t

    Return the last recorded line information from the Python code-unit, if any.

    val stack : t -> DataStack.t

    Returns the DataStack.t for the current declaration

    val globals : t -> Symbol.t Ident.Map.t

    Return the globals map

    val get_used_builtins : t -> PyBuiltin.Set.t

    Return a set of Builtin the we spotted in the code

    val instructions : t -> T.Instr.t list

    Returns the list of all instructions recorded for the current code unit

    val label_of_offset : t -> int -> Label.info option

    Check if the instruction is a possible jump location, and return the label information found there, if any.

    val mk_fresh_ident : t -> Info.t -> t * T.Ident.t

    Generate a fresh temporary name

    val get_ident_info : t -> T.Ident.t -> Info.t option

    Get back the information of a temporary

    val mk_fresh_label : t -> t * string

    Generate a fresh label name

    val map : f:(t -> 'a -> t * 'b) -> env:t -> 'a list -> t * 'b list

    Similar to List.map but an env is threaded along the way

    val map_result : - f:(t -> 'a -> (t * 'b, 'c) IStdlib.IStd.result) -> - env:t -> +PyEnv (infer.PythonFrontend.PyEnv)

    Module PythonFrontend.PyEnv

    module Ident = PyCommon.Ident
    module Info : sig ... end

    Type information about various entities (toplevel declarations, temporaries, ...).

    module Symbol : sig ... end
    module Signature : sig ... end
    module DataStack : sig ... end

    In Python, everything is an object, and the interpreter maintains a stack of references to such objects. Pushing and popping on the stack are always references to objets that leave in a heap. There is no need to model this heap, but the data stack is quite important.

    type t

    Global environment used during bytecode processing. Stores common global information like the toplevel symbols processed so far, or more local ones like the set of labels or variable ids currently used by a declaration.

    module Label : sig ... end
    type class_info = {
    1. qualified_name : Ident.t;
    2. parents : Ident.t list;
    }

    Class level info. For now, only the parent info (if present) is tracked, supporting multiple inheritance and its full qualified name (for nested classes). We may track more information in the future, like being an abstract class, a dataclass, ...

    type method_info = {
    1. signature : Signature.t;
    2. default_arguments : T.Exp.t list;
    }

    Method level info. We store a method/function signature, and its default arugments

    val empty : Ident.t -> t
    val loc : t -> T.Location.t

    Return the last recorded line information from the Python code-unit, if any.

    val stack : t -> DataStack.t

    Returns the DataStack.t for the current declaration

    val globals : t -> Symbol.t Ident.Map.t

    Return the globals map

    val get_used_builtins : t -> PyBuiltin.Set.t

    Return a set of Builtin the we spotted in the code

    val instructions : t -> T.Instr.t list

    Returns the list of all instructions recorded for the current code unit

    val label_of_offset : t -> int -> Label.info option

    Check if the instruction is a possible jump location, and return the label information found there, if any.

    val mk_fresh_ident : t -> Info.t -> t * T.Ident.t

    Generate a fresh temporary name

    val get_ident_info : t -> T.Ident.t -> Info.t option

    Get back the information of a temporary

    val mk_fresh_label : t -> t * string

    Generate a fresh label name

    val map : f:(t -> 'a -> t * 'b) -> env:t -> 'a list -> t * 'b list

    Similar to List.map but an env is threaded along the way

    val map_result : + f:(t -> 'a -> (t * 'b, 'c) IStdlib.IStd.result) -> + env:t -> 'a list -> (t * 'b list, 'c) IStdlib.IStd.result

    Similar to map but supports functions that return Result.t

    val enter_proc : - is_toplevel:bool -> - is_static:bool -> - module_name:Ident.t -> - params:string list -> + is_toplevel:bool -> + is_static:bool -> + module_name:Ident.t -> + params:string list -> t -> - t

    Set the environment when entering a new code unit (like reset the instruction buffer, or id/label generators.

    val set_annotations : t -> t

    Configure the environment to keep track of variable annotations in the dedicated __annotations__ dictionary. Right now, we register its existence but don't store anything in it

    val has_annotations : t -> bool

    Returns the fact that annotations are tracked or not

    val enter_node : t -> t

    Set the environment when entering a new node. Reset the instructions buffer.

    val reset_stack : t -> t

    Reset the stack field of a node

    val update_last_line : t -> int option -> t

    Update the last_line field of an env, if new information is availbe.

    val push : t -> DataStack.cell -> t

    Push a new DataStack.cell on the datastack

    val pop : t -> (t * DataStack.cell) option

    Pop a DataStack.cell from the datastack, if any is available

    val peek : t -> DataStack.cell option

    Peek a DataStack.cell from the datastack, if any is available

    val push_instr : t -> T.Instr.t -> t

    Record a new instruction for the current code unit

    val register_label : offset:int -> Label.info -> t -> t

    Register the fact that a new label info must be inserted before the instruction at offset

    val register_with_target : offset:int -> t -> t

    Register the location of a with statement clean up code

    val is_with_target : offset:int -> t -> bool

    Check whether a code offset is the target of a with statement

    val process_label : offset:int -> Label.info -> t -> t

    Mark the label info at offset as processed

    val register_symbol : t -> Symbol.key -> Symbol.t -> t

    Register a name (function, variable, ...). It might be a global symbol at the module level or in a local object.

    val lookup_symbol : t -> Symbol.key -> Symbol.t option

    Lookup information about a global/local symbol previously registered via register_symbol

    val register_call : t -> Ident.t -> t

    Register a function call. It enables us to deal correctly with builtin declaration.

    val mk_builtin_call : + t

    Set the environment when entering a new code unit (like reset the instruction buffer, or id/label generators.

    val set_annotations : t -> t

    Configure the environment to keep track of variable annotations in the dedicated __annotations__ dictionary. Right now, we register its existence but don't store anything in it

    val has_annotations : t -> bool

    Returns the fact that annotations are tracked or not

    val enter_node : t -> t

    Set the environment when entering a new node. Reset the instructions buffer.

    val reset_stack : t -> t

    Reset the stack field of a node

    val update_last_line : t -> int option -> t

    Update the last_line field of an env, if new information is availbe.

    val push : t -> DataStack.cell -> t

    Push a new DataStack.cell on the datastack

    val pop : t -> (t * DataStack.cell) option

    Pop a DataStack.cell from the datastack, if any is available

    val peek : t -> DataStack.cell option

    Peek a DataStack.cell from the datastack, if any is available

    val push_instr : t -> T.Instr.t -> t

    Record a new instruction for the current code unit

    val register_label : offset:int -> Label.info -> t -> t

    Register the fact that a new label info must be inserted before the instruction at offset

    val register_with_target : offset:int -> t -> t

    Register the location of a with statement clean up code

    val is_with_target : offset:int -> t -> bool

    Check whether a code offset is the target of a with statement

    val process_label : offset:int -> Label.info -> t -> t

    Mark the label info at offset as processed

    val register_symbol : t -> Symbol.key -> Symbol.t -> t

    Register a name (function, variable, ...). It might be a global symbol at the module level or in a local object.

    val lookup_symbol : t -> Symbol.key -> Symbol.t option

    Lookup information about a global/local symbol previously registered via register_symbol

    val register_call : t -> Ident.t -> t

    Register a function call. It enables us to deal correctly with builtin declaration.

    val mk_builtin_call : t -> PyBuiltin.textual -> T.Exp.t list -> @@ -21,12 +21,12 @@ T.Exp.t list -> t

    Register a function declaration. We keep track of them since they might shadow Python builtins or previous definitions

    val register_method : t -> - enclosing_class:Ident.t -> - method_name:string -> + enclosing_class:Ident.t -> + method_name:string -> Signature.t -> T.Exp.t list -> t

    Register a method declaration. We mostly keep track of their signatures

    val register_fields : t -> T.TypeName.t -> PyCommon.signature -> t

    Extended the set of fields of class class_name with class_fields. We might have multiple calls to this function with the same class name in a best effort attempt: Python is dynamic, and any self.foo access could give rise to such a registration

    val lookup_method : t -> - enclosing_class:Ident.t -> + enclosing_class:Ident.t -> string -> - method_info option

    Lookup the information stored for a function/method in the relevant enclosing_class

    val lookup_fields : t -> T.TypeName.t -> PyCommon.signature option

    Lookup the signature of a function / method

    val register_class : t -> string -> Ident.t -> Ident.t list -> t

    Register a class declaration (based on LOAD_BUILD_CLASS)

    val get_declared_classes : t -> class_info PythonFrontend.PyCommon.SMap.t

    Return information of classes defined in the current module

    val register_imported_value : t -> Ident.t -> t

    register global names imported from other modules

    val get_textual_imports : t -> T.Module.decl list

    Get back the list of registered imports

    val is_toplevel : t -> bool

    Are we processing top level instructions, or something in a function/class ?

    val is_static : t -> bool

    Are we processing instructions from a static method ?

    val get_params : t -> string list

    Return the name of the method/function parameters, if any

    val module_name : t -> Ident.t

    Returns the name of the current module

    \ No newline at end of file + method_info option

    Lookup the information stored for a function/method in the relevant enclosing_class

    val lookup_fields : t -> T.TypeName.t -> PyCommon.signature option

    Lookup the signature of a function / method

    val register_class : t -> string -> Ident.t -> Ident.t list -> t

    Register a class declaration (based on LOAD_BUILD_CLASS)

    val get_declared_classes : t -> class_info PythonFrontend.PyCommon.SMap.t

    Return information of classes defined in the current module

    val register_imported_value : t -> Ident.t -> t

    register global names imported from other modules

    val get_textual_imports : t -> T.Module.decl list

    Get back the list of registered imports

    val is_toplevel : t -> bool

    Are we processing top level instructions, or something in a function/class ?

    val is_static : t -> bool

    Are we processing instructions from a static method ?

    val get_params : t -> string list

    Return the name of the method/function parameters, if any

    val module_name : t -> Ident.t

    Returns the name of the current module

    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyIR/Error/index.html b/website/static/odoc/next/infer/PythonFrontend/PyIR/Error/index.html index 8fec42e3525..94aad60ea23 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyIR/Error/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyIR/Error/index.html @@ -1,2 +1,2 @@ -Error (infer.PythonFrontend.PyIR.Error)

    Module PyIR.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    \ No newline at end of file +Error (infer.PythonFrontend.PyIR.Error)

    Module PyIR.Error

    type kind
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyIR/Location/index.html b/website/static/odoc/next/infer/PythonFrontend/PyIR/Location/index.html index 65ee68395df..fd7029d1627 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyIR/Location/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyIR/Location/index.html @@ -1,2 +1,2 @@ -Location (infer.PythonFrontend.PyIR.Location)

    Module PyIR.Location

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Location (infer.PythonFrontend.PyIR.Location)

    Module PyIR.Location

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyIR/Module/index.html b/website/static/odoc/next/infer/PythonFrontend/PyIR/Module/index.html index 3cd843c7560..1f05f89a172 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyIR/Module/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyIR/Module/index.html @@ -1,2 +1,2 @@ -Module (infer.PythonFrontend.PyIR.Module)

    Module PyIR.Module

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +Module (infer.PythonFrontend.PyIR.Module)

    Module PyIR.Module

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyIR/index.html b/website/static/odoc/next/infer/PythonFrontend/PyIR/index.html index 1640913d22b..de631e31e57 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyIR/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyIR/index.html @@ -1,2 +1,2 @@ -PyIR (infer.PythonFrontend.PyIR)

    Module PythonFrontend.PyIR

    module Location : sig ... end
    module Error : sig ... end
    module Module : sig ... end
    val mk : debug:bool -> FFI.Code.t -> (Module.t, Error.t) IStdlib.IStd.result
    \ No newline at end of file +PyIR (infer.PythonFrontend.PyIR)

    Module PythonFrontend.PyIR

    module Location : sig ... end
    module Error : sig ... end
    module Module : sig ... end
    val mk : debug:bool -> FFI.Code.t -> (Module.t, Error.t) IStdlib.IStd.result
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyTrans/Error/index.html b/website/static/odoc/next/infer/PythonFrontend/PyTrans/Error/index.html index 302db6c1fcb..f4e40535da2 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyTrans/Error/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyTrans/Error/index.html @@ -1,2 +1,2 @@ -Error (infer.PythonFrontend.PyTrans.Error)

    Module PyTrans.Error

    type kind
    val ffi : FFI.Error.t -> t
    val textual_parser : Textuallib.Textual.SourceFile.t -> t
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    \ No newline at end of file +Error (infer.PythonFrontend.PyTrans.Error)

    Module PyTrans.Error

    type kind
    val ffi : FFI.Error.t -> t
    val textual_parser : Textuallib.Textual.SourceFile.t -> t
    val pp_kind : Stdlib.Format.formatter -> kind -> unit
    diff --git a/website/static/odoc/next/infer/PythonFrontend/PyTrans/index.html b/website/static/odoc/next/infer/PythonFrontend/PyTrans/index.html index d95f0fa7b08..c153e318ce7 100644 --- a/website/static/odoc/next/infer/PythonFrontend/PyTrans/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/PyTrans/index.html @@ -1,5 +1,5 @@ -PyTrans (infer.PythonFrontend.PyTrans)

    Module PythonFrontend.PyTrans

    module Error : sig ... end
    val to_module : - sourcefile:Textuallib.Textual.SourceFile.t -> +PyTrans (infer.PythonFrontend.PyTrans)

    Module PythonFrontend.PyTrans

    module Error : sig ... end

    Translate a Python code object into its Textual counter part

    \ No newline at end of file + (Textuallib.Textual.Module.t, Error.t) IStdlib.IStd.result

    Translate a Python code object into its Textual counter part

    diff --git a/website/static/odoc/next/infer/PythonFrontend/index.html b/website/static/odoc/next/infer/PythonFrontend/index.html index 66d51da604f..1948870e8c3 100644 --- a/website/static/odoc/next/infer/PythonFrontend/index.html +++ b/website/static/odoc/next/infer/PythonFrontend/index.html @@ -1,2 +1,2 @@ -PythonFrontend (infer.PythonFrontend)

    Module PythonFrontend

    module FFI : sig ... end

    This file is about translating Python3.8 code objects into an OCaml representation. Some interesting readings:

    module PyBuiltin : sig ... end
    module PyClassDecl : sig ... end
    module PyCommon : sig ... end
    module PyDebug : sig ... end
    module PyEnv : sig ... end
    module PyIR : sig ... end
    module PyTrans : sig ... end
    \ No newline at end of file +PythonFrontend (infer.PythonFrontend)

    Module PythonFrontend

    module FFI : sig ... end

    This file is about translating Python3.8 code objects into an OCaml representation. Some interesting readings:

    module PyBuiltin : sig ... end
    module PyClassDecl : sig ... end
    module PyCommon : sig ... end
    module PyDebug : sig ... end
    module PyEnv : sig ... end
    module PyIR : sig ... end
    module PyTrans : sig ... end
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTaintAnalysis/index.html b/website/static/odoc/next/infer/Quandary/ClangTaintAnalysis/index.html index d7f81bfc0eb..334b0d87cb9 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTaintAnalysis/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTaintAnalysis/index.html @@ -1,4 +1,4 @@ -ClangTaintAnalysis (infer.Quandary.ClangTaintAnalysis)

    Module Quandary.ClangTaintAnalysis

    val checker : +ClangTaintAnalysis (infer.Quandary.ClangTaintAnalysis)

    Module Quandary.ClangTaintAnalysis

    \ No newline at end of file + QuandarySummary.t option
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sanitizer/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sanitizer/index.html index 727d246b970..ef1bba65c1c 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Quandary.ClangTrace.Sanitizer)

    Module ClangTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Quandary.ClangTrace.Sanitizer)

    Module ClangTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Kind/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Kind/index.html index 78d11f510f9..44baca45d79 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.ClangTrace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.ClangTrace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Set/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Set/index.html index 353734363f9..f2ef4e406e1 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.ClangTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.ClangTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/index.html index c1c0ce8652e..f67a0502e32 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.Quandary.ClangTrace.Sink)

    Module ClangTrace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : +Sink (infer.Quandary.ClangTrace.Sink)

    Module ClangTrace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Kind/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Kind/index.html index 3d23214116d..c9b9b73053b 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.ClangTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.ClangTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Set/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Set/index.html index 46f0d89c4e7..f02e9c852d8 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.ClangTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.ClangTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/index.html index 64140716a64..f00ef8e793f 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Source/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Quandary.ClangTrace.Source)

    Module ClangTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Quandary.ClangTrace.Source)

    Module ClangTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/AccessMap/index.html index cd7965eaca2..6d16097fe4c 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.ClangTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.ClangTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/TraceDomain/index.html index a544668b233..8d220e2817c 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.ClangTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.ClangTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/index.html index 5a8e95eb10f..e3e9e3a048c 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Quandary.ClangTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Quandary.ClangTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/FootprintConfig/index.html index d3c90b63b55..deed73aa726 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Quandary.ClangTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Quandary.ClangTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Known/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Known/index.html index af4b69c6f62..5f89786b01f 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Quandary.ClangTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Quandary.ClangTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Sanitizers/index.html index 8c7f422e7fd..4d3bbf28883 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Quandary.ClangTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Quandary.ClangTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/index.html index ca0e6b85ae4..071bdf3f644 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Quandary.ClangTrace.Sources)

    Module ClangTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Quandary.ClangTrace.Sources)

    Module ClangTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Quandary/ClangTrace/index.html b/website/static/odoc/next/infer/Quandary/ClangTrace/index.html index 33c53ef8806..203980c1ae7 100644 --- a/website/static/odoc/next/infer/Quandary/ClangTrace/index.html +++ b/website/static/odoc/next/infer/Quandary/ClangTrace/index.html @@ -1,19 +1,19 @@ -ClangTrace (infer.Quandary.ClangTrace)

    Module Quandary.ClangTrace

    include Absint.TaintTrace.S
    include Absint.TaintTrace.Spec
    val get_report : +ClangTrace (infer.Quandary.ClangTrace)

    Module Quandary.ClangTrace

    include Absint.TaintTrace.S
    include Absint.TaintTrace.Spec
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Quandary/JavaTaintAnalysis/index.html b/website/static/odoc/next/infer/Quandary/JavaTaintAnalysis/index.html index cdca128faa2..299c97c964f 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTaintAnalysis/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTaintAnalysis/index.html @@ -1,4 +1,4 @@ -JavaTaintAnalysis (infer.Quandary.JavaTaintAnalysis)

    Module Quandary.JavaTaintAnalysis

    val checker : +JavaTaintAnalysis (infer.Quandary.JavaTaintAnalysis)

    Module Quandary.JavaTaintAnalysis

    \ No newline at end of file + QuandarySummary.t option
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sanitizer/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sanitizer/index.html index b0bfc0d30de..afbc8b0f85e 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Quandary.JavaTrace.Sanitizer)

    Module JavaTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Quandary.JavaTrace.Sanitizer)

    Module JavaTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Kind/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Kind/index.html index 172d026ad94..7872e735fba 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.JavaTrace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.JavaTrace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Set/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Set/index.html index b4f1a7cb3eb..d822b8e9040 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.JavaTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.JavaTrace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/index.html index 619b38856bb..88a6adf5b23 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.Quandary.JavaTrace.Sink)

    Module JavaTrace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : +Sink (infer.Quandary.JavaTrace.Sink)

    Module JavaTrace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Kind/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Kind/index.html index faaaca5a1e8..4d847cefeb5 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.JavaTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.JavaTrace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Set/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Set/index.html index 90db1742c03..a9b9a74c828 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.JavaTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.JavaTrace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/index.html index 1367cdb021e..9731bd6ce0f 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Source/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Quandary.JavaTrace.Source)

    Module JavaTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Quandary.JavaTrace.Source)

    Module JavaTrace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/AccessMap/index.html index 29419bdccf9..93dcdd4e7c2 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.JavaTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.JavaTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/TraceDomain/index.html index 0060da53247..68014348ddc 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.JavaTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.JavaTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/index.html index 43f1974b044..618597440d9 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Quandary.JavaTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Quandary.JavaTrace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/FootprintConfig/index.html index 269e0adf928..def1ff00c6e 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Quandary.JavaTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Quandary.JavaTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Known/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Known/index.html index 75a50bb8ee8..5fb54b404aa 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Quandary.JavaTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Quandary.JavaTrace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Sanitizers/index.html index 8811242b746..91cbf2779e8 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Quandary.JavaTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Quandary.JavaTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/index.html index 59975f649d8..a5ceebbeb58 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Quandary.JavaTrace.Sources)

    Module JavaTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Quandary.JavaTrace.Sources)

    Module JavaTrace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Quandary/JavaTrace/index.html b/website/static/odoc/next/infer/Quandary/JavaTrace/index.html index b5c771604d3..8871e1d1780 100644 --- a/website/static/odoc/next/infer/Quandary/JavaTrace/index.html +++ b/website/static/odoc/next/infer/Quandary/JavaTrace/index.html @@ -1,19 +1,19 @@ -JavaTrace (infer.Quandary.JavaTrace)

    Module Quandary.JavaTrace

    include Absint.TaintTrace.S
    include Absint.TaintTrace.Spec
    val get_report : +JavaTrace (infer.Quandary.JavaTrace)

    Module Quandary.JavaTrace

    include Absint.TaintTrace.S
    include Absint.TaintTrace.Spec
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sanitizer/index.html b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sanitizer/index.html index 1683a2f4962..2dca7b70c9e 100644 --- a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Quandary.QuandaryConfig.Sanitizer)

    Module QuandaryConfig.Sanitizer

    type t = {
    1. procedure : string;
    2. kind : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    \ No newline at end of file +Sanitizer (infer.Quandary.QuandaryConfig.Sanitizer)

    Module QuandaryConfig.Sanitizer

    type t = {
    1. procedure : string;
    2. kind : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    diff --git a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sink/index.html b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sink/index.html index c47cdbb59b4..2d677ca5244 100644 --- a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sink/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Sink/index.html @@ -1,2 +1,2 @@ -Sink (infer.Quandary.QuandaryConfig.Sink)

    Module QuandaryConfig.Sink

    type t = {
    1. procedure : string;
    2. kinds : string list;
    3. index : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    \ No newline at end of file +Sink (infer.Quandary.QuandaryConfig.Sink)

    Module QuandaryConfig.Sink

    type t = {
    1. procedure : string;
    2. kinds : string list;
    3. index : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    diff --git a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Source/index.html b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Source/index.html index 9ed739acab0..7852047205c 100644 --- a/website/static/odoc/next/infer/Quandary/QuandaryConfig/Source/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandaryConfig/Source/index.html @@ -1,2 +1,2 @@ -Source (infer.Quandary.QuandaryConfig.Source)

    Module QuandaryConfig.Source

    type t = {
    1. procedure : string;
    2. kinds : string list;
    3. index : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    \ No newline at end of file +Source (infer.Quandary.QuandaryConfig.Source)

    Module QuandaryConfig.Source

    type t = {
    1. procedure : string;
    2. kinds : string list;
    3. index : string;
    }
    val of_json : [> `List of Yojson.Safe.t list ] -> t list
    diff --git a/website/static/odoc/next/infer/Quandary/QuandaryConfig/index.html b/website/static/odoc/next/infer/Quandary/QuandaryConfig/index.html index e643392f98c..01c31399078 100644 --- a/website/static/odoc/next/infer/Quandary/QuandaryConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandaryConfig/index.html @@ -1,2 +1,2 @@ -QuandaryConfig (infer.Quandary.QuandaryConfig)

    Module Quandary.QuandaryConfig

    utilities for importing JSON specifications of sources/sinks into Quandary

    module Source : sig ... end
    module Sink : sig ... end
    module Sanitizer : sig ... end
    val is_endpoint : string -> bool
    \ No newline at end of file +QuandaryConfig (infer.Quandary.QuandaryConfig)

    Module Quandary.QuandaryConfig

    utilities for importing JSON specifications of sources/sinks into Quandary

    module Source : sig ... end
    module Sink : sig ... end
    module Sanitizer : sig ... end
    val is_endpoint : string -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/AccessTree/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/AccessTree/index.html index 13441d47d37..3c26981675f 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/AccessTree/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/AccessTree/index.html @@ -1,2 +1,2 @@ -AccessTree (infer.Quandary.QuandarySummary.AccessTree)

    Module QuandarySummary.AccessTree

    type t =
    1. | Java of Java.t
    2. | Clang of Clang.t
    \ No newline at end of file +AccessTree (infer.Quandary.QuandarySummary.AccessTree)

    Module QuandarySummary.AccessTree

    type t =
    1. | Java of Java.t
    2. | Clang of Clang.t
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/AccessMap/index.html index ed1a984909e..ef104ecdf87 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.QuandarySummary.Clang.AccessMap)

    Module Clang.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.QuandarySummary.Clang.AccessMap)

    Module Clang.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/TraceDomain/index.html index 2a7fad17f3a..c819f5ae899 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.QuandarySummary.Clang.TraceDomain)

    Module Clang.TraceDomain

    type t = ClangTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.QuandarySummary.Clang.TraceDomain)

    Module Clang.TraceDomain

    type t = ClangTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/index.html index b20d32f0b74..08b7cf8f0b8 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Clang/index.html @@ -1,5 +1,5 @@ -Clang (infer.Quandary.QuandarySummary.Clang)

    Module QuandarySummary.Clang

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Clang (infer.Quandary.QuandarySummary.Clang)

    Module QuandarySummary.Clang

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/AccessMap/index.html index 0903f10e807..d13c74e907d 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.QuandarySummary.Java.AccessMap)

    Module Java.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.QuandarySummary.Java.AccessMap)

    Module Java.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/TraceDomain/index.html index 15798fc13b1..ecc070fbb54 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.QuandarySummary.Java.TraceDomain)

    Module Java.TraceDomain

    type t = JavaTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.QuandarySummary.Java.TraceDomain)

    Module Java.TraceDomain

    type t = JavaTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/index.html index 5aee7b2517b..d0289a58aa8 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/Java/index.html @@ -1,5 +1,5 @@ -Java (infer.Quandary.QuandarySummary.Java)

    Module QuandarySummary.Java

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Java (infer.Quandary.QuandarySummary.Java)

    Module QuandarySummary.Java

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/QuandarySummary/index.html b/website/static/odoc/next/infer/Quandary/QuandarySummary/index.html index 8284fa7de25..d3c5caeec43 100644 --- a/website/static/odoc/next/infer/Quandary/QuandarySummary/index.html +++ b/website/static/odoc/next/infer/Quandary/QuandarySummary/index.html @@ -1,2 +1,2 @@ -QuandarySummary (infer.Quandary.QuandarySummary)

    Module Quandary.QuandarySummary

    summary type for Quandary taint analysis

    module F = Stdlib.Format
    module Java : sig ... end
    module Clang : sig ... end
    module AccessTree : sig ... end
    type t = AccessTree.t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +QuandarySummary (infer.Quandary.QuandarySummary)

    Module Quandary.QuandarySummary

    summary type for Quandary taint analysis

    module F = Stdlib.Format
    module Java : sig ... end
    module Clang : sig ... end
    module AccessTree : sig ... end
    type t = AccessTree.t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html index 03cb7eea147..7dab17c82f5 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html index a6b4397c1e5..5294c5f02bb 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html index 49d51ffa05b..4a0a109cefb 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html index 042ab29d495..e066569ed68 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html index f244efe73b5..81387bd3fe1 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html index c05d95f3254..35c7786bfbd 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html @@ -1,9 +1,9 @@ -TransferFunctions (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +TransferFunctions (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/index.html index ee7ebfc50e0..f781b6c4faa 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/Interpreter/index.html @@ -1,23 +1,23 @@ -Interpreter (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter)

    Module Analyzer.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +Interpreter (infer.Quandary.TaintAnalysis.Make.Analyzer.Interpreter)

    Module Analyzer.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = TransferFunctions.Domain.t Absint__AbstractInterpreter.State.t InvariantMap.t
    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option
    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map
    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map
    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option
    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option
    \ No newline at end of file + 'a option
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/index.html index 1d78522ebc4..391e073614b 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/Analyzer/index.html @@ -1,6 +1,6 @@ -Analyzer (infer.Quandary.TaintAnalysis.Make.Analyzer)

    Module Make.Analyzer

    module Interpreter : sig ... end
    val compute_post : +Analyzer (infer.Quandary.TaintAnalysis.Make.Analyzer)

    Module Make.Analyzer

    module Interpreter : sig ... end
    val compute_post : Interpreter.TransferFunctions.analysis_data -> - initial:domain -> + initial:domain -> IR.Procdesc.t -> - domain option
    \ No newline at end of file + domain option
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/HilConfig/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/HilConfig/index.html index afe7ba15a4f..0ffa5119300 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/HilConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/HilConfig/index.html @@ -1,2 +1,2 @@ -HilConfig (infer.Quandary.TaintAnalysis.Make.HilConfig)

    Module Make.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +HilConfig (infer.Quandary.TaintAnalysis.Make.HilConfig)

    Module Make.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdMap/index.html index 6ca37268205..b329264a452 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdSet/index.html index 04fc0b02988..0d784a3533b 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html index 40bb75dc726..35143433755 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html index a76118ab983..ce553bac071 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.Quandary.TaintAnalysis.Make.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/index.html index aee7eee8212..7ecc7ad8051 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/TransferFunctions/index.html @@ -1,5 +1,5 @@ -TransferFunctions (infer.Quandary.TaintAnalysis.Make.TransferFunctions)

    Module Make.TransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = Domain
    type nonrec analysis_data = analysis_data
    val access_path_get_node : +TransferFunctions (infer.Quandary.TaintAnalysis.Make.TransferFunctions)

    Module Make.TransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = Domain
    type nonrec analysis_data = analysis_data
    val exp_get_node_ : - abstracted:bool -> + abstracted:bool -> Absint.AccessPath.Abs.raw -> TaintDomain.t -> Absint.FormalMap.t -> TaintDomain.node option
    val hil_exp_get_node : - ?abstracted:bool -> + ?abstracted:bool -> Absint.HilExp.t -> TaintDomain.t -> Absint.FormalMap.t -> @@ -29,7 +29,7 @@ Absint.FormalMap.t -> TaintDomain.t
    val is_endpoint : TraceDomain.Source.t -> bool

    log any new reportable source-sink flows in trace

    val add_sink : @@ -67,11 +67,11 @@ TaintDomain.t -> TaintDomain.t
    val analyze_call : analysis_data -> - ret_ap:(IR.Var.t * IR.Typ.t) -> - callee_pname:IR.Procname.t -> - actuals:Absint.HilExp.t list -> - call_flags:IR.CallFlags.t -> - callee_loc:IBase.Location.t -> + ret_ap:(IR.Var.t * IR.Typ.t) -> + callee_pname:IR.Procname.t -> + actuals:Absint.HilExp.t list -> + call_flags:IR.CallFlags.t -> + callee_loc:IBase.Location.t -> TaintDomain.t -> TaintDomain.t
    val exec_instr : Domain.t -> @@ -79,4 +79,4 @@ 'a -> 'b -> Absint.HilInstr.t -> - Domain.t
    val pp_session_name : CFG.Node.t -> F.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> F.formatter -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html index a4ea482a228..25d85e8dd02 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree.AccessMap)

    Module AccessTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree.AccessMap)

    Module AccessTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html index b81293a45d2..3b4a5ae2b8c 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree.TraceDomain)

    Module AccessTree.TraceDomain

    type t = Trace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree.TraceDomain)

    Module AccessTree.TraceDomain

    type t = Trace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html index da2efcf9449..92a2db8eab8 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html @@ -1,5 +1,5 @@ -AccessTree (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree)

    Module TaintSpecification.AccessTree

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +AccessTree (infer.Quandary.TaintAnalysis.Make.TaintSpecification.AccessTree)

    Module TaintSpecification.AccessTree

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html index 1f94f043cbf..c455d5baa04 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sanitizer)

    Module Trace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sanitizer)

    Module Trace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html index b1d6cc79ea7..84c9304fc06 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Set/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Set/index.html index 5dc25cb13cc..b2467728a54 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html index 9805bd58ecb..f71356d9a00 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink)

    Module Trace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : +Sink (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sink)

    Module Trace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html index 3a2adc6b433..0ba06f783e3 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Set/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Set/index.html index b63afade99f..0b1a03770a4 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html index 744af8aac2b..afd39a55d59 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source)

    Module Trace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Source)

    Module Trace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html index cc75ef43176..94bf0ea6ce8 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html index ea1fe9279ae..68674ab5f0b 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html index a31d60d3f61..15b08143f4f 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html index 78ab6625c88..dcad408c5d8 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html index 04a9be8768f..6b7681e29e9 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html index d65df1ffc82..e277251fc12 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html index 88be6886645..699b40ffd69 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources)

    Module Trace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace.Sources)

    Module Trace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html index 055a32e96a7..cf95d70cc27 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html @@ -1,19 +1,19 @@ -Trace (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace)

    Module TaintSpecification.Trace

    include Absint.TaintTrace.Spec
    val get_report : +Trace (infer.Quandary.TaintAnalysis.Make.TaintSpecification.Trace)

    Module TaintSpecification.Trace

    include Absint.TaintTrace.Spec
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/index.html index 4b955217de0..028f76ba94c 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/argument-1-TaintSpecification/index.html @@ -1,5 +1,5 @@ -TaintSpecification (infer.Quandary.TaintAnalysis.Make.TaintSpecification)

    Parameter Make.TaintSpecification

    module AccessTree : sig ... end
    val handle_unknown_call : +TaintSpecification (infer.Quandary.TaintAnalysis.Make.TaintSpecification)

    Parameter Make.TaintSpecification

    module AccessTree : sig ... end
    val handle_unknown_call : IR.Procname.t -> IR.Typ.t -> Absint.HilExp.t list -> @@ -10,4 +10,4 @@ Absint.HilExp.t list -> IR.Tenv.t -> AccessTree.t -> - TaintSpec.action list option

    returns a model that should be used for the given (procname, return type, actuals, summary) instead of using the summary for the procname

    val is_taintable_type : IR.Typ.t -> bool

    return true if the given typ can be tainted

    val to_summary_access_tree : AccessTree.t -> QuandarySummary.AccessTree.t
    val of_summary_access_tree : QuandarySummary.AccessTree.t -> AccessTree.t
    val name : string
    \ No newline at end of file + TaintSpec.action list option

    returns a model that should be used for the given (procname, return type, actuals, summary) instead of using the summary for the procname

    val is_taintable_type : IR.Typ.t -> bool

    return true if the given typ can be tainted

    val to_summary_access_tree : AccessTree.t -> QuandarySummary.AccessTree.t
    val of_summary_access_tree : QuandarySummary.AccessTree.t -> AccessTree.t
    val name : string
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/index.html index dcb37c36acd..64b9f4ced72 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/Make/index.html @@ -1,7 +1,7 @@ -Make (infer.Quandary.TaintAnalysis.Make)

    Module TaintAnalysis.Make

    Create a taint analysis from a specification

    Parameters

    Signature

    module TraceDomain = TaintSpecification.Trace
    module TaintDomain = TaintSpecification.AccessTree
    module Domain = TaintDomain
    type analysis_data = {
    1. analysis_data : QuandarySummary.t Absint.InterproceduralAnalysis.t;
    2. formal_map : Absint.FormalMap.t;
    }
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    val check_invariants : TaintDomain.t -> unit
    val make_summary : +Make (infer.Quandary.TaintAnalysis.Make)

    Module TaintAnalysis.Make

    Create a taint analysis from a specification

    Parameters

    Signature

    module TraceDomain = TaintSpecification.Trace
    module TaintDomain = TaintSpecification.AccessTree
    module Domain = TaintDomain
    type analysis_data = {
    1. analysis_data : QuandarySummary.t Absint.InterproceduralAnalysis.t;
    2. formal_map : Absint.FormalMap.t;
    }
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    val check_invariants : TaintDomain.t -> unit
    \ No newline at end of file + QuandarySummary.AccessTree.t option
    diff --git a/website/static/odoc/next/infer/Quandary/TaintAnalysis/index.html b/website/static/odoc/next/infer/Quandary/TaintAnalysis/index.html index 477c3494205..bf66e408488 100644 --- a/website/static/odoc/next/infer/Quandary/TaintAnalysis/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintAnalysis/index.html @@ -1,2 +1,2 @@ -TaintAnalysis (infer.Quandary.TaintAnalysis)

    Module Quandary.TaintAnalysis

    module F = Stdlib.Format
    module L = IBase.Logging
    module Make (TaintSpecification : TaintSpec.S) : sig ... end

    Create a taint analysis from a specification

    \ No newline at end of file +TaintAnalysis (infer.Quandary.TaintAnalysis)

    Module Quandary.TaintAnalysis

    module F = Stdlib.Format
    module L = IBase.Logging
    module Make (TaintSpecification : TaintSpec.S) : sig ... end

    Create a taint analysis from a specification

    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/index.html index a8786257f4a..fbba56c5d99 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/index.html @@ -1,2 +1,2 @@ -TaintSpec (infer.Quandary.TaintSpec)

    Module Quandary.TaintSpec

    combination of a trace with functions for handling unknown code and converting to and from summaries

    type action =
    1. | Propagate_to_actual of int
      (*

      Propagate taint from all actuals to the actual with the given index

      *)
    2. | Propagate_to_receiver
      (*

      Propagate taint from all non-receiver actuals to the receiver actual

      *)
    3. | Propagate_to_return
      (*

      Propagate taint from all actuals to the return value

      *)
    module type S = sig ... end
    \ No newline at end of file +TaintSpec (infer.Quandary.TaintSpec)

    Module Quandary.TaintSpec

    combination of a trace with functions for handling unknown code and converting to and from summaries

    type action =
    1. | Propagate_to_actual of int
      (*

      Propagate taint from all actuals to the actual with the given index

      *)
    2. | Propagate_to_receiver
      (*

      Propagate taint from all non-receiver actuals to the receiver actual

      *)
    3. | Propagate_to_return
      (*

      Propagate taint from all actuals to the return value

      *)
    module type S = sig ... end
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/AccessMap/index.html index daf391dee4b..b47f272ee71 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.TaintSpec.S.AccessTree.AccessMap)

    Module AccessTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.TaintSpec.S.AccessTree.AccessMap)

    Module AccessTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/TraceDomain/index.html index 4cd08fdf782..8cb6695f239 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.TaintSpec.S.AccessTree.TraceDomain)

    Module AccessTree.TraceDomain

    type t = Trace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.TaintSpec.S.AccessTree.TraceDomain)

    Module AccessTree.TraceDomain

    type t = Trace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/index.html index d70f42c3c2a..1afe949e8ae 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/AccessTree/index.html @@ -1,5 +1,5 @@ -AccessTree (infer.Quandary.TaintSpec.S.AccessTree)

    Module S.AccessTree

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +AccessTree (infer.Quandary.TaintSpec.S.AccessTree)

    Module S.AccessTree

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sanitizer/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sanitizer/index.html index 05a92ad9a7d..5f4801b1bd0 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.Quandary.TaintSpec.S.Trace.Sanitizer)

    Module Trace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.Quandary.TaintSpec.S.Trace.Sanitizer)

    Module Trace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Kind/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Kind/index.html index e8fec1f2ec7..f07e54e2ad2 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.TaintSpec.S.Trace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.TaintSpec.S.Trace.Sink.Kind)

    Module Sink.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Set/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Set/index.html index cdd968e78e3..d189117c598 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.TaintSpec.S.Trace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.TaintSpec.S.Trace.Sink.Set)

    Module Sink.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/index.html index a98b7d6ac96..5fd63c9f731 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.Quandary.TaintSpec.S.Trace.Sink)

    Module Trace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : +Sink (infer.Quandary.TaintSpec.S.Trace.Sink)

    Module Trace.Sink

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list

    return Some sink if the given call site/actuals are a sink, None otherwise

    val indexes : t -> IStdlib.IntSet.t

    return the indexes where taint can flow into the sink

    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Kind/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Kind/index.html index 92425b3d61c..5ab428b2c64 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.Quandary.TaintSpec.S.Trace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.Quandary.TaintSpec.S.Trace.Source.Kind)

    Module Source.Kind

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool

    Return true if the caller element kind matches the callee element kind. Used during trace expansion; we will only consider expanding the trace from caller into callee if this evaluates to true. This can normally just be equal, but something fuzzier may be required if t is a type that contains identifiers from the caller/callee

    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Set/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Set/index.html index 9b135b593fc..66bf8dc0f20 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Set/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.Quandary.TaintSpec.S.Trace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.Quandary.TaintSpec.S.Trace.Source.Set)

    Module Source.Set

    include IStdlib.IStd.Caml.Set.S with type elt = t
    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/index.html index 702d18a4253..7aef70aa1ba 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.Quandary.TaintSpec.S.Trace.Source)

    Module Trace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.Quandary.TaintSpec.S.Trace.Source)

    Module Trace.Source

    include Absint.TaintTraceElem.S
    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint.TaintTraceElem.F.formatter -> t -> unit
    module Set : IStdlib.PrettyPrintable.PPSet with type elt = t
    type spec = {
    1. source : t;
      (*

      type of the returned source

      *)
    2. index : int option;
      (*

      index of the returned source if Some; return value if None

      *)
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list

    return Some (taint spec) if the call site with the given actuals is a taint source, None otherwise

    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list

    return each formal of the function paired with either Some(source) if the formal is a taint source, or None if the formal is not a taint source

    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html index 5befbf4967b..2f7bebed3d1 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html index 2547340039c..ed4eb755247 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/index.html index f17d2ad5329..29279e04b8a 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.Quandary.TaintSpec.S.Trace.Sources.Footprint)

    Module Sources.Footprint

    Set of access paths representing the sources that may flow in from the caller

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html index 4335981da15..b140156fc26 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.Quandary.TaintSpec.S.Trace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.Quandary.TaintSpec.S.Trace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Known/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Known/index.html index 868ff77eda5..5a47bc4fd60 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.Quandary.TaintSpec.S.Trace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.Quandary.TaintSpec.S.Trace.Sources.Known)

    Module Sources.Known

    Set of sources returned by callees of the current function

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html index c9f89169063..fcfbd0ed3ed 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.Quandary.TaintSpec.S.Trace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.Quandary.TaintSpec.S.Trace.Sources.Sanitizers)

    Module Sources.Sanitizers

    Set of sanitizers that have been applied to these sources

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/index.html index 8d1cbc47105..65314002ca7 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.Quandary.TaintSpec.S.Trace.Sources)

    Module Trace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.Quandary.TaintSpec.S.Trace.Sources)

    Module Trace.Sources

    module Known : sig ... end

    Set of sources returned by callees of the current function

    module Footprint : sig ... end

    Set of access paths representing the sources that may flow in from the caller

    module Sanitizers : sig ... end

    Set of sanitizers that have been applied to these sources

    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/index.html index 82976721f0f..6bf5313e6c8 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/Trace/index.html @@ -1,19 +1,19 @@ -Trace (infer.Quandary.TaintSpec.S.Trace)

    Module S.Trace

    include Absint.TaintTrace.Spec
    val get_report : +Trace (infer.Quandary.TaintSpec.S.Trace)

    Module S.Trace

    include Absint.TaintTrace.Spec
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option

    return Some(issue) a trace from source to sink passing through the given sanitizers should be reported, None otherwise

    bottom = this trace has no source or sink data

    include Absint.AbstractDomain.WithBottom
    include Absint.AbstractDomain.S
    include Absint.AbstractDomain.Comparable
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t

    The bottom value of the domain.

    val is_bottom : t -> bool

    Return true if this is the bottom value

    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list

    path from a source to a sink with passthroughs at each step in the call stack. the first set of passthroughs are the ones in the "reporting" procedure that calls the first function in both the source and sink stack

    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t

    get the sources of the trace.

    val sinks : t -> Sinks.t

    get the sinks of the trace

    val passthroughs : t -> Passthroughs.t

    get the passthroughs of the trace

    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list

    get the reportable source-sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list

    get a path for each of the reportable source -> sink flows in this trace. specifying cur_site restricts the reported paths to ones introduced by the call at cur_site

    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    \ No newline at end of file + Absint.Errlog.loc_trace

    create a loc_trace from a path; source_should_nest s should be true when we are going one deeper into a call-chain, ie when lt_level should be bumper in the next loc_trace_elem, and similarly for sink_should_nest

    val of_source : Source.t -> t

    create a trace from a source

    val of_footprint : Absint.AccessPath.Abs.t -> t

    create a trace from a footprint access path

    val add_source : Source.t -> t -> t

    add a source to the current trace

    val add_sink : Sink.t -> t -> t

    add a sink to the current trace.

    val add_sanitizer : Sanitizer.t -> t -> t

    add a sanitizer to the current trace

    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t

    replace sinks with new ones

    val get_footprint_indexes : t -> IStdlib.IntSet.t

    get the footprint indexes for all of the sources in the trace

    val append : t -> t -> Absint.CallSite.t -> t

    append the trace for given call site to the current caller trace

    val pp : Absint.TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint.TaintTrace.F.formatter -> path -> unit

    pretty-print a path in the context of the given procname

    diff --git a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/index.html b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/index.html index e5b9ba6ec32..b1a19f4c040 100644 --- a/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/index.html +++ b/website/static/odoc/next/infer/Quandary/TaintSpec/module-type-S/index.html @@ -1,5 +1,5 @@ -S (infer.Quandary.TaintSpec.S)

    Module type TaintSpec.S

    module AccessTree : sig ... end
    val handle_unknown_call : +S (infer.Quandary.TaintSpec.S)

    Module type TaintSpec.S

    module AccessTree : sig ... end
    val handle_unknown_call : IR.Procname.t -> IR.Typ.t -> Absint.HilExp.t list -> @@ -10,4 +10,4 @@ Absint.HilExp.t list -> IR.Tenv.t -> AccessTree.t -> - action list option

    returns a model that should be used for the given (procname, return type, actuals, summary) instead of using the summary for the procname

    val is_taintable_type : IR.Typ.t -> bool

    return true if the given typ can be tainted

    val to_summary_access_tree : AccessTree.t -> QuandarySummary.AccessTree.t
    val of_summary_access_tree : QuandarySummary.AccessTree.t -> AccessTree.t
    val name : string
    \ No newline at end of file + action list option

    returns a model that should be used for the given (procname, return type, actuals, summary) instead of using the summary for the procname

    val is_taintable_type : IR.Typ.t -> bool

    return true if the given typ can be tainted

    val to_summary_access_tree : AccessTree.t -> QuandarySummary.AccessTree.t
    val of_summary_access_tree : QuandarySummary.AccessTree.t -> AccessTree.t
    val name : string
    diff --git a/website/static/odoc/next/infer/Quandary/index.html b/website/static/odoc/next/infer/Quandary/index.html index 18c613371e0..841ae96c821 100644 --- a/website/static/odoc/next/infer/Quandary/index.html +++ b/website/static/odoc/next/infer/Quandary/index.html @@ -1,2 +1,2 @@ -Quandary (infer.Quandary)

    Module Quandary

    module ClangTaintAnalysis : sig ... end
    module ClangTrace : sig ... end
    module JavaTaintAnalysis : sig ... end
    module JavaTrace : sig ... end
    module QuandaryConfig : sig ... end

    utilities for importing JSON specifications of sources/sinks into Quandary

    module QuandarySummary : sig ... end

    summary type for Quandary taint analysis

    module TaintAnalysis : sig ... end
    module TaintSpec : sig ... end

    combination of a trace with functions for handling unknown code and converting to and from summaries

    \ No newline at end of file +Quandary (infer.Quandary)

    Module Quandary

    module ClangTaintAnalysis : sig ... end
    module ClangTrace : sig ... end
    module JavaTaintAnalysis : sig ... end
    module JavaTrace : sig ... end
    module QuandaryConfig : sig ... end

    utilities for importing JSON specifications of sources/sinks into Quandary

    module QuandarySummary : sig ... end

    summary type for Quandary taint analysis

    module TaintAnalysis : sig ... end
    module TaintSpec : sig ... end

    combination of a trace with functions for handling unknown code and converting to and from summaries

    diff --git a/website/static/odoc/next/infer/TestDeterminators.html b/website/static/odoc/next/infer/TestDeterminators.html index 93d7d345ef3..0e9fca16629 100644 --- a/website/static/odoc/next/infer/TestDeterminators.html +++ b/website/static/odoc/next/infer/TestDeterminators.html @@ -1,2 +1,2 @@ -TestDeterminators (infer.TestDeterminators)

    Test Determinators

    Call graph analyses that can be used to determine which tests to run in a given project as a result of a code change.

    All modules: TestDeterminators

    \ No newline at end of file +TestDeterminators (infer.TestDeterminators)

    Test Determinators

    Call graph analyses that can be used to determine which tests to run in a given project as a result of a code change.

    All modules: TestDeterminators

    diff --git a/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html b/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html index 3a2c3cc1849..99cb6d632a8 100644 --- a/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html @@ -1,2 +1,2 @@ -VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.TestDeterminators.JProcname.JNI.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module JNI.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type t =
    1. | Boolean
    2. | Byte
    3. | Char
    4. | Short
    5. | Int
    6. | Long
    7. | Float
    8. | Double
    9. | Void
    10. | FullyQualifiedClass of string * string
    11. | Array of t
    12. | Method of t list * t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val parse_str : string -> t list
    val parse_method_str : string -> t list * t
    val pp : Stdlib.Format.formatter -> t -> unit
    \ No newline at end of file +VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY (infer.TestDeterminators.JProcname.JNI.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY)

    Module JNI.VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY

    type t =
    1. | Boolean
    2. | Byte
    3. | Char
    4. | Short
    5. | Int
    6. | Long
    7. | Float
    8. | Double
    9. | Void
    10. | FullyQualifiedClass of string * string
    11. | Array of t
    12. | Method of t list * t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t -> t -> bool
    val parse_str : string -> t list
    val parse_method_str : string -> t list * t
    val pp : Stdlib.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/index.html b/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/index.html index 8f286ab0b75..5eb2dd56cf3 100644 --- a/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/JProcname/JNI/index.html @@ -1,2 +1,2 @@ -JNI (infer.TestDeterminators.JProcname.JNI)

    Module JProcname.JNI

    val void_method_with_no_arguments : string
    \ No newline at end of file +JNI (infer.TestDeterminators.JProcname.JNI)

    Module JProcname.JNI

    val void_method_with_no_arguments : string
    diff --git a/website/static/odoc/next/infer/TestDeterminators/JProcname/index.html b/website/static/odoc/next/infer/TestDeterminators/JProcname/index.html index 21b3855272c..3e19b435a39 100644 --- a/website/static/odoc/next/infer/TestDeterminators/JProcname/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/JProcname/index.html @@ -1,7 +1,7 @@ -JProcname (infer.TestDeterminators.JProcname)

    Module TestDeterminators.JProcname

    module JNI : sig ... end
    val create_procname : - classname:string -> - methodname:string -> - signature:string -> - use_signature:bool -> - IR.Procname.t
    \ No newline at end of file +JProcname (infer.TestDeterminators.JProcname)

    Module TestDeterminators.JProcname

    module JNI : sig ... end
    val create_procname : + classname:string -> + methodname:string -> + signature:string -> + use_signature:bool -> + IR.Procname.t
    diff --git a/website/static/odoc/next/infer/TestDeterminators/JavaProfilerSamples/index.html b/website/static/odoc/next/infer/TestDeterminators/JavaProfilerSamples/index.html index 579b004e847..3091f792e9f 100644 --- a/website/static/odoc/next/infer/TestDeterminators/JavaProfilerSamples/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/JavaProfilerSamples/index.html @@ -1,5 +1,5 @@ -JavaProfilerSamples (infer.TestDeterminators.JavaProfilerSamples)

    Module TestDeterminators.JavaProfilerSamples

    type labeled_profiler_sample = string * IR.Procname.Set.t
    val compare_labeled_profiler_sample : +JavaProfilerSamples (infer.TestDeterminators.JavaProfilerSamples)

    Module TestDeterminators.JavaProfilerSamples

    type labeled_profiler_sample = string * IR.Procname.Set.t
    val compare_labeled_profiler_sample : labeled_profiler_sample -> labeled_profiler_sample -> int
    val equal_labeled_profiler_sample : @@ -7,8 +7,8 @@ labeled_profiler_sample -> bool
    val from_json_string : string -> - use_signature:bool -> + use_signature:bool -> labeled_profiler_sample list
    val from_json_file : string -> - use_signature:bool -> - labeled_profiler_sample list
    \ No newline at end of file + use_signature:bool -> + labeled_profiler_sample list
    diff --git a/website/static/odoc/next/infer/TestDeterminators/TestDeterminator/index.html b/website/static/odoc/next/infer/TestDeterminators/TestDeterminator/index.html index ac41b642608..20d63088601 100644 --- a/website/static/odoc/next/infer/TestDeterminators/TestDeterminator/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/TestDeterminator/index.html @@ -1,13 +1,13 @@ -TestDeterminator (infer.TestDeterminators.TestDeterminator)

    Module TestDeterminators.TestDeterminator

    val compute_and_emit_test_to_run : - ?clang_range_map: +TestDeterminator (infer.TestDeterminators.TestDeterminator)

    Module TestDeterminators.TestDeterminator

    val compute_and_emit_test_to_run : + ?clang_range_map: ((IBase.Location.t * IBase.Location.t) * IBase.ClangProc.t option) IR.Procname.Map.t -> - ?source_file:IBase.SourceFile.t -> + ?source_file:IBase.SourceFile.t -> unit -> unit
    val compute_and_emit_relevant_methods : - clang_range_map: + clang_range_map: ((IBase.Location.t * IBase.Location.t) * IBase.ClangProc.t option) IR.Procname.Map.t -> - source_file:IBase.SourceFile.t -> - unit
    val merge_changed_functions_results : unit -> unit
    val merge_test_determinator_results : unit -> unit
    \ No newline at end of file + source_file:IBase.SourceFile.t -> + unit
    val merge_changed_functions_results : unit -> unit
    val merge_test_determinator_results : unit -> unit
    diff --git a/website/static/odoc/next/infer/TestDeterminators/index.html b/website/static/odoc/next/infer/TestDeterminators/index.html index ef0fb3d231e..e89af439ff3 100644 --- a/website/static/odoc/next/infer/TestDeterminators/index.html +++ b/website/static/odoc/next/infer/TestDeterminators/index.html @@ -1,2 +1,2 @@ -TestDeterminators (infer.TestDeterminators)

    Module TestDeterminators

    module JProcname : sig ... end
    module JavaProfilerSamples : sig ... end
    module TestDeterminator : sig ... end
    \ No newline at end of file +TestDeterminators (infer.TestDeterminators)

    Module TestDeterminators

    module JProcname : sig ... end
    module JavaProfilerSamples : sig ... end
    module TestDeterminator : sig ... end
    diff --git a/website/static/odoc/next/infer/Textuallib/LineMap/index.html b/website/static/odoc/next/infer/Textuallib/LineMap/index.html index 3986c2a9ce5..2db9e554f17 100644 --- a/website/static/odoc/next/infer/Textuallib/LineMap/index.html +++ b/website/static/odoc/next/infer/Textuallib/LineMap/index.html @@ -1,2 +1,2 @@ -LineMap (infer.Textuallib.LineMap)

    Module Textuallib.LineMap

    module F = Stdlib.Format
    type t
    val create : string -> t
    val find : t -> int -> int option
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +LineMap (infer.Textuallib.LineMap)

    Module Textuallib.LineMap

    module F = Stdlib.Format
    type t
    val create : string -> t
    val find : t -> int -> int option
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Attr/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Attr/index.html index 90f5925b2bb..620db459e48 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Attr/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Attr/index.html @@ -1,2 +1,2 @@ -Attr (infer.Textuallib.Textual.Attr)

    Module Textual.Attr

    type t = {
    1. name : string;
    2. values : string list;
    3. loc : Location.t;
    }
    val name : t -> string
    val values : t -> string list
    val mk_source_language : Lang.t -> t
    val mk_static : t
    val mk_final : t
    val is_async : t -> bool
    val is_abstract : t -> bool
    val is_hack_wrapper : t -> bool
    val is_final : t -> bool
    val is_notnull : t -> bool
    val is_static : t -> bool
    val is_interface : t -> bool
    val is_trait : t -> bool
    val is_variadic : t -> bool
    val is_const : t -> bool
    val mk_trait : t
    val pp : F.formatter -> t -> unit
    val pp_with_loc : F.formatter -> t -> unit
    \ No newline at end of file +Attr (infer.Textuallib.Textual.Attr)

    Module Textual.Attr

    type t = {
    1. name : string;
    2. values : string list;
    3. loc : Location.t;
    }
    val name : t -> string
    val values : t -> string list
    val mk_source_language : Lang.t -> t
    val mk_static : t
    val mk_final : t
    val is_async : t -> bool
    val is_abstract : t -> bool
    val is_hack_wrapper : t -> bool
    val is_final : t -> bool
    val is_notnull : t -> bool
    val is_static : t -> bool
    val is_interface : t -> bool
    val is_trait : t -> bool
    val is_variadic : t -> bool
    val is_const : t -> bool
    val mk_trait : t
    val pp : F.formatter -> t -> unit
    val pp_with_loc : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Body/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Body/index.html index 75ee5bffd38..edde180fd53 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Body/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Body/index.html @@ -1,2 +1,2 @@ -Body (infer.Textuallib.Textual.Body)

    Module Textual.Body

    type t = {
    1. nodes : Node.t list;
    2. locals : (VarName.t * Typ.annotated) list;
    }
    val dummy : Location.t -> t
    \ No newline at end of file +Body (infer.Textuallib.Textual.Body)

    Module Textual.Body

    type t = {
    1. nodes : Node.t list;
    2. locals : (VarName.t * Typ.annotated) list;
    }
    val dummy : Location.t -> t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/BoolExp/index.html b/website/static/odoc/next/infer/Textuallib/Textual/BoolExp/index.html index 4bc2721c698..f4bbb1f7005 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/BoolExp/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/BoolExp/index.html @@ -1,2 +1,2 @@ -BoolExp (infer.Textuallib.Textual.BoolExp)

    Module Textual.BoolExp

    type t =
    1. | Exp of Exp.t
    2. | Not of t
    3. | And of t * t
    4. | Or of t * t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +BoolExp (infer.Textuallib.Textual.BoolExp)

    Module Textual.BoolExp

    type t =
    1. | Exp of Exp.t
    2. | Not of t
    3. | And of t * t
    4. | Or of t * t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Const/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Const/index.html index 775c7d1a1ba..918f8fc5522 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Const/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Const/index.html @@ -1,2 +1,2 @@ -Const (infer.Textuallib.Textual.Const)

    Module Textual.Const

    type t =
    1. | Int of Z.t
      (*

      integer constants

      *)
    2. | Null
    3. | Str of string
      (*

      string constants

      *)
    4. | Float of float
      (*

      float constants

      *)
    \ No newline at end of file +Const (infer.Textuallib.Textual.Const)

    Module Textual.Const

    type t =
    1. | Int of Z.t
      (*

      integer constants

      *)
    2. | Null
    3. | Str of string
      (*

      string constants

      *)
    4. | Float of float
      (*

      float constants

      *)
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Exp/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Exp/index.html index a89b9c1f87e..8619e50df45 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Exp/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Exp/index.html @@ -1,2 +1,2 @@ -Exp (infer.Textuallib.Textual.Exp)

    Module Textual.Exp

    type call_kind =
    1. | Virtual
    2. | NonVirtual
    val equal_call_kind : call_kind -> call_kind -> bool
    type t =
    1. | Var of Ident.t
      (*

      pure variable: it is not an lvalue

      *)
    2. | Load of {
      1. exp : t;
      2. typ : Typ.t option;
      }
    3. | Lvar of VarName.t
      (*

      the address of a program variable

      *)
    4. | Field of {
      1. exp : t;
      2. field : qualified_fieldname;
      }
      (*

      field offset

      *)
    5. | Index of t * t
      (*

      an array index offset: exp1[exp2]

      *)
    6. | Const of Const.t
    7. | Call of {
      1. proc : QualifiedProcName.t;
      2. args : t list;
      3. kind : call_kind;
      }
    8. | Closure of {
      1. proc : QualifiedProcName.t;
      2. captured : t list;
      3. params : VarName.t list;
      }
    9. | Apply of {
      1. closure : t;
      2. args : t list;
      }
    10. | Typ of Typ.t
    val call_non_virtual : QualifiedProcName.t -> t list -> t
    val call_virtual : QualifiedProcName.t -> t -> t list -> t
    val call_sig : QualifiedProcName.t -> int -> Lang.t option -> ProcSig.t
    val allocate_object : TypeName.t -> t
    val not : t -> t
    val cast : Typ.t -> t -> t
    val vars : t -> Ident.Set.t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Exp (infer.Textuallib.Textual.Exp)

    Module Textual.Exp

    type call_kind =
    1. | Virtual
    2. | NonVirtual
    val equal_call_kind : call_kind -> call_kind -> bool
    type t =
    1. | Var of Ident.t
      (*

      pure variable: it is not an lvalue

      *)
    2. | Load of {
      1. exp : t;
      2. typ : Typ.t option;
      }
    3. | Lvar of VarName.t
      (*

      the address of a program variable

      *)
    4. | Field of {
      1. exp : t;
      2. field : qualified_fieldname;
      }
      (*

      field offset

      *)
    5. | Index of t * t
      (*

      an array index offset: exp1[exp2]

      *)
    6. | Const of Const.t
    7. | Call of {
      1. proc : QualifiedProcName.t;
      2. args : t list;
      3. kind : call_kind;
      }
    8. | Closure of {
      1. proc : QualifiedProcName.t;
      2. captured : t list;
      3. params : VarName.t list;
      }
    9. | Apply of {
      1. closure : t;
      2. args : t list;
      }
    10. | Typ of Typ.t
    val call_non_virtual : QualifiedProcName.t -> t list -> t
    val call_virtual : QualifiedProcName.t -> t -> t list -> t
    val call_sig : QualifiedProcName.t -> int -> Lang.t option -> ProcSig.t
    val allocate_object : TypeName.t -> t
    val not : t -> t
    val cast : Typ.t -> t -> t
    val vars : t -> Ident.Set.t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/FieldDecl/index.html b/website/static/odoc/next/infer/Textuallib/Textual/FieldDecl/index.html index f7569613f7b..d981e1343d7 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/FieldDecl/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/FieldDecl/index.html @@ -1,2 +1,2 @@ -FieldDecl (infer.Textuallib.Textual.FieldDecl)

    Module Textual.FieldDecl

    type t = {
    1. qualified_name : qualified_fieldname;
    2. typ : Typ.t;
    3. attributes : Attr.t list;
    }
    \ No newline at end of file +FieldDecl (infer.Textuallib.Textual.FieldDecl)

    Module Textual.FieldDecl

    type t = {
    1. qualified_name : qualified_fieldname;
    2. typ : Typ.t;
    3. attributes : Attr.t list;
    }
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/FieldName/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/FieldName/HashSet/index.html index 01508dd843b..3e3258ceaed 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/FieldName/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/FieldName/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.FieldName.HashSet)

    Module FieldName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.FieldName.HashSet)

    Module FieldName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/FieldName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/FieldName/index.html index 2bb3cfe1335..e296fe2413a 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/FieldName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/FieldName/index.html @@ -1,2 +1,2 @@ -FieldName (infer.Textuallib.Textual.FieldName)

    Module Textual.FieldName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +FieldName (infer.Textuallib.Textual.FieldName)

    Module Textual.FieldName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Global/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Global/index.html index eb0a3ec2dd2..8cadbf2d247 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Global/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Global/index.html @@ -1,2 +1,2 @@ -Global (infer.Textuallib.Textual.Global)

    Module Textual.Global

    type t = {
    1. name : VarName.t;
    2. typ : Typ.t;
    3. attributes : Attr.t list;
    }
    \ No newline at end of file +Global (infer.Textuallib.Textual.Global)

    Module Textual.Global

    type t = {
    1. name : VarName.t;
    2. typ : Typ.t;
    3. attributes : Attr.t list;
    }
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Ident/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Ident/index.html index 9037d516cf8..38b58f6421a 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Ident/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Ident/index.html @@ -1,2 +1,2 @@ -Ident (infer.Textuallib.Textual.Ident)

    Module Textual.Ident

    type t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    val of_int : int -> t
    val to_int : t -> int
    val next : t -> t
    val fresh : Set.t -> t
    val to_ssa_var : t -> VarName.t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Ident (infer.Textuallib.Textual.Ident)

    Module Textual.Ident

    type t
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    val of_int : int -> t
    val to_int : t -> int
    val next : t -> t
    val fresh : Set.t -> t
    val to_ssa_var : t -> VarName.t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Instr/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Instr/index.html index 9351c581d27..b7ec983e0bd 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Instr/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Instr/index.html @@ -1,2 +1,2 @@ -Instr (infer.Textuallib.Textual.Instr)

    Module Textual.Instr

    type t =
    1. | Load of {
      1. id : Ident.t;
      2. exp : Exp.t;
      3. typ : Typ.t option;
      4. loc : Location.t;
      }
      (*

      id <- *exp with *exp:typ

      *)
    2. | Store of {
      1. exp1 : Exp.t;
      2. typ : Typ.t option;
      3. exp2 : Exp.t;
      4. loc : Location.t;
      }
      (*

      *exp1 <- exp2 with exp2:typ

      *)
    3. | Prune of {
      1. exp : Exp.t;
      2. loc : Location.t;
      }
      (*

      assume exp

      *)
    4. | Let of {
      1. id : Ident.t;
      2. exp : Exp.t;
      3. loc : Location.t;
      }
      (*

      id = exp

      *)
    val loc : t -> Location.t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Instr (infer.Textuallib.Textual.Instr)

    Module Textual.Instr

    type t =
    1. | Load of {
      1. id : Ident.t;
      2. exp : Exp.t;
      3. typ : Typ.t option;
      4. loc : Location.t;
      }
      (*

      id <- *exp with *exp:typ

      *)
    2. | Store of {
      1. exp1 : Exp.t;
      2. typ : Typ.t option;
      3. exp2 : Exp.t;
      4. loc : Location.t;
      }
      (*

      *exp1 <- exp2 with exp2:typ

      *)
    3. | Prune of {
      1. exp : Exp.t;
      2. loc : Location.t;
      }
      (*

      assume exp

      *)
    4. | Let of {
      1. id : Ident.t;
      2. exp : Exp.t;
      3. loc : Location.t;
      }
      (*

      id = exp

      *)
    val loc : t -> Location.t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Lang/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Lang/index.html index fe83b72a043..eafb868cc65 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Lang/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Lang/index.html @@ -1,2 +1,2 @@ -Lang (infer.Textuallib.Textual.Lang)

    Module Textual.Lang

    type t =
    1. | Java
    2. | Hack
    3. | Python
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val of_string : string -> t option
    val to_string : t -> string
    \ No newline at end of file +Lang (infer.Textuallib.Textual.Lang)

    Module Textual.Lang

    type t =
    1. | Java
    2. | Hack
    3. | Python
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val of_string : string -> t option
    val to_string : t -> string
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Location/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Location/index.html index b1342d66186..eb6b6947d1e 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Location/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Location/index.html @@ -1,2 +1,2 @@ -Location (infer.Textuallib.Textual.Location)

    Module Textual.Location

    type t =
    1. | Known of {
      1. line : int;
      2. col : int;
      }
    2. | Unknown
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val known : line:int -> col:int -> t
    val pp : F.formatter -> t -> unit
    val pp_line : F.formatter -> t -> unit
    \ No newline at end of file +Location (infer.Textuallib.Textual.Location)

    Module Textual.Location

    type t =
    1. | Known of {
      1. line : int;
      2. col : int;
      }
    2. | Unknown
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val known : line:int -> col:int -> t
    val pp : F.formatter -> t -> unit
    val pp_line : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Module/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Module/index.html index 7aa8835a88d..04276edb52a 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Module/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Module/index.html @@ -1,2 +1,2 @@ -Module (infer.Textuallib.Textual.Module)

    Module Textual.Module

    type decl =
    1. | Global of Global.t
    2. | Struct of Struct.t
    3. | Procdecl of ProcDecl.t
    4. | Proc of ProcDesc.t
    type t = {
    1. attrs : Attr.t list;
    2. decls : decl list;
    3. sourcefile : SourceFile.t;
    }
    val lang : t -> Lang.t option
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +Module (infer.Textuallib.Textual.Module)

    Module Textual.Module

    type decl =
    1. | Global of Global.t
    2. | Struct of Struct.t
    3. | Procdecl of ProcDecl.t
    4. | Proc of ProcDesc.t
    type t = {
    1. attrs : Attr.t list;
    2. decls : decl list;
    3. sourcefile : SourceFile.t;
    }
    val lang : t -> Lang.t option
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Node/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Node/index.html index b77550b843c..46dfce830e0 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Node/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.Textuallib.Textual.Node)

    Module Textual.Node

    type t = {
    1. label : NodeName.t;
    2. ssa_parameters : (Ident.t * Typ.t) list;
    3. exn_succs : NodeName.t list;
      (*

      successor exception nodes

      *)
    4. last : Terminator.t;
    5. instrs : Instr.t list;
    6. last_loc : Location.t;
      (*

      location of last instruction in file

      *)
    7. label_loc : Location.t;
      (*

      location of label in file

      *)
    }
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    \ No newline at end of file +Node (infer.Textuallib.Textual.Node)

    Module Textual.Node

    type t = {
    1. label : NodeName.t;
    2. ssa_parameters : (Ident.t * Typ.t) list;
    3. exn_succs : NodeName.t list;
      (*

      successor exception nodes

      *)
    4. last : Terminator.t;
    5. instrs : Instr.t list;
    6. last_loc : Location.t;
      (*

      location of last instruction in file

      *)
    7. label_loc : Location.t;
      (*

      location of label in file

      *)
    }
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/NodeName/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/NodeName/HashSet/index.html index a7a7ced0fe1..05d323fe958 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/NodeName/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/NodeName/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.NodeName.HashSet)

    Module NodeName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.NodeName.HashSet)

    Module NodeName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/NodeName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/NodeName/index.html index 57c3e76acaa..35ed4ed8ef2 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/NodeName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/NodeName/index.html @@ -1,2 +1,2 @@ -NodeName (infer.Textuallib.Textual.NodeName)

    Module Textual.NodeName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +NodeName (infer.Textuallib.Textual.NodeName)

    Module Textual.NodeName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/ProcDecl/index.html b/website/static/odoc/next/infer/Textuallib/Textual/ProcDecl/index.html index 1d92c92a408..1f35fef1b77 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/ProcDecl/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/ProcDecl/index.html @@ -1,2 +1,2 @@ -ProcDecl (infer.Textuallib.Textual.ProcDecl)

    Module Textual.ProcDecl

    type t = {
    1. qualified_name : QualifiedProcName.t;
    2. formals_types : Typ.annotated list option;
      (*

      The list of formal argument types may be unknown. Currently, it is possible only for external function declarations when translating from Hack and is denoted with a special ... syntax. Functions defined within a textual module always have a fully declared list of formal parameters.

      *)
    3. result_type : Typ.annotated;
    4. attributes : Attr.t list;
    }
    val formals_or_die : ?context:string -> t -> Typ.annotated list
    val to_sig : t -> Lang.t option -> ProcSig.t
    val pp : F.formatter -> t -> unit
    val to_unop : QualifiedProcName.t -> IR.Unop.t option
    val to_binop : QualifiedProcName.t -> IR.Binop.t option
    val is_cast_builtin : QualifiedProcName.t -> bool
    val is_generics_constructor_builtin : QualifiedProcName.t -> bool
    val is_instanceof_builtin : QualifiedProcName.t -> bool
    val allocate_object_name : QualifiedProcName.t
    val is_allocate_object_builtin : QualifiedProcName.t -> bool
    val allocate_array_name : QualifiedProcName.t
    val is_allocate_array_builtin : QualifiedProcName.t -> bool
    val is_get_lazy_class_builtin : QualifiedProcName.t -> bool
    val is_lazy_class_initialize_builtin : QualifiedProcName.t -> bool
    val is_side_effect_free_sil_expr : QualifiedProcName.t -> bool
    val is_not_regular_proc : QualifiedProcName.t -> bool
    val is_curry_invoke : t -> bool
    val is_variadic : t -> bool
    \ No newline at end of file +ProcDecl (infer.Textuallib.Textual.ProcDecl)

    Module Textual.ProcDecl

    type t = {
    1. qualified_name : QualifiedProcName.t;
    2. formals_types : Typ.annotated list option;
      (*

      The list of formal argument types may be unknown. Currently, it is possible only for external function declarations when translating from Hack and is denoted with a special ... syntax. Functions defined within a textual module always have a fully declared list of formal parameters.

      *)
    3. result_type : Typ.annotated;
    4. attributes : Attr.t list;
    }
    val formals_or_die : ?context:string -> t -> Typ.annotated list
    val to_sig : t -> Lang.t option -> ProcSig.t
    val pp : F.formatter -> t -> unit
    val to_unop : QualifiedProcName.t -> IR.Unop.t option
    val to_binop : QualifiedProcName.t -> IR.Binop.t option
    val is_cast_builtin : QualifiedProcName.t -> bool
    val is_generics_constructor_builtin : QualifiedProcName.t -> bool
    val is_instanceof_builtin : QualifiedProcName.t -> bool
    val allocate_object_name : QualifiedProcName.t
    val is_allocate_object_builtin : QualifiedProcName.t -> bool
    val allocate_array_name : QualifiedProcName.t
    val is_allocate_array_builtin : QualifiedProcName.t -> bool
    val is_get_lazy_class_builtin : QualifiedProcName.t -> bool
    val is_lazy_class_initialize_builtin : QualifiedProcName.t -> bool
    val is_side_effect_free_sil_expr : QualifiedProcName.t -> bool
    val is_not_regular_proc : QualifiedProcName.t -> bool
    val is_curry_invoke : t -> bool
    val is_variadic : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/ProcDesc/index.html b/website/static/odoc/next/infer/Textuallib/Textual/ProcDesc/index.html index 93185cf34e5..a0df9e0f646 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/ProcDesc/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/ProcDesc/index.html @@ -1,2 +1,2 @@ -ProcDesc (infer.Textuallib.Textual.ProcDesc)

    Module Textual.ProcDesc

    type t = {
    1. procdecl : ProcDecl.t;
    2. nodes : Node.t list;
    3. start : NodeName.t;
    4. params : VarName.t list;
    5. locals : (VarName.t * Typ.annotated) list;
    6. exit_loc : Location.t;
    }
    val pp : F.formatter -> t -> unit
    val formals : t -> Typ.annotated list
    val is_ready_for_to_sil_conversion : t -> bool
    \ No newline at end of file +ProcDesc (infer.Textuallib.Textual.ProcDesc)

    Module Textual.ProcDesc

    type t = {
    1. procdecl : ProcDecl.t;
    2. nodes : Node.t list;
    3. start : NodeName.t;
    4. params : VarName.t list;
    5. locals : (VarName.t * Typ.annotated) list;
    6. exit_loc : Location.t;
    }
    val pp : F.formatter -> t -> unit
    val formals : t -> Typ.annotated list
    val is_ready_for_to_sil_conversion : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/ProcName/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/ProcName/HashSet/index.html index fd5dea8e532..20ccba3ca5f 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/ProcName/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/ProcName/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.ProcName.HashSet)

    Module ProcName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.ProcName.HashSet)

    Module ProcName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/ProcName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/ProcName/index.html index b739ec57175..b920f3e38a1 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/ProcName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/ProcName/index.html @@ -1,2 +1,2 @@ -ProcName (infer.Textuallib.Textual.ProcName)

    Module Textual.ProcName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +ProcName (infer.Textuallib.Textual.ProcName)

    Module Textual.ProcName

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/ProcSig/index.html b/website/static/odoc/next/infer/Textuallib/Textual/ProcSig/index.html index 1392e40dc98..6012a150d56 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/ProcSig/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/ProcSig/index.html @@ -1,2 +1,2 @@ -ProcSig (infer.Textuallib.Textual.ProcSig)

    Module Textual.ProcSig

    type t =
    1. | Hack of {
      1. qualified_name : QualifiedProcName.t;
      2. arity : int option;
      }
      (*

      Hack doesn't support function overloading but it does support functions with default arguments. This means that a procedure is uniquely identified by its name and the number of arguments.

      *)
    2. | Python of {
      1. qualified_name : QualifiedProcName.t;
      2. arity : int option;
      }
      (*

      Python supports function overloading and default arguments. This means that a procedure is uniquely identified by its name and the number of arguments.

      *)
    3. | Other of {
      1. qualified_name : QualifiedProcName.t;
      }
      (*

      Catch-all case for languages that currently lack support for function overloading at the Textual level.

      For instance, in C++ and Java the signature consists of a procedure name and types of formals. However, the syntax of procedure calls in Textual doesn't give us the types of formals and inferring them from the types of arguments would be brittle. We should extend the syntax of Textual to allow unambiguous call target resolution when we need to add support for other languages.

      *)

    Signature uniquely identifies a called procedure in a target language.

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val to_qualified_procname : t -> QualifiedProcName.t
    val arity : t -> int option
    val incr_arity : t -> t
    val decr_arity : t -> int -> t
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    \ No newline at end of file +ProcSig (infer.Textuallib.Textual.ProcSig)

    Module Textual.ProcSig

    type t =
    1. | Hack of {
      1. qualified_name : QualifiedProcName.t;
      2. arity : int option;
      }
      (*

      Hack doesn't support function overloading but it does support functions with default arguments. This means that a procedure is uniquely identified by its name and the number of arguments.

      *)
    2. | Python of {
      1. qualified_name : QualifiedProcName.t;
      2. arity : int option;
      }
      (*

      Python supports function overloading and default arguments. This means that a procedure is uniquely identified by its name and the number of arguments.

      *)
    3. | Other of {
      1. qualified_name : QualifiedProcName.t;
      }
      (*

      Catch-all case for languages that currently lack support for function overloading at the Textual level.

      For instance, in C++ and Java the signature consists of a procedure name and types of formals. However, the syntax of procedure calls in Textual doesn't give us the types of formals and inferring them from the types of arguments would be brittle. We should extend the syntax of Textual to allow unambiguous call target resolution when we need to add support for other languages.

      *)

    Signature uniquely identifies a called procedure in a target language.

    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val to_qualified_procname : t -> QualifiedProcName.t
    val arity : t -> int option
    val incr_arity : t -> t
    val decr_arity : t -> int -> t
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/QualifiedProcName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/QualifiedProcName/index.html index 51af1552579..407d3b433f0 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/QualifiedProcName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/QualifiedProcName/index.html @@ -1,2 +1,2 @@ -QualifiedProcName (infer.Textuallib.Textual.QualifiedProcName)

    Module Textual.QualifiedProcName

    type enclosing_class =
    1. | TopLevel
    2. | Enclosing of TypeName.t
    type t = {
    1. enclosing_class : enclosing_class;
    2. name : ProcName.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : F.formatter -> t -> unit
    val name : t -> ProcName.t
    val contains_wildcard : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    \ No newline at end of file +QualifiedProcName (infer.Textuallib.Textual.QualifiedProcName)

    Module Textual.QualifiedProcName

    type enclosing_class =
    1. | TopLevel
    2. | Enclosing of TypeName.t
    type t = {
    1. enclosing_class : enclosing_class;
    2. name : ProcName.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val pp : F.formatter -> t -> unit
    val name : t -> ProcName.t
    val contains_wildcard : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/SourceFile/index.html b/website/static/odoc/next/infer/Textuallib/Textual/SourceFile/index.html index 0503f77393d..9a02f5bb45e 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/SourceFile/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/SourceFile/index.html @@ -1,2 +1,2 @@ -SourceFile (infer.Textuallib.Textual.SourceFile)

    Module Textual.SourceFile

    type t
    val create : ?line_map:LineMap.t -> string -> t
    val line_map : t -> LineMap.t option
    val file : t -> IBase.SourceFile.t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +SourceFile (infer.Textuallib.Textual.SourceFile)

    Module Textual.SourceFile

    type t
    val create : ?line_map:LineMap.t -> string -> t
    val line_map : t -> LineMap.t option
    val file : t -> IBase.SourceFile.t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/SsaVerification/index.html b/website/static/odoc/next/infer/Textuallib/Textual/SsaVerification/index.html index d19eb94f2bb..71ae3609099 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/SsaVerification/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/SsaVerification/index.html @@ -1,2 +1,2 @@ -SsaVerification (infer.Textuallib.Textual.SsaVerification)

    Module Textual.SsaVerification

    val run : ProcDesc.t -> unit
    \ No newline at end of file +SsaVerification (infer.Textuallib.Textual.SsaVerification)

    Module Textual.SsaVerification

    val run : ProcDesc.t -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Struct/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Struct/index.html index ac44fd1817c..a66149527e0 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Struct/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Struct/index.html @@ -1,2 +1,2 @@ -Struct (infer.Textuallib.Textual.Struct)

    Module Textual.Struct

    type t = {
    1. name : TypeName.t;
    2. supers : TypeName.t list;
    3. fields : FieldDecl.t list;
    4. attributes : Attr.t list;
    }
    \ No newline at end of file +Struct (infer.Textuallib.Textual.Struct)

    Module Textual.Struct

    type t = {
    1. name : TypeName.t;
    2. supers : TypeName.t list;
    3. fields : FieldDecl.t list;
    4. attributes : Attr.t list;
    }
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Terminator/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Terminator/index.html index f9f17ef3a15..f27c2383e3a 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Terminator/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Terminator/index.html @@ -1,2 +1,2 @@ -Terminator (infer.Textuallib.Textual.Terminator)

    Module Textual.Terminator

    type node_call = {
    1. label : NodeName.t;
    2. ssa_args : Exp.t list;
    }
    type t =
    1. | If of {
      1. bexp : BoolExp.t;
      2. then_ : t;
      3. else_ : t;
      }
    2. | Ret of Exp.t
    3. | Jump of node_call list
      (*

      non empty list

      *)
    4. | Throw of Exp.t
    5. | Unreachable
    \ No newline at end of file +Terminator (infer.Textuallib.Textual.Terminator)

    Module Textual.Terminator

    type node_call = {
    1. label : NodeName.t;
    2. ssa_args : Exp.t list;
    }
    type t =
    1. | If of {
      1. bexp : BoolExp.t;
      2. then_ : t;
      3. else_ : t;
      }
    2. | Ret of Exp.t
    3. | Jump of node_call list
      (*

      non empty list

      *)
    4. | Throw of Exp.t
    5. | Unreachable
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/Typ/index.html b/website/static/odoc/next/infer/Textuallib/Textual/Typ/index.html index 72d25ed8bd3..4da34ea1881 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/Typ/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/Typ/index.html @@ -1,2 +1,2 @@ -Typ (infer.Textuallib.Textual.Typ)

    Module Textual.Typ

    type t =
    1. | Int
      (*

      integer type

      *)
    2. | Float
      (*

      float type

      *)
    3. | Null
    4. | Void
      (*

      void type

      *)
    5. | Ptr of t
      (*

      pointer type

      *)
    6. | Struct of TypeName.t
      (*

      structured value type name

      *)
    7. | Array of t
      (*

      array type

      *)
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    type annotated = {
    1. typ : t;
    2. attributes : Attr.t list;
    }
    val is_annotated : f:(Attr.t -> bool) -> annotated -> bool
    val mk_without_attributes : t -> annotated
    \ No newline at end of file +Typ (infer.Textuallib.Textual.Typ)

    Module Textual.Typ

    type t =
    1. | Int
      (*

      integer type

      *)
    2. | Float
      (*

      float type

      *)
    3. | Null
    4. | Void
      (*

      void type

      *)
    5. | Ptr of t
      (*

      pointer type

      *)
    6. | Struct of TypeName.t
      (*

      structured value type name

      *)
    7. | Array of t
      (*

      array type

      *)
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    val pp : F.formatter -> t -> unit
    type annotated = {
    1. typ : t;
    2. attributes : Attr.t list;
    }
    val is_annotated : f:(Attr.t -> bool) -> annotated -> bool
    val mk_without_attributes : t -> annotated
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/TypeName/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/TypeName/HashSet/index.html index 213742a1978..c4091292fc3 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/TypeName/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/TypeName/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.TypeName.HashSet)

    Module TypeName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.TypeName.HashSet)

    Module TypeName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/TypeName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/TypeName/index.html index 28d69c37fa7..197424a269a 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/TypeName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/TypeName/index.html @@ -1,2 +1,2 @@ -TypeName (infer.Textuallib.Textual.TypeName)

    Module Textual.TypeName

    include NAME
    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    val hack_generics : t
    val wildcard : t
    \ No newline at end of file +TypeName (infer.Textuallib.Textual.TypeName)

    Module Textual.TypeName

    include NAME
    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    val hack_generics : t
    val wildcard : t
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/VarName/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/VarName/HashSet/index.html index f37feec78dc..43c42037ff7 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/VarName/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/VarName/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.VarName.HashSet)

    Module VarName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.VarName.HashSet)

    Module VarName.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/VarName/index.html b/website/static/odoc/next/infer/Textuallib/Textual/VarName/index.html index 6ddadb7692c..0ea309dc0d9 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/VarName/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/VarName/index.html @@ -1,2 +1,2 @@ -VarName (infer.Textuallib.Textual.VarName)

    Module Textual.VarName

    include NAME
    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    val is_hack_reified_generics_param : t -> bool
    \ No newline at end of file +VarName (infer.Textuallib.Textual.VarName)

    Module Textual.VarName

    include NAME
    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    val is_hack_reified_generics_param : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/index.html b/website/static/odoc/next/infer/Textuallib/Textual/index.html index 71dd27da75b..2fca7bc2073 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/index.html @@ -1,2 +1,2 @@ -Textual (infer.Textuallib.Textual)

    Module Textuallib.Textual

    module F = Stdlib.Format
    module Hashtbl = IStdlib.IStd.Caml.Hashtbl
    module Lang : sig ... end
    module Location : sig ... end
    module type NAME = sig ... end
    module ProcName : NAME
    module VarName : sig ... end
    module FieldName : NAME
    val builtin_allocate : string
    module NodeName : NAME
    module TypeName : sig ... end
    module QualifiedProcName : sig ... end
    type qualified_fieldname = {
    1. enclosing_class : TypeName.t;
    2. name : FieldName.t;
    }
    val pp_qualified_fieldname : F.formatter -> qualified_fieldname -> unit
    module Attr : sig ... end
    module Typ : sig ... end
    module Ident : sig ... end
    module Const : sig ... end
    module ProcSig : sig ... end
    module ProcDecl : sig ... end
    module Global : sig ... end
    module FieldDecl : sig ... end
    module Exp : sig ... end
    module BoolExp : sig ... end
    module Instr : sig ... end
    module Terminator : sig ... end
    module Node : sig ... end
    module ProcDesc : sig ... end
    module Body : sig ... end
    module Struct : sig ... end
    module SsaVerification : sig ... end
    module SourceFile : sig ... end
    module Module : sig ... end
    type transform_error = {
    1. loc : Location.t;
    2. msg : string IStdlib.IStd.Lazy.t;
    }
    val pp_transform_error : SourceFile.t -> F.formatter -> transform_error -> unit
    exception TextualTransformError of transform_error list
    exception SpecialSyntaxError of Location.t * string
    \ No newline at end of file +Textual (infer.Textuallib.Textual)

    Module Textuallib.Textual

    module F = Stdlib.Format
    module Hashtbl = IStdlib.IStd.Caml.Hashtbl
    module Lang : sig ... end
    module Location : sig ... end
    module type NAME = sig ... end
    module ProcName : NAME
    module VarName : sig ... end
    module FieldName : NAME
    val builtin_allocate : string
    module NodeName : NAME
    module TypeName : sig ... end
    module QualifiedProcName : sig ... end
    type qualified_fieldname = {
    1. enclosing_class : TypeName.t;
    2. name : FieldName.t;
    }
    val pp_qualified_fieldname : F.formatter -> qualified_fieldname -> unit
    module Attr : sig ... end
    module Typ : sig ... end
    module Ident : sig ... end
    module Const : sig ... end
    module ProcSig : sig ... end
    module ProcDecl : sig ... end
    module Global : sig ... end
    module FieldDecl : sig ... end
    module Exp : sig ... end
    module BoolExp : sig ... end
    module Instr : sig ... end
    module Terminator : sig ... end
    module Node : sig ... end
    module ProcDesc : sig ... end
    module Body : sig ... end
    module Struct : sig ... end
    module SsaVerification : sig ... end
    module SourceFile : sig ... end
    module Module : sig ... end
    type transform_error = {
    1. loc : Location.t;
    2. msg : string IStdlib.IStd.Lazy.t;
    }
    val pp_transform_error : SourceFile.t -> F.formatter -> transform_error -> unit
    exception TextualTransformError of transform_error list
    exception SpecialSyntaxError of Location.t * string
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/HashSet/index.html b/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/HashSet/index.html index 2e6271d6a41..2c1aaa209be 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/HashSet/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/HashSet/index.html @@ -1,2 +1,2 @@ -HashSet (infer.Textuallib.Textual.NAME.HashSet)

    Module NAME.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    \ No newline at end of file +HashSet (infer.Textuallib.Textual.NAME.HashSet)

    Module NAME.HashSet

    type elt = t
    type t
    val create : int -> t
    val singleton : elt -> t
    val add : elt -> t -> unit
    val remove : elt -> t -> unit
    val remove_all : elt Iter.t -> t -> unit
    val iter : t -> elt Iter.t
    val seq : t -> elt Stdlib.Seq.t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val length : t -> int
    val mem : t -> elt -> bool
    val clear : t -> unit
    val union_into : into:t -> t -> unit
    val is_empty : t -> bool
    diff --git a/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/index.html b/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/index.html index 7f4ec6c4eb7..e698b51a48b 100644 --- a/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/index.html +++ b/website/static/odoc/next/infer/Textuallib/Textual/module-type-NAME/index.html @@ -1,2 +1,2 @@ -NAME (infer.Textuallib.Textual.NAME)

    Module type Textual.NAME

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    \ No newline at end of file +NAME (infer.Textuallib.Textual.NAME)

    Module type Textual.NAME

    type t = {
    1. value : string;
    2. loc : Location.t;
    }
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    include Ppx_compare_lib.Equal.S with type t := t
    val equal : t Base__Ppx_compare_lib.equal
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val of_java_name : string -> t
    val pp : F.formatter -> t -> unit
    val is_hack_init : t -> bool
    module Hashtbl : Hashtbl.S with type key = t
    module HashSet : IStdlib.HashSet.S with type elt = t
    module Map : IStdlib.IStd.Caml.Map.S with type key = t
    module Set : IStdlib.IStd.Caml.Set.S with type elt = t
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualBasicVerification/index.html b/website/static/odoc/next/infer/Textuallib/TextualBasicVerification/index.html index 40db705a685..eec42b0d36a 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualBasicVerification/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualBasicVerification/index.html @@ -1,2 +1,2 @@ -TextualBasicVerification (infer.Textuallib.TextualBasicVerification)

    Module Textuallib.TextualBasicVerification

    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    \ No newline at end of file +TextualBasicVerification (infer.Textuallib.TextualBasicVerification)

    Module Textuallib.TextualBasicVerification

    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualDecls/ProcEntry/index.html b/website/static/odoc/next/infer/Textuallib/TextualDecls/ProcEntry/index.html index 06a38a5adb0..eba5d190473 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualDecls/ProcEntry/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualDecls/ProcEntry/index.html @@ -1,2 +1,2 @@ -ProcEntry (infer.Textuallib.TextualDecls.ProcEntry)

    Module TextualDecls.ProcEntry

    type t =
    1. | Decl of Textual.ProcDecl.t
    2. | Desc of Textual.ProcDesc.t
    \ No newline at end of file +ProcEntry (infer.Textuallib.TextualDecls.ProcEntry)

    Module TextualDecls.ProcEntry

    type t =
    1. | Decl of Textual.ProcDecl.t
    2. | Desc of Textual.ProcDesc.t
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualDecls/index.html b/website/static/odoc/next/infer/Textuallib/TextualDecls/index.html index 9449ebe80a3..57ed6a97653 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualDecls/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualDecls/index.html @@ -1,12 +1,12 @@ -TextualDecls (infer.Textuallib.TextualDecls)

    Module Textuallib.TextualDecls

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    module ProcEntry : sig ... end
    val init : Textual.SourceFile.t -> Textual.Lang.t option -> t
    val declare_global : t -> Textual.Global.t -> unit
    val declare_proc : t -> ProcEntry.t -> unit
    val declare_struct : t -> Textual.Struct.t -> unit
    val fold_globals : +TextualDecls (infer.Textuallib.TextualDecls)

    Module Textuallib.TextualDecls

    type t
    val pp : Stdlib.Format.formatter -> t -> unit
    module ProcEntry : sig ... end
    val init : Textual.SourceFile.t -> Textual.Lang.t option -> t
    val declare_global : t -> Textual.Global.t -> unit
    val declare_proc : t -> ProcEntry.t -> unit
    val declare_struct : t -> Textual.Struct.t -> unit
    val fold_globals : t -> - init:'a -> - f:('a -> Textual.VarName.t -> Textual.Global.t -> 'a) -> - 'a
    val fold_procdecls : t -> init:'a -> f:('a -> Textual.ProcDecl.t -> 'a) -> 'a
    val fold_structs : + init:'a -> + f:('a -> Textual.VarName.t -> Textual.Global.t -> 'a) -> + 'a
    val fold_procdecls : t -> init:'a -> f:('a -> Textual.ProcDecl.t -> 'a) -> 'a
    val fold_structs : t -> - init:'a -> - f:('a -> Textual.TypeName.t -> Textual.Struct.t -> 'a) -> + init:'a -> + f:('a -> Textual.TypeName.t -> Textual.Struct.t -> 'a) -> 'a
    val get_fielddecl : t -> Textual.qualified_fieldname -> @@ -17,4 +17,4 @@ (variadic_status * generics_status * Textual.ProcDecl.t) option
    val get_procdesc : t -> Textual.ProcSig.t -> Textual.ProcDesc.t option
    val get_proc_entries_by_enclosing_class : t -> ProcEntry.t list Textuallib.Textual.TypeName.Map.t - * Textuallib.Textual.TypeName.Set.t

    returns 1) in a map, all function implementation and declarations, indexed by the name of their enclosing class 2) the set of all enclosing class that were not introduced by a type declaration

    val get_struct : t -> Textual.TypeName.t -> Textual.Struct.t option
    val is_field_declared : t -> Textual.qualified_fieldname -> bool
    val is_defined_in_a_trait : t -> Textual.QualifiedProcName.t -> bool
    val is_trait_method : t -> Textual.ProcSig.t -> bool
    val source_file : t -> Textual.SourceFile.t
    val lang : t -> Textual.Lang.t option
    val get_undefined_types : t -> Textual.TypeName.t Stdlib.Seq.t
    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    val make_decls : Textual.Module.t -> error list * t
    \ No newline at end of file + * Textuallib.Textual.TypeName.Set.t

    returns 1) in a map, all function implementation and declarations, indexed by the name of their enclosing class 2) the set of all enclosing class that were not introduced by a type declaration

    val get_struct : t -> Textual.TypeName.t -> Textual.Struct.t option
    val is_field_declared : t -> Textual.qualified_fieldname -> bool
    val is_defined_in_a_trait : t -> Textual.QualifiedProcName.t -> bool
    val is_trait_method : t -> Textual.ProcSig.t -> bool
    val source_file : t -> Textual.SourceFile.t
    val lang : t -> Textual.Lang.t option
    val get_undefined_types : t -> Textual.TypeName.t Stdlib.Seq.t
    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    val make_decls : Textual.Module.t -> error list * t
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualLexer/Lexbuf/index.html b/website/static/odoc/next/infer/Textuallib/TextualLexer/Lexbuf/index.html index 5058bca0e81..3e2ea3fa380 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualLexer/Lexbuf/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualLexer/Lexbuf/index.html @@ -1,8 +1,8 @@ -Lexbuf (infer.Textuallib.TextualLexer.Lexbuf)

    Module TextualLexer.Lexbuf

    val from_gen : char Gen.t -> lexbuf
    val from_channel : IStdlib.IStd.In_channel.t -> lexbuf
    val lexeme : lexbuf -> string
    val lexing_positions : +Lexbuf (infer.Textuallib.TextualLexer.Lexbuf)

    Module TextualLexer.Lexbuf

    val from_gen : char Gen.t -> lexbuf
    val from_channel : IStdlib.IStd.In_channel.t -> lexbuf
    val lexeme : lexbuf -> string
    val lexing_positions : lexbuf -> Stdlib.Lexing.position * Stdlib.Lexing.position
    val with_tokenizer : (lexbuf -> 'a) -> lexbuf -> unit -> - 'a * Stdlib.Lexing.position * Stdlib.Lexing.position
    \ No newline at end of file + 'a * Stdlib.Lexing.position * Stdlib.Lexing.position
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualLexer/index.html b/website/static/odoc/next/infer/Textuallib/TextualLexer/index.html index 739cdcb3c33..96739651690 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualLexer/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualLexer/index.html @@ -1,2 +1,2 @@ -TextualLexer (infer.Textuallib.TextualLexer)

    Module Textuallib.TextualLexer

    type lexbuf
    exception LexingError of Textual.Location.t * string
    module Lexbuf : sig ... end
    val textual_mainlex : lexbuf -> TextualMenhir.token
    \ No newline at end of file +TextualLexer (infer.Textuallib.TextualLexer)

    Module Textuallib.TextualLexer

    type lexbuf
    exception LexingError of Textual.Location.t * string
    module Lexbuf : sig ... end
    val textual_mainlex : lexbuf -> TextualMenhir.token
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualMenhir/index.html b/website/static/odoc/next/infer/Textuallib/TextualMenhir/index.html index e3dc87d8ad6..6c49cb3db37 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualMenhir/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualMenhir/index.html @@ -1,6 +1,6 @@ -TextualMenhir (infer.Textuallib.TextualMenhir)

    Module Textuallib.TextualMenhir

    type token =
    1. | VOID
    2. | UNREACHABLE
    3. | TYPE
    4. | TRUE
    5. | THROW
    6. | THEN
    7. | STRING of string
    8. | STORE
    9. | STAR
    10. | SEMICOLON
    11. | RSBRACKET
    12. | RPAREN
    13. | RET
    14. | RBRACKET
    15. | RABRACKET
    16. | QUESTION
    17. | PRUNE
    18. | PROC_AND_LPAREN of string option * string
    19. | OR
    20. | NULL
    21. | NOT
    22. | LSBRACKET
    23. | LPAREN
    24. | LOCALKEYWORD
    25. | LOCAL of int
    26. | LOAD
    27. | LBRACKET
    28. | LABRACKET
    29. | LABEL of string
    30. | JMP
    31. | INTEGER of Z.t
    32. | INT
    33. | IF_AND_LPAREN
    34. | IF
    35. | IDENT of string
    36. | HANDLERS
    37. | GLOBAL
    38. | FUN
    39. | FLOATINGPOINT of float
    40. | FLOAT
    41. | FALSE
    42. | EXTENDS
    43. | EQ
    44. | EOF
    45. | ELSE
    46. | ELLIPSIS
    47. | DOT
    48. | DEFINE
    49. | DECLARE
    50. | COMMA
    51. | COLON
    52. | ASSIGN
    53. | ARROW
    54. | AND
    55. | AMPERSAND
    exception Error
    val main : +TextualMenhir (infer.Textuallib.TextualMenhir)

    Module Textuallib.TextualMenhir

    type token =
    1. | VOID
    2. | UNREACHABLE
    3. | TYPE
    4. | TRUE
    5. | THROW
    6. | THEN
    7. | STRING of string
    8. | STORE
    9. | STAR
    10. | SEMICOLON
    11. | RSBRACKET
    12. | RPAREN
    13. | RET
    14. | RBRACKET
    15. | RABRACKET
    16. | QUESTION
    17. | PRUNE
    18. | PROC_AND_LPAREN of string option * string
    19. | OR
    20. | NULL
    21. | NOT
    22. | LSBRACKET
    23. | LPAREN
    24. | LOCALKEYWORD
    25. | LOCAL of int
    26. | LOAD
    27. | LBRACKET
    28. | LABRACKET
    29. | LABEL of string
    30. | JMP
    31. | INTEGER of Z.t
    32. | INT
    33. | IF_AND_LPAREN
    34. | IF
    35. | IDENT of string
    36. | HANDLERS
    37. | GLOBAL
    38. | FUN
    39. | FLOATINGPOINT of float
    40. | FLOAT
    41. | FALSE
    42. | EXTENDS
    43. | EQ
    44. | EOF
    45. | ELSE
    46. | ELLIPSIS
    47. | DOT
    48. | DEFINE
    49. | DECLARE
    50. | COMMA
    51. | COLON
    52. | ASSIGN
    53. | ARROW
    54. | AND
    55. | AMPERSAND
    exception Error
    val main : (Stdlib.Lexing.lexbuf -> token) -> Stdlib.Lexing.lexbuf -> Textual.SourceFile.t -> - Textual.Module.t
    \ No newline at end of file + Textual.Module.t
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualParser/TextualFile/index.html b/website/static/odoc/next/infer/Textuallib/TextualParser/TextualFile/index.html index dbdc3a1918b..6a789f16b4d 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualParser/TextualFile/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualParser/TextualFile/index.html @@ -1,7 +1,7 @@ -TextualFile (infer.Textuallib.TextualParser.TextualFile)

    Module TextualParser.TextualFile

    type t =
    1. | StandaloneFile of string
      (*

      Path to a file with textual SIL as content.

      *)
    2. | TranslatedFile of {
      1. source_path : string;
      2. content : string;
      3. line_map : LineMap.t;
      }
      (*

      File with textual SIL content which is a result of translation of a file at source_path.

      *)
    type sil = {
    1. sourcefile : Textual.SourceFile.t;
    2. cfg : IR.Cfg.t;
    3. tenv : IR.Tenv.t;
    }
    val translate_module : +TextualFile (infer.Textuallib.TextualParser.TextualFile)

    Module TextualParser.TextualFile

    type t =
    1. | StandaloneFile of string
      (*

      Path to a file with textual SIL as content.

      *)
    2. | TranslatedFile of {
      1. source_path : string;
      2. content : string;
      3. line_map : LineMap.t;
      }
      (*

      File with textual SIL content which is a result of translation of a file at source_path.

      *)
    type sil = {
    1. sourcefile : Textual.SourceFile.t;
    2. cfg : IR.Cfg.t;
    3. tenv : IR.Tenv.t;
    }
    val translate : t -> - (sil, Textual.SourceFile.t * error list) IStdlib.IStd.result
    val capture : use_global_tenv:bool -> sil -> unit
    val line_map : t -> LineMap.t option
    \ No newline at end of file + (sil, Textual.SourceFile.t * error list) IStdlib.IStd.result
    val capture : use_global_tenv:bool -> sil -> unit
    val line_map : t -> LineMap.t option
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualParser/index.html b/website/static/odoc/next/infer/Textuallib/TextualParser/index.html index d76badd27b5..14a74870a28 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualParser/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualParser/index.html @@ -1,5 +1,5 @@ -TextualParser (infer.Textuallib.TextualParser)

    Module Textuallib.TextualParser

    module F = Stdlib.Format
    type error =
    1. | SyntaxError of {
      1. loc : Textual.Location.t;
      2. msg : string;
      }
    2. | BasicError of TextualBasicVerification.error
    3. | TypeError of TextualTypeVerification.error
    4. | TransformError of Textual.transform_error list
    5. | DeclaredTwiceError of TextualDecls.error
      (*

      errors related to Textual

      *)
    val pp_error : Textual.SourceFile.t -> F.formatter -> error -> unit
    val error_to_string : Textual.SourceFile.t -> error -> string
    val parse_string : +TextualParser (infer.Textuallib.TextualParser)

    Module Textuallib.TextualParser

    module F = Stdlib.Format
    type error =
    1. | SyntaxError of {
      1. loc : Textual.Location.t;
      2. msg : string;
      }
    2. | BasicError of TextualBasicVerification.error
    3. | TypeError of TextualTypeVerification.error
    4. | TransformError of Textual.transform_error list
    5. | DeclaredTwiceError of TextualDecls.error
      (*

      errors related to Textual

      *)
    val pp_error : Textual.SourceFile.t -> F.formatter -> error -> unit
    val error_to_string : Textual.SourceFile.t -> error -> string
    val parse_string : Textual.SourceFile.t -> string -> - (Textual.Module.t, error list) IStdlib.IStd.result
    module TextualFile : sig ... end
    val capture : TextualFile.t list -> unit

    turn a list of textual files into a SIL-Java program and capture them.

    \ No newline at end of file + (Textual.Module.t, error list) IStdlib.IStd.result
    module TextualFile : sig ... end
    val capture : TextualFile.t list -> unit

    turn a list of textual files into a SIL-Java program and capture them.

    diff --git a/website/static/odoc/next/infer/Textuallib/TextualSil/index.html b/website/static/odoc/next/infer/Textuallib/TextualSil/index.html index 358fad39cce..9c30d01ad72 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualSil/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualSil/index.html @@ -1,5 +1,5 @@ -TextualSil (infer.Textuallib.TextualSil)

    Module Textuallib.TextualSil

    val proc_decl_to_sil : Textual.Lang.t -> Textual.ProcDecl.t -> IR.Procname.t
    val module_to_sil : Textual.Module.t -> IR.Cfg.t * IR.Tenv.t
    val from_java : filename:string -> IR.Tenv.t -> IR.Cfg.t -> unit

    generate a .sil file with name filename containing all the functions in the given cfg

    val dump_module : filename:string -> Textual.Module.t -> unit

    generate a .sil file with name filename with all the content of the input module

    val default_return_type : +TextualSil (infer.Textuallib.TextualSil)

    Module Textuallib.TextualSil

    val proc_decl_to_sil : Textual.Lang.t -> Textual.ProcDecl.t -> IR.Procname.t
    val module_to_sil : Textual.Module.t -> IR.Cfg.t * IR.Tenv.t
    val from_java : filename:string -> IR.Tenv.t -> IR.Cfg.t -> unit

    generate a .sil file with name filename containing all the functions in the given cfg

    val dump_module : filename:string -> Textual.Module.t -> unit

    generate a .sil file with name filename with all the content of the input module

    val default_return_type : Textual.Lang.t option -> Textual.Location.t -> - Textual.Typ.t
    val hack_dict_type_name : IR.Typ.name
    val hack_dict_iter_type_name : IR.Typ.name
    val hack_vec_type_name : IR.Typ.name
    val hack_vec_iter_type_name : IR.Typ.name
    val hack_bool_type_name : IR.Typ.name
    val hack_int_type_name : IR.Typ.name
    val hack_float_type_name : IR.Typ.name
    val hack_string_type_name : IR.Typ.name
    val hack_splated_vec_type_name : IR.Typ.name
    val hack_mixed_type_name : IR.Typ.name
    val hack_awaitable_type_name : IR.Typ.name
    val hack_mixed_static_companion_type_name : IR.Typ.name
    val hack_builtins_type_name : IR.Typ.name
    val hack_root_type_name : IR.Typ.name
    val wildcard_sil_fieldname : Textual.Lang.t -> string -> IR.Fieldname.t
    val textual_ext : string
    val to_filename : string -> string
    \ No newline at end of file + Textual.Typ.t
    val hack_dict_type_name : IR.Typ.name
    val hack_dict_iter_type_name : IR.Typ.name
    val hack_vec_type_name : IR.Typ.name
    val hack_vec_iter_type_name : IR.Typ.name
    val hack_bool_type_name : IR.Typ.name
    val hack_int_type_name : IR.Typ.name
    val hack_float_type_name : IR.Typ.name
    val hack_string_type_name : IR.Typ.name
    val hack_splated_vec_type_name : IR.Typ.name
    val hack_mixed_type_name : IR.Typ.name
    val hack_awaitable_type_name : IR.Typ.name
    val hack_mixed_static_companion_type_name : IR.Typ.name
    val hack_builtins_type_name : IR.Typ.name
    val hack_root_type_name : IR.Typ.name
    val wildcard_sil_fieldname : Textual.Lang.t -> string -> IR.Fieldname.t
    val textual_ext : string
    val to_filename : string -> string
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualTransform/index.html b/website/static/odoc/next/infer/Textuallib/TextualTransform/index.html index e72c0a40ad2..0d80a0f4461 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualTransform/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualTransform/index.html @@ -1,6 +1,6 @@ -TextualTransform (infer.Textuallib.TextualTransform)

    Module Textuallib.TextualTransform

    val fix_closure_app : Textual.Module.t -> Textual.Module.t
    val remove_effects_in_subexprs : +TextualTransform (infer.Textuallib.TextualTransform)

    Module Textuallib.TextualTransform

    val fix_closure_app : Textual.Module.t -> Textual.Module.t
    val remove_effects_in_subexprs : Textual.Lang.t -> TextualDecls.t -> Textual.Module.t -> - Textual.Module.t
    val remove_if_terminator : Textual.Module.t -> Textual.Module.t
    val let_propagation : Textual.Module.t -> Textual.Module.t
    \ No newline at end of file + Textual.Module.t
    val remove_if_terminator : Textual.Module.t -> Textual.Module.t
    val let_propagation : Textual.Module.t -> Textual.Module.t
    diff --git a/website/static/odoc/next/infer/Textuallib/TextualTypeVerification/index.html b/website/static/odoc/next/infer/Textuallib/TextualTypeVerification/index.html index ecf3485f69c..9587e1e64b6 100644 --- a/website/static/odoc/next/infer/Textuallib/TextualTypeVerification/index.html +++ b/website/static/odoc/next/infer/Textuallib/TextualTypeVerification/index.html @@ -1,5 +1,5 @@ -TextualTypeVerification (infer.Textuallib.TextualTypeVerification)

    Module Textuallib.TextualTypeVerification

    This module provides basic type verification for Textual programs.

    Each function is type-checked independently, starting with the declared types of globals, parameters and locals.

    The type of logical variables is infered by traversing the instructions in a suitable order (dfs). This may fail if a logical variable is assigned twice with two different types.

    Subtyping is quite limiting because we do no try to understand the class hierarchy. It can be specified by the following rules

    ----------------------------
    +TextualTypeVerification (infer.Textuallib.TextualTypeVerification)

    Module Textuallib.TextualTypeVerification

    This module provides basic type verification for Textual programs.

    Each function is type-checked independently, starting with the declared types of globals, parameters and locals.

    The type of logical variables is infered by traversing the instructions in a suitable order (dfs). This may fail if a logical variable is assigned twice with two different types.

    Subtyping is quite limiting because we do no try to understand the class hierarchy. It can be specified by the following rules

    ----------------------------
            t <= t
     
     ----------------------------
    @@ -73,26 +73,12 @@
     
                 G, L |- exp : t
     -----------------------------------------------
    -       G, L |- id = exp : L[id=t]

    The judgement is of the form G, L, N, rt |- terminator with

    • rt the declared result type of the current function
    • and N the types of each node SSA parameters (if any).
              G, L |- exp : t          t <= rt
    - -----------------------------------------------------
    -                G, L, N, rt |- Ret exp
    -
    -    lexp1 = exp1, ..., expk
    -        G, L |- exp1 : t1           t1 <= N[lab1][1]
    -                       ...
    -        G, L |- expk : tk           tk <= N[lab1][k]
    -                       ...
    -    lexpn = ...
    -                       ...
    -------------------------------------------------------
    -    G, L, rt, N |- Jump lab1(lexp1), ..., labn(lexpn)
    -
    -                   G, L |- exp : *t
    +       G, L |- id = exp : L[id=t]

    The judgement is of the form G, L, N, rt |- terminator with

    • rt the declared result type of the current function
    • and N the types of each node SSA parameters (if any).
             G, L |- exp : t          t <= rt
     -----------------------------------------------------
    -            G, L, N, rt |- Throw exp
    +               G, L, N, rt |- Ret exp
     
    ------------------------------------------------------
    -            G, L, N, rt |- Unreachable
    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    val run : + lexp1 = exp1, ..., expk + G, L |- exp1 : t1 t1 <= N[lab1

    1] ... G, L |- expk : tk tk <= Nlab1k ... lexpn = ... ... ------------------------------------------------------ G, L, rt, N |- Jump lab1(lexp1), ..., labn(lexpn)

    G, L |- exp : *t ----------------------------------------------------- G, L, N, rt |- Throw exp

    ----------------------------------------------------- G, L, N, rt |- Unreachable

    type error
    val pp_error : Textual.SourceFile.t -> Stdlib.Format.formatter -> error -> unit
    val run : Textual.Module.t -> TextualDecls.t -> - (Textual.Module.t, error list) IStdlib.IStd.Result.t
    type type_check_result =
    1. | Ok of Textual.Module.t
    2. | Decl_errors of TextualDecls.error list
    3. | Type_errors of error list
    \ No newline at end of file + (Textual.Module.t, error list) IStdlib.IStd.Result.t
    type type_check_result =
    1. | Ok of Textual.Module.t
    2. | Decl_errors of TextualDecls.error list
    3. | Type_errors of error list
    diff --git a/website/static/odoc/next/infer/Textuallib/index.html b/website/static/odoc/next/infer/Textuallib/index.html index 5284c104dc2..d29aa2c88a8 100644 --- a/website/static/odoc/next/infer/Textuallib/index.html +++ b/website/static/odoc/next/infer/Textuallib/index.html @@ -1,2 +1,2 @@ -Textuallib (infer.Textuallib)

    Module Textuallib

    module LineMap : sig ... end
    module Textual : sig ... end
    module TextualBasicVerification : sig ... end
    module TextualDecls : sig ... end
    module TextualLexer : sig ... end
    module TextualMenhir : sig ... end
    module TextualParser : sig ... end
    module TextualSil : sig ... end
    module TextualTransform : sig ... end
    module TextualTypeVerification : sig ... end

    This module provides basic type verification for Textual programs.

    \ No newline at end of file +Textuallib (infer.Textuallib)

    Module Textuallib

    module LineMap : sig ... end
    module Textual : sig ... end
    module TextualBasicVerification : sig ... end
    module TextualDecls : sig ... end
    module TextualLexer : sig ... end
    module TextualMenhir : sig ... end
    module TextualParser : sig ... end
    module TextualSil : sig ... end
    module TextualTransform : sig ... end
    module TextualTypeVerification : sig ... end

    This module provides basic type verification for Textual programs.

    diff --git a/website/static/odoc/next/infer/Topllib/DataFlowQuery/index.html b/website/static/odoc/next/infer/Topllib/DataFlowQuery/index.html index 41a4a75d60d..7b37289b7ef 100644 --- a/website/static/odoc/next/infer/Topllib/DataFlowQuery/index.html +++ b/website/static/odoc/next/infer/Topllib/DataFlowQuery/index.html @@ -1,5 +1,5 @@ -DataFlowQuery (infer.Topllib.DataFlowQuery)

    Module Topllib.DataFlowQuery

    Data-Flow Query Format

    This reads "data flow queries" written in a minimal language, and converts them to other analyses. The concrete syntax is JSON. The abstract syntax is as follows.

         QUERY     ::= { "matchers": MATCHERS, "questions" : QUESTIONS, "language": LANGUAGE }
    +DataFlowQuery (infer.Topllib.DataFlowQuery)

    Module Topllib.DataFlowQuery

    Data-Flow Query Format

    This reads "data flow queries" written in a minimal language, and converts them to other analyses. The concrete syntax is JSON. The abstract syntax is as follows.

         QUERY     ::= { "matchers": MATCHERS, "questions" : QUESTIONS, "language": LANGUAGE }
          MATCHERS  ::= [ MATCHER0, MATCHER1, ... ]
          QUESTIONS ::= [ QUESTION0, QUESTION1, ... ]
          MATCHER   ::= { "tag": TAG, "pattern": PATTERN, "arity": ARITY, "position": POSITION }
    @@ -10,4 +10,4 @@
          VALUE     ::= POSITION
          VALUE     ::= CONSTANT

    The content of CONSTANT varies by LANGUAGE. For example, if LANGUAGE is "erlang", then

         CONSTANT  ::= [ "atom", STRING ]
          CONSTANT  ::= [ "string", STRING ]
    -     CONSTANT  ::= [ "int", INTEGER ]

    As a convenience, one can also specify a MATCHER as a JSON list rather than as a JSON object, in which case the list elements are, in order, TAG, PATTERN, ARITY, POSITION, CONDITION.

    val convert_to_topl : string list -> IBase.ToplAst.t list

    Converts a list of data-flow queries present in the given file paths into Topl properties, one Topl property per question.

    \ No newline at end of file + CONSTANT ::= [ "int", INTEGER ]

    As a convenience, one can also specify a MATCHER as a JSON list rather than as a JSON object, in which case the list elements are, in order, TAG, PATTERN, ARITY, POSITION, CONDITION.

    val convert_to_topl : string list -> IBase.ToplAst.t list

    Converts a list of data-flow queries present in the given file paths into Topl properties, one Topl property per question.

    diff --git a/website/static/odoc/next/infer/Topllib/Topl/index.html b/website/static/odoc/next/infer/Topllib/Topl/index.html index 04e9f8e2fb0..7d0cf5674f7 100644 --- a/website/static/odoc/next/infer/Topllib/Topl/index.html +++ b/website/static/odoc/next/infer/Topllib/Topl/index.html @@ -1,2 +1,2 @@ -Topl (infer.Topllib.Topl)

    Module Topllib.Topl

    val automaton : unit -> ToplAutomaton.t

    Return the automaton representing all Topl properties.

    val is_active : unit -> bool

    Return whether PulseTopl is active.

    \ No newline at end of file +Topl (infer.Topllib.Topl)

    Module Topllib.Topl

    val automaton : unit -> ToplAutomaton.t

    Return the automaton representing all Topl properties.

    val is_active : unit -> bool

    Return whether PulseTopl is active.

    diff --git a/website/static/odoc/next/infer/Topllib/ToplAstOps/index.html b/website/static/odoc/next/infer/Topllib/ToplAstOps/index.html index 2c1deffda6d..e2b04fadb98 100644 --- a/website/static/odoc/next/infer/Topllib/ToplAstOps/index.html +++ b/website/static/odoc/next/infer/Topllib/ToplAstOps/index.html @@ -1,2 +1,2 @@ -ToplAstOps (infer.Topllib.ToplAstOps)

    Module Topllib.ToplAstOps

    val pp_label : Stdlib.Format.formatter -> IBase.ToplAst.label option -> unit
    \ No newline at end of file +ToplAstOps (infer.Topllib.ToplAstOps)

    Module Topllib.ToplAstOps

    val pp_label : Stdlib.Format.formatter -> IBase.ToplAst.label option -> unit
    diff --git a/website/static/odoc/next/infer/Topllib/ToplAutomaton/index.html b/website/static/odoc/next/infer/Topllib/ToplAutomaton/index.html index a9c96ffb350..e42ef9f534e 100644 --- a/website/static/odoc/next/infer/Topllib/ToplAutomaton/index.html +++ b/website/static/odoc/next/infer/Topllib/ToplAutomaton/index.html @@ -1,2 +1,2 @@ -ToplAutomaton (infer.Topllib.ToplAutomaton)

    Module Topllib.ToplAutomaton

    type t
    type vindex = int

    from 0 to vcount()-1, inclusive

    val compare_vindex : vindex -> vindex -> int
    val equal_vindex : vindex -> vindex -> bool
    type tindex = int

    from 0 to tcount()-1, inclusive

    type transition = {
    1. source : vindex;
    2. target : vindex;
    3. label : IBase.ToplAst.label option;
    }
    val make : IBase.ToplAst.t list -> t
    val vcount : t -> int
    val tcount : t -> int
    val tfilter_mapi : t -> f:(tindex -> transition -> 'a option) -> 'a list
    val registers : t -> IBase.ToplAst.register_name list
    val message : t -> vindex -> string
    val start_name : string
    val error_name : string
    val is_start : t -> vindex -> bool
    val is_error : t -> vindex -> bool
    val pp_transition : t -> Stdlib.Format.formatter -> transition -> unit
    val pp_tindex : t -> Stdlib.Format.formatter -> tindex -> unit
    \ No newline at end of file +ToplAutomaton (infer.Topllib.ToplAutomaton)

    Module Topllib.ToplAutomaton

    type t
    type vindex = int

    from 0 to vcount()-1, inclusive

    val compare_vindex : vindex -> vindex -> int
    val equal_vindex : vindex -> vindex -> bool
    type tindex = int

    from 0 to tcount()-1, inclusive

    type transition = {
    1. source : vindex;
    2. target : vindex;
    3. label : IBase.ToplAst.label option;
    }
    val make : IBase.ToplAst.t list -> t
    val vcount : t -> int
    val tcount : t -> int
    val tfilter_mapi : t -> f:(tindex -> transition -> 'a option) -> 'a list
    val registers : t -> IBase.ToplAst.register_name list
    val message : t -> vindex -> string
    val start_name : string
    val error_name : string
    val is_start : t -> vindex -> bool
    val is_error : t -> vindex -> bool
    val pp_transition : t -> Stdlib.Format.formatter -> transition -> unit
    val pp_tindex : t -> Stdlib.Format.formatter -> tindex -> unit
    diff --git a/website/static/odoc/next/infer/Topllib/index.html b/website/static/odoc/next/infer/Topllib/index.html index 84f01369bf7..483088f042a 100644 --- a/website/static/odoc/next/infer/Topllib/index.html +++ b/website/static/odoc/next/infer/Topllib/index.html @@ -1,2 +1,2 @@ -Topllib (infer.Topllib)

    Module Topllib

    module DataFlowQuery : sig ... end
    module Topl : sig ... end
    module ToplAstOps : sig ... end
    module ToplAutomaton : sig ... end
    \ No newline at end of file +Topllib (infer.Topllib)

    Module Topllib

    module DataFlowQuery : sig ... end
    module Topl : sig ... end
    module ToplAstOps : sig ... end
    module ToplAutomaton : sig ... end
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/M/index.html index 4981ae313a1..484a4b625e9 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html index efc24385df8..156a322f9ca 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html index 6abe81c36fa..f1d9e2ae0bd 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/index.html index 556e63d44de..f610c503720 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/index.html index dc5d07905a8..04aef3e2649 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/Domain/index.html index ce49d0c5c79..e17a888dd6d 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/index.html index c8ce44b060e..26827c63328 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/index.html index f62d4c440b9..a379ed4e495 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_RPO/index.html @@ -1,15 +1,15 @@ -AI_RPO (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO)

    Module ExceptionalTestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_RPO)

    Module ExceptionalTestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/M/index.html index 631135a0acb..c713a99eac8 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html index ea69c362036..98955647f2e 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html index 2cf401f2d09..9065dea7835 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/index.html index 1b15b24e410..a5fd25c3c5c 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/index.html index c6e9ec58394..415a3e668c6 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/Domain/index.html index f9cae852b29..1e485a77f02 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/index.html index 6bd1054d7a1..6bfae30f6b7 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/index.html index 4cf7e7e27e1..858bcf41cb0 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/AI_WTO/index.html @@ -1,15 +1,15 @@ -AI_WTO (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO)

    Module ExceptionalTestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter.AI_WTO)

    Module ExceptionalTestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/index.html index 307d62a0cc4..f5dfe6947c4 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/ExceptionalTestInterpreter/index.html @@ -1,10 +1,10 @@ -ExceptionalTestInterpreter (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter)

    Module AbstractInterpreterTests.ExceptionalTestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +ExceptionalTestInterpreter (infer.UnitTests.AbstractInterpreterTests.ExceptionalTestInterpreter)

    Module AbstractInterpreterTests.ExceptionalTestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val create_tests : - initial: + initial: Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Exceptional)).TransferFunctions.Domain.t -> - ?pp_opt: + ?pp_opt: (UnitTests__AnalyzerTester.F.formatter -> Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Exceptional)).TransferFunctions.Domain.t -> unit) -> @@ -24,4 +24,4 @@ (string * UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t) list -> - OUnit2.test list
    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/M/index.html index 1816ac8761a..3b0bb6e1da7 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html index d2e387da172..00bd469e2bd 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html index c39a40366ff..a74872b8a5a 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/index.html index 8dfac2cf0b6..4e53f72a18b 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/index.html index b4c7df091bf..62063e1df78 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/Domain/index.html index 642a4679eaf..4561f598814 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/index.html index a225297e472..f34d5ad00b6 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/index.html index 30f73dec9be..d76fac3cf38 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_RPO/index.html @@ -1,15 +1,15 @@ -AI_RPO (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO)

    Module NormalTestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_RPO)

    Module NormalTestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/M/index.html index a336a946d36..d1e3181f862 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html index a665b1fab41..5ae42815437 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html index d5a5a2a48eb..ab7475b67ef 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/index.html index ceb2e2d1f62..43b7b3889f4 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/index.html index 7f3dd109c71..3a0ad80fc0e 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/Domain/index.html index d6dc45b0e63..5d46f6981e8 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/index.html index f1ba11df1cf..11af7a6172a 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/index.html index f50304cdf3a..fc0a9590a6c 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/AI_WTO/index.html @@ -1,15 +1,15 @@ -AI_WTO (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO)

    Module NormalTestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter.AI_WTO)

    Module NormalTestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/index.html index 071ac10400b..ea748a133c6 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/NormalTestInterpreter/index.html @@ -1,10 +1,10 @@ -NormalTestInterpreter (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter)

    Module AbstractInterpreterTests.NormalTestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +NormalTestInterpreter (infer.UnitTests.AbstractInterpreterTests.NormalTestInterpreter)

    Module AbstractInterpreterTests.NormalTestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : (string * (UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> (Backend__Summary.t -> Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Normal)).TransferFunctions.analysis_data) -> - initial: + initial: Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Normal)).TransferFunctions.Domain.t -> (UnitTests__AnalyzerTester.F.formatter -> Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Normal)).TransferFunctions.Domain.t -> @@ -13,9 +13,9 @@ 'a -> unit)) list
    val create_tests : - initial: + initial: Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Normal)).TransferFunctions.Domain.t -> - ?pp_opt: + ?pp_opt: (UnitTests__AnalyzerTester.F.formatter -> Absint.AbstractInterpreter.MakeWTO(PathCountTransferFunctions(Absint.ProcCfg.Normal)).TransferFunctions.Domain.t -> unit) -> @@ -24,4 +24,4 @@ (string * UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t) list -> - OUnit2.test list
    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountDomain/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountDomain/index.html index 26995c94cc7..7bb44b15da0 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountDomain/index.html @@ -1,2 +1,2 @@ -PathCountDomain (infer.UnitTests.AbstractInterpreterTests.PathCountDomain)

    Module AbstractInterpreterTests.PathCountDomain

    type t =
    1. | PathCount of int
    2. | Top
    val make_path_count : Core__Int.t -> t
    val initial : t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:'a -> next:'b -> num_iters:'c -> t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +PathCountDomain (infer.UnitTests.AbstractInterpreterTests.PathCountDomain)

    Module AbstractInterpreterTests.PathCountDomain

    type t =
    1. | PathCount of int
    2. | Top
    val make_path_count : Core__Int.t -> t
    val initial : t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:'a -> next:'b -> num_iters:'c -> t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdMap/index.html index 490aed391c5..33a03caf977 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdSet/index.html index e062021f005..6d05f977392 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html index 1a1a022e9db..136c30c5eb1 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html index a5e0bfcc98b..c75e98d3981 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG)

    Parameter PathCountTransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions.CFG)

    Parameter PathCountTransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/index.html index 406a963aee9..274b8461e36 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/PathCountTransferFunctions/index.html @@ -1,2 +1,2 @@ -PathCountTransferFunctions (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions)

    Module AbstractInterpreterTests.PathCountTransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = PathCountDomain
    type analysis_data = unit
    val exec_instr : 'a -> 'b -> 'c -> 'd -> 'e -> 'f
    val pp_session_name : 'a -> 'b -> unit
    \ No newline at end of file +PathCountTransferFunctions (infer.UnitTests.AbstractInterpreterTests.PathCountTransferFunctions)

    Module AbstractInterpreterTests.PathCountTransferFunctions

    Parameters

    Signature

    module CFG = CFG
    module Domain = PathCountDomain
    type analysis_data = unit
    val exec_instr : 'a -> 'b -> 'c -> 'd -> 'e -> 'f
    val pp_session_name : 'a -> 'b -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/index.html b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/index.html index 0bb7f8a13a9..aabb901e6b1 100644 --- a/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/AbstractInterpreterTests/index.html @@ -1,2 +1,2 @@ -AbstractInterpreterTests (infer.UnitTests.AbstractInterpreterTests)

    Module UnitTests.AbstractInterpreterTests

    module F = Stdlib.Format

    Test the generic abstract interpreter by using a simple path counting domain. Path counting is actually a decent stress test--if you join too much/too little, you'll over/under-count, and you'll diverge at loops if you don't widen

    module PathCountDomain : sig ... end
    module NormalTestInterpreter : sig ... end
    module ExceptionalTestInterpreter : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +AbstractInterpreterTests (infer.UnitTests.AbstractInterpreterTests)

    Module UnitTests.AbstractInterpreterTests

    module F = Stdlib.Format

    Test the generic abstract interpreter by using a simple path counting domain. Path counting is actually a decent stress test--if you join too much/too little, you'll over/under-count, and you'll diverge at loops if you don't widen

    module PathCountDomain : sig ... end
    module NormalTestInterpreter : sig ... end
    module ExceptionalTestInterpreter : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessPathTestUtils/index.html b/website/static/odoc/next/infer/UnitTests/AccessPathTestUtils/index.html index 40717f8886d..e4d6b97d98d 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessPathTestUtils/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessPathTestUtils/index.html @@ -1,2 +1,2 @@ -AccessPathTestUtils (infer.UnitTests.AccessPathTestUtils)

    Module UnitTests.AccessPathTestUtils

    val make_fieldname : string -> IR.Fieldname.t
    val make_base : ?typ:IR.Typ.t -> string -> Absint.AccessPath.base
    val make_field_access : string -> Absint.AccessPath.access
    val make_array_access : IR.Typ.t -> Absint.AccessPath.access
    val make_access_path : string -> string list -> Absint.AccessPath.t
    \ No newline at end of file +AccessPathTestUtils (infer.UnitTests.AccessPathTestUtils)

    Module UnitTests.AccessPathTestUtils

    val make_fieldname : string -> IR.Fieldname.t
    val make_base : ?typ:IR.Typ.t -> string -> Absint.AccessPath.base
    val make_field_access : string -> Absint.AccessPath.access
    val make_array_access : IR.Typ.t -> Absint.AccessPath.access
    val make_access_path : string -> string list -> Absint.AccessPath.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/AccessMap/index.html index ce88bae9b70..544488b763d 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.AccessTreeTests.Domain.AccessMap)

    Module Domain.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.AccessTreeTests.Domain.AccessMap)

    Module Domain.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/TraceDomain/index.html index 394d4650c5f..730fa58c743 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.AccessTreeTests.Domain.TraceDomain)

    Module Domain.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.AccessTreeTests.Domain.TraceDomain)

    Module Domain.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/index.html index df800b05f11..92ab9050f77 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/Domain/index.html @@ -1,5 +1,5 @@ -Domain (infer.UnitTests.AccessTreeTests.Domain)

    Module AccessTreeTests.Domain

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Domain (infer.UnitTests.AccessTreeTests.Domain)

    Module AccessTreeTests.Domain

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val assert_trees_equal : node BaseMap.t -> node BaseMap.t -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val assert_trees_equal : node BaseMap.t -> node BaseMap.t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/AccessMap/index.html index fc608d687e5..928cb84eb4e 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.AccessTreeTests.MakeTree.AccessMap)

    Module MakeTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.AccessTreeTests.MakeTree.AccessMap)

    Module MakeTree.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/TraceDomain/index.html index 2f1a47de7eb..63984aebfdd 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.AccessTreeTests.MakeTree.TraceDomain)

    Module MakeTree.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.AccessTreeTests.MakeTree.TraceDomain)

    Module MakeTree.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/argument-1-Config/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/argument-1-Config/index.html index 1e71db2f612..a62d614543a 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/argument-1-Config/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/argument-1-Config/index.html @@ -1,2 +1,2 @@ -Config (infer.UnitTests.AccessTreeTests.MakeTree.Config)

    Parameter MakeTree.Config

    val max_depth : int
    val max_width : int
    \ No newline at end of file +Config (infer.UnitTests.AccessTreeTests.MakeTree.Config)

    Parameter MakeTree.Config

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/index.html index 3817a8b9ba8..e20aa59b580 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MakeTree/index.html @@ -1,5 +1,5 @@ -MakeTree (infer.UnitTests.AccessTreeTests.MakeTree)

    Module AccessTreeTests.MakeTree

    Parameters

    Signature

    include sig ... end
    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +MakeTree (infer.UnitTests.AccessTreeTests.MakeTree)

    Module AccessTreeTests.MakeTree

    Parameters

    Signature

    include sig ... end
    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val assert_trees_equal : node BaseMap.t -> node BaseMap.t -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val assert_trees_equal : node BaseMap.t -> node BaseMap.t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MockTraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MockTraceDomain/index.html index bab564aca0e..c24a08551ad 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MockTraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/MockTraceDomain/index.html @@ -1,2 +1,2 @@ -MockTraceDomain (infer.UnitTests.AccessTreeTests.MockTraceDomain)

    Module AccessTreeTests.MockTraceDomain

    include sig ... end
    type elt = string
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val bottom : t
    val is_bottom : t -> bool
    val top_str : string
    val top : t
    val singleton : IStdlib.IStd.String.t -> t
    val widen : prev:t -> next:t -> num_iters:'a -> t
    val pp : F.formatter -> t -> unit
    \ No newline at end of file +MockTraceDomain (infer.UnitTests.AccessTreeTests.MockTraceDomain)

    Module AccessTreeTests.MockTraceDomain

    include sig ... end
    type elt = string
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val bottom : t
    val is_bottom : t -> bool
    val top_str : string
    val top : t
    val singleton : IStdlib.IStd.String.t -> t
    val widen : prev:t -> next:t -> num_iters:'a -> t
    val pp : F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/index.html b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/index.html index 253b672ad5d..ec1e47a45b1 100644 --- a/website/static/odoc/next/infer/UnitTests/AccessTreeTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/AccessTreeTests/index.html @@ -1,2 +1,2 @@ -AccessTreeTests (infer.UnitTests.AccessTreeTests)

    Module UnitTests.AccessTreeTests

    module F = Stdlib.Format
    module MockTraceDomain : sig ... end
    module MakeTree (Config : Absint.AccessTree.Config) : sig ... end
    module Domain : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +AccessTreeTests (infer.UnitTests.AccessTreeTests)

    Module UnitTests.AccessTreeTests

    module F = Stdlib.Format
    module MockTraceDomain : sig ... end
    module MakeTree (Config : Absint.AccessTree.Config) : sig ... end
    module Domain : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/M/index.html index c0e09cb5f1f..38e73bbd5a1 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html index f6f6c5b31e2..672733d8b42 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html index 64219cf83d4..d10ae6a138c 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html index 5e00b9c2d56..a54f57c690d 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/index.html index 5f1f637cee6..5582f0f4470 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/Domain/index.html index 996ec735ffb..0594427be77 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/index.html index aa74970be78..87358a19fdf 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/index.html index 2b0de2c34af..99b5ddc8bba 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_RPO/index.html @@ -1,15 +1,15 @@ -AI_RPO (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/M/index.html index 0606bb8b1eb..241b686d198 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html index ff8f87ca9b6..2a3ca9c9d15 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html index 88fd5225525..41c6fa10a21 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html index 50f1bdb8de2..12e416be309 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/index.html index 27844568d9a..fddef6261e4 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/Domain/index.html index ab2f9725076..d3ceb50b3ad 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/index.html index 5296029664c..25f74692437 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/index.html index a03c090870c..119b3f19603 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/AI_WTO/index.html @@ -1,15 +1,15 @@ -AI_WTO (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AddressTakenTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/index.html index 552f5a489ea..1bb6ad2a308 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/TestInterpreter/index.html @@ -1,10 +1,10 @@ -TestInterpreter (infer.UnitTests.AddressTakenTests.TestInterpreter)

    Module AddressTakenTests.TestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +TestInterpreter (infer.UnitTests.AddressTakenTests.TestInterpreter)

    Module AddressTakenTests.TestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val create_tests : - initial: + initial: Absint.AbstractInterpreter.MakeWTO(Checkers.AddressTaken.TransferFunctions(Absint.ProcCfg.Exceptional)).TransferFunctions.Domain.t -> - ?pp_opt: + ?pp_opt: (UnitTests__AnalyzerTester.F.formatter -> Absint.AbstractInterpreter.MakeWTO(Checkers.AddressTaken.TransferFunctions(Absint.ProcCfg.Exceptional)).TransferFunctions.Domain.t -> unit) -> @@ -24,4 +24,4 @@ (string * UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t) list -> - OUnit2.test list
    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/index.html b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/index.html index 6433be8cea9..f94259c7bff 100644 --- a/website/static/odoc/next/infer/UnitTests/AddressTakenTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/AddressTakenTests/index.html @@ -1,2 +1,2 @@ -AddressTakenTests (infer.UnitTests.AddressTakenTests)

    Module UnitTests.AddressTakenTests

    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +AddressTakenTests (infer.UnitTests.AddressTakenTests)

    Module UnitTests.AddressTakenTests

    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/M/index.html index f7a3a98b6b6..5fa56de8610 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/M/index.html @@ -1,13 +1,13 @@ -M (infer.UnitTests.AnalyzerTester.Make.AI_RPO.M)

    Module AI_RPO.M

    type !'a t = +M (infer.UnitTests.AnalyzerTester.Make.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdMap/index.html index 679398084ca..af104b8f472 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,13 +1,13 @@ -IdMap (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdSet/index.html index c5f818750a1..11432d38f15 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/index.html index fa2009df041..470b65274c6 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/index.html index 82e032e6901..91125341f39 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG)

    Module T.CFG

    type instrs_dir = +CFG (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : @@ -8,4 +8,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/Domain/index.html index b9eab9e2065..dd231b67f76 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/index.html index ac19094240a..ae8dbbdbc11 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AnalyzerTester.Make.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/index.html index 5669338ea71..f2559cbbf01 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_RPO/index.html @@ -1,5 +1,5 @@ -AI_RPO (infer.UnitTests.AnalyzerTester.Make.AI_RPO)

    Module Make.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AnalyzerTester.Make.AI_RPO)

    Module Make.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/M/index.html index 05a06272199..6a6dcd28a25 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/M/index.html @@ -1,13 +1,13 @@ -M (infer.UnitTests.AnalyzerTester.Make.AI_WTO.M)

    Module AI_WTO.M

    type !'a t = +M (infer.UnitTests.AnalyzerTester.Make.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdMap/index.html index 247ac37f4c5..3917bde8661 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,13 +1,13 @@ -IdMap (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdSet/index.html index fd8aab5d160..ede117ee0e4 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/index.html index de0628f399a..bf836054221 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/index.html index 82cd6d3192c..ee40e923249 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG)

    Module T.CFG

    type instrs_dir = +CFG (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : @@ -8,4 +8,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/Domain/index.html index 594f6a4585f..082eaed535d 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/index.html index 9f61923c79e..3e779eafaa3 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AnalyzerTester.Make.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/index.html index 4a6048da10b..0efeffd9810 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/AI_WTO/index.html @@ -1,5 +1,5 @@ -AI_WTO (infer.UnitTests.AnalyzerTester.Make.AI_WTO)

    Module Make.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AnalyzerTester.Make.AI_WTO)

    Module Make.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdMap/index.html index b2d357a4978..5e03d600f67 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdSet/index.html index bf3a538b6b5..dad17dabadb 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/index.html index 0279293aca5..7b43b2ba90d 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.AnalyzerTester.Make.T.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/index.html index eea156956d3..74f772780fd 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.Make.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.Make.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/Domain/index.html index 8de58ac682d..7f5f3654fa9 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.Make.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.Make.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/index.html index 0e24f700705..7ca1926d77a 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/argument-1-T/index.html @@ -1,5 +1,5 @@ -T (infer.UnitTests.AnalyzerTester.Make.T)

    Parameter Make.T

    include Absint.TransferFunctions.S +T (infer.UnitTests.AnalyzerTester.Make.T)

    Parameter Make.T

    include Absint.TransferFunctions.S with type instr := IR.Sil.instr with type CFG.Node.t = IR.Procdesc.Node.t

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : Domain.t -> @@ -7,4 +7,4 @@ CFG.Node.t -> Absint.ProcCfg.InstrNode.instr_index -> IR.Sil.instr -> - Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/index.html index c9138eb2138..af45dd0ecb9 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/Make/index.html @@ -1,10 +1,10 @@ -Make (infer.UnitTests.AnalyzerTester.Make)

    Module AnalyzerTester.Make

    Parameters

    Signature

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +Make (infer.UnitTests.AnalyzerTester.Make)

    Module AnalyzerTester.Make

    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/M/index.html index 41276fb8298..a21e897ff57 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdMap/index.html index 62250064c3c..9a160b680e1 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdSet/index.html index 1b9ea00f0c9..52632c4c7b0 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/index.html index 70d6babacbc..e9844434fac 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/index.html index 0d613e02178..faa7129d08c 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG)

    Module T.CFG

    type instrs_dir = +CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : @@ -8,4 +8,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/Domain/index.html index b74ad5ad13d..babe3e4a2f7 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/index.html index 047e6f7ede6..d9972a01950 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/index.html index f6f65523149..874374c8b70 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_RPO/index.html @@ -1,5 +1,5 @@ -AI_RPO (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO)

    Module MakeBackwardExceptional.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_RPO)

    Module MakeBackwardExceptional.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/M/index.html index f4b747a9b64..15da8f7f51a 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdMap/index.html index d8a6d564895..28fc0cabbd9 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdSet/index.html index f8c6c863464..52f6de2d236 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/index.html index 7078c6ebe02..50216e7e21a 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/index.html index 54597722cb9..d79ae3275d7 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG)

    Module T.CFG

    type instrs_dir = +CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : @@ -8,4 +8,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/Domain/index.html index 73e3151d4e7..6ffd825c705 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/index.html index e79c742a2c2..9384a6473bd 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/index.html index fa26cc24922..f7a1e28a2b8 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/AI_WTO/index.html @@ -1,5 +1,5 @@ -AI_WTO (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO)

    Module MakeBackwardExceptional.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.AI_WTO)

    Module MakeBackwardExceptional.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdMap/index.html index 7b168e4f470..6bad563594d 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdSet/index.html index 92cc2647275..6650da5607e 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/index.html index 1d8896cc571..5f8b195401b 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/index.html index b49f86d002a..35a4bdb9877 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.CFG)

    Module T.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/Domain/index.html index 7c576a1e887..c78801dad67 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T.Domain)

    Module T.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/index.html index 6f3f3e174ed..e05ca9f7758 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/argument-1-T/index.html @@ -1,5 +1,5 @@ -T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T)

    Parameter MakeBackwardExceptional.T

    include Absint.TransferFunctions.SIL with type CFG.Node.t = IR.Procdesc.Node.t
    include Absint.TransferFunctions.S +T (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional.T)

    Parameter MakeBackwardExceptional.T

    include Absint.TransferFunctions.SIL with type CFG.Node.t = IR.Procdesc.Node.t
    include Absint.TransferFunctions.S with type instr := IR.Sil.instr with type CFG.Node.t = IR.Procdesc.Node.t

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : Domain.t -> @@ -7,4 +7,4 @@ CFG.Node.t -> Absint.ProcCfg.InstrNode.instr_index -> IR.Sil.instr -> - Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    val join_all : Domain.t list -> into:Domain.t option -> Domain.t option

    Joins the abstract states from predecessors. It returns None when the given list is empty and into is None.

    val filter_normal : Domain.t -> Domain.t

    Refines the abstract state to select non-exceptional concrete states. Should return bottom if no such states exist

    val filter_exceptional : Domain.t -> Domain.t

    Refines the abstract state to select exceptional concrete states. Should return bottom if no such states exist

    val transform_on_exceptional_edge : Domain.t -> Domain.t

    Change the nature normal/exceptional when flowing through an exceptional edge. For a forward analysis, it should turn an exceptional state into normal. For a backward analysis, it should turn an normal state into exceptional.

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/index.html index 08641d33eca..6b75709434e 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeBackwardExceptional/index.html @@ -1,12 +1,12 @@ -MakeBackwardExceptional (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional)

    Module AnalyzerTester.MakeBackwardExceptional

    Parameters

    module T : +MakeBackwardExceptional (infer.UnitTests.AnalyzerTester.MakeBackwardExceptional)

    Module AnalyzerTester.MakeBackwardExceptional

    Parameters

    Signature

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val create_tests : - initial: + initial: Absint.AbstractInterpreter.MakeBackwardWTO(T).TransferFunctions.Domain.t -> - ?pp_opt: + ?pp_opt: (F.formatter -> Absint.AbstractInterpreter.MakeBackwardWTO(T).TransferFunctions.Domain.t -> unit) -> (Backend__Summary.t -> Absint.AbstractInterpreter.MakeBackwardWTO(T).TransferFunctions.analysis_data) -> (string * StructuredSil.structured_instr Base__List.t) list -> - OUnit2.test list
    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdMap/index.html index 5f8f8984dd4..fcf61e53fd0 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdSet/index.html index 21cffe4ed5e..3c233d0e0a1 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/index.html index 134d045cdae..9ec34e36745 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/index.html index af8e0c5a6cc..e1566048778 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/Domain/index.html index 5a14fb55b1d..e0922144fa4 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/index.html index 48c6e3d0f78..41b1a22d9ae 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/TransferFunctions/index.html @@ -1,5 +1,5 @@ -TransferFunctions (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions)

    Module I.TransferFunctions

    include Absint.TransferFunctions.S +TransferFunctions (infer.UnitTests.AnalyzerTester.MakeTester.I.TransferFunctions)

    Module I.TransferFunctions

    include Absint.TransferFunctions.S with type instr := IR.Sil.instr with type CFG.Node.t = IR.Procdesc.Node.t

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : Domain.t -> @@ -7,4 +7,4 @@ CFG.Node.t -> Absint.ProcCfg.InstrNode.instr_index -> IR.Sil.instr -> - Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/index.html index a8eab02bd10..4d71a882dd1 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/argument-1-I/index.html @@ -1,24 +1,24 @@ -I (infer.UnitTests.AnalyzerTester.MakeTester.I)

    Parameter MakeTester.I

    module TransferFunctions : +I (infer.UnitTests.AnalyzerTester.MakeTester.I)

    Parameter MakeTester.I

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -29,4 +29,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/index.html index 73b096ef595..f7986268997 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTester/index.html @@ -1,5 +1,5 @@ -MakeTester (infer.UnitTests.AnalyzerTester.MakeTester)

    Module AnalyzerTester.MakeTester

    Parameters

    module I : +MakeTester (infer.UnitTests.AnalyzerTester.MakeTester)

    Module AnalyzerTester.MakeTester

    Parameters

    Signature

    module M = I.InvariantMap
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : StructuredSil.structured_instr Base__List.t -> @@ -8,7 +8,7 @@ * IR.Procdesc.t
    val create_test : StructuredSil.structured_instr Base__List.t -> (Backend__Summary.t -> I.TransferFunctions.analysis_data) -> - initial:I.TransferFunctions.Domain.t -> + initial:I.TransferFunctions.Domain.t -> (F.formatter -> I.TransferFunctions.Domain.t -> unit) option -> 'a -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/M/index.html index 8720f3e8660..ec5d2a8dbcf 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/M/index.html @@ -1,12 +1,12 @@ -M (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +M (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdMap/index.html index b7024333b2c..40bc0fd3d40 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdSet/index.html index 6c54e881d2e..2836968a7ec 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/index.html index d7df85b2062..b1c27038b94 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/index.html index dfae4917540..ff13ffbbdb9 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/Domain/index.html index f90f60e1c6e..1e92d270d1c 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/index.html index 99ba4321ee3..929ff162a26 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/T/index.html @@ -1,8 +1,8 @@ -T (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val exec_instr : +T (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/index.html index de0ece49481..7f323178c9c 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_RPO/index.html @@ -1,12 +1,12 @@ -AI_RPO (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO)

    Module MakeTesters.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.AnalyzerTester.MakeTesters.AI_RPO)

    Module MakeTesters.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (StructuredSil.assertion * StructuredSil.label) M.t * IR.Procdesc.t
    val create_test : StructuredSil.structured_instr Base__List.t -> (Backend__Summary.t -> RPO.TransferFunctions.analysis_data) -> - initial:RPO.TransferFunctions.Domain.t -> + initial:RPO.TransferFunctions.Domain.t -> (F.formatter -> RPO.TransferFunctions.Domain.t -> unit) option -> 'a -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/M/index.html index 46fb1a094aa..c57d127f618 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/M/index.html @@ -1,12 +1,12 @@ -M (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +M (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdMap/index.html index 75bb1fb05a4..78d7d2e2e15 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdSet/index.html index 622838a0191..3c98c3299e5 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/index.html index 6485522c47e..bb8b15f4074 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/index.html index 4617451fe3c..1fdf9679e06 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/Domain/index.html index 6b26dac4356..b4096826578 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/index.html index 2c2d32b9b97..15e4f0e36e0 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/T/index.html @@ -1,8 +1,8 @@ -T (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val exec_instr : +T (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/index.html index 0540b8c048b..313992ca1b8 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/AI_WTO/index.html @@ -1,12 +1,12 @@ -AI_WTO (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO)

    Module MakeTesters.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.AnalyzerTester.MakeTesters.AI_WTO)

    Module MakeTesters.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (StructuredSil.assertion * StructuredSil.label) M.t * IR.Procdesc.t
    val create_test : StructuredSil.structured_instr Base__List.t -> (Backend__Summary.t -> WTO.TransferFunctions.analysis_data) -> - initial:WTO.TransferFunctions.Domain.t -> + initial:WTO.TransferFunctions.Domain.t -> (F.formatter -> WTO.TransferFunctions.Domain.t -> unit) option -> 'a -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdMap/index.html index f67d36cd333..ff2408177de 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdSet/index.html index 3e671183070..77b95564435 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/index.html index c3320cbde23..c85a92dd405 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS with type t = IR.Procdesc.Node.t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/index.html index b6c306652a6..60a01cf350d 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/Domain/index.html index 5af4c038e79..46102e5e3ce 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/Domain/index.html @@ -1,2 +1,2 @@ -Domain (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    abstract domain whose state we propagate

    include Absint.AbstractDomain.Comparable
    include IStdlib.PrettyPrintable.PrintableType
    type t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool

    the implication relation: lhs <= rhs means lhs |- rhs

    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/index.html index 6cb3620d1d3..3b321ada95a 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/TransferFunctions/index.html @@ -1,5 +1,5 @@ -TransferFunctions (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions)

    Module RPO.TransferFunctions

    include Absint.TransferFunctions.S +TransferFunctions (infer.UnitTests.AnalyzerTester.MakeTesters.RPO.TransferFunctions)

    Module RPO.TransferFunctions

    include Absint.TransferFunctions.S with type instr := IR.Sil.instr with type CFG.Node.t = IR.Procdesc.Node.t

    abstract domain whose state we propagate

    type analysis_data

    read-only extra state (results of previous analyses, globals, etc.)

    val exec_instr : Domain.t -> @@ -7,4 +7,4 @@ CFG.Node.t -> Absint.ProcCfg.InstrNode.instr_index -> IR.Sil.instr -> - Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    \ No newline at end of file + Domain.t

    exec_instr astate proc_data node idx instr should usually return astate' such that {astate} instr {astate'} is a valid Hoare triple. In other words, exec_instr defines how executing an instruction from a given abstract state changes that state into a new one. This is usually called the transfer function in Abstract Interpretation terms. node is the node containing the current instruction and idx is the index of the instruction in the node.

    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit

    print session name for HTML debug

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/index.html index 5f506a483c4..121ecc315f6 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-1-RPO/index.html @@ -1,24 +1,24 @@ -RPO (infer.UnitTests.AnalyzerTester.MakeTesters.RPO)

    Parameter MakeTesters.RPO

    module TransferFunctions : +RPO (infer.UnitTests.AnalyzerTester.MakeTesters.RPO)

    Parameter MakeTesters.RPO

    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -29,4 +29,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-2-WTO/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-2-WTO/index.html index 3a3696d4f59..6a97ae9895e 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-2-WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/argument-2-WTO/index.html @@ -1,23 +1,23 @@ -WTO (infer.UnitTests.AnalyzerTester.MakeTesters.WTO)

    Parameter MakeTesters.WTO

    module TransferFunctions = RPO.TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +WTO (infer.UnitTests.AnalyzerTester.MakeTesters.WTO)

    Parameter MakeTesters.WTO

    module TransferFunctions = RPO.TransferFunctions
    module InvariantMap = TransferFunctions.CFG.Node.IdMap

    invariant map from node id -> state representing postcondition for node id

    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option

    compute and return the postcondition for the given IR.Procdesc.t starting from initial. pp_instr is used for the debug HTML and passed as a hook to handle both SIL and HIL CFGs.

    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map

    compute and return invariant map for the given CFG/procedure starting from initial.

    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map

    compute and return invariant map for the given procedure starting from initial

    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option

    extract the precondition for a node id from the given invariant map

    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option

    extract the state for a node id from the given invariant map

    \ No newline at end of file + 'a option

    extract the state for a node id from the given invariant map

    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/index.html index 5fe1755b945..d0731c03160 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/MakeTesters/index.html @@ -1,5 +1,5 @@ -MakeTesters (infer.UnitTests.AnalyzerTester.MakeTesters)

    Module AnalyzerTester.MakeTesters

    Parameters

    module RPO : +MakeTesters (infer.UnitTests.AnalyzerTester.MakeTesters)

    Module AnalyzerTester.MakeTesters

    Parameters

    module WTO : Absint.AbstractInterpreter.S @@ -7,13 +7,13 @@ (string * (StructuredSil.structured_instr Base__List.t -> (Backend__Summary.t -> WTO.TransferFunctions.analysis_data) -> - initial:WTO.TransferFunctions.Domain.t -> + initial:WTO.TransferFunctions.Domain.t -> (F.formatter -> WTO.TransferFunctions.Domain.t -> unit) option -> 'a -> unit)) list
    val create_tests : - initial:WTO.TransferFunctions.Domain.t -> - ?pp_opt:(F.formatter -> WTO.TransferFunctions.Domain.t -> unit) -> + initial:WTO.TransferFunctions.Domain.t -> + ?pp_opt:(F.formatter -> WTO.TransferFunctions.Domain.t -> unit) -> (Backend__Summary.t -> WTO.TransferFunctions.analysis_data) -> (string * StructuredSil.structured_instr Base__List.t) list -> - OUnit2.test list
    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/StructuredSil/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/StructuredSil/index.html index 825d44a6ef1..ef500efbdbb 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/StructuredSil/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/StructuredSil/index.html @@ -1,33 +1,33 @@ -StructuredSil (infer.UnitTests.AnalyzerTester.StructuredSil)

    Module AnalyzerTester.StructuredSil

    structured language that makes it easy to write small test programs in OCaml

    type assertion = string
    type label = int
    type exn_style =
    1. | Java
    2. | Cpp of {
      1. try_id : int;
      }
    type structured_instr =
    1. | Cmd of IR.Sil.instr
    2. | If of IR.Exp.t * structured_instr list * structured_instr list
    3. | While of IR.Exp.t * structured_instr list
      (*

      try/catch/finally. note: there is no throw. the semantics are that every command in the try block is assumed to be possibly-excepting, and the catch block captures all exceptions

      *)
    4. | Try of exn_style +StructuredSil (infer.UnitTests.AnalyzerTester.StructuredSil)

      Module AnalyzerTester.StructuredSil

      structured language that makes it easy to write small test programs in OCaml

      type assertion = string
      type label = int
      type exn_style =
      1. | Java
      2. | Cpp of {
        1. try_id : int;
        }
      type structured_instr =
      1. | Cmd of IR.Sil.instr
      2. | If of IR.Exp.t * structured_instr list * structured_instr list
      3. | While of IR.Exp.t * structured_instr list
        (*

        try/catch/finally. note: there is no throw. the semantics are that every command in the try block is assumed to be possibly-excepting, and the catch block captures all exceptions

        *)
      4. | Try of exn_style * structured_instr list * structured_instr list - * structured_instr list
      5. | Invariant of assertion * label
        (*

        gets autotranslated into assertions about abstract state

        *)
      val pp_structured_instr : IR.Sil.F.formatter -> structured_instr -> unit
      val pp_structured_instr_list : F.formatter -> structured_instr list -> unit
      val pp_structured_program : F.formatter -> structured_instr list -> unit
      val dummy_typ : IR.Typ.t
      val dummy_loc : IBase.Location.t
      val dummy_procname : IR.Procname.t
      val label_counter : int IStdlib.IStd.ref
      val fresh_label : unit -> int
      val invariant : assertion -> structured_instr
      val pvar_of_str : string -> IR.Pvar.t
      val var_of_str : string -> IR.Exp.t
      val ident_of_str : string -> IR.Ident.t
      val unknown_exp : IR.Exp.t
      val make_load : rhs_typ:IR.Typ.t -> IR.Ident.t -> IR.Exp.t -> structured_instr
      val make_set : - rhs_typ:IR.Typ.t -> - lhs_exp:IR.Exp.t -> - rhs_exp:IR.Exp.t -> + * structured_instr list
    5. | Invariant of assertion * label
      (*

      gets autotranslated into assertions about abstract state

      *)
    val pp_structured_instr : IR.Sil.F.formatter -> structured_instr -> unit
    val pp_structured_instr_list : F.formatter -> structured_instr list -> unit
    val pp_structured_program : F.formatter -> structured_instr list -> unit
    val dummy_typ : IR.Typ.t
    val dummy_loc : IBase.Location.t
    val dummy_procname : IR.Procname.t
    val label_counter : int IStdlib.IStd.ref
    val fresh_label : unit -> int
    val invariant : assertion -> structured_instr
    val pvar_of_str : string -> IR.Pvar.t
    val var_of_str : string -> IR.Exp.t
    val ident_of_str : string -> IR.Ident.t
    val unknown_exp : IR.Exp.t
    val make_load : rhs_typ:IR.Typ.t -> IR.Ident.t -> IR.Exp.t -> structured_instr
    val make_set : + rhs_typ:IR.Typ.t -> + lhs_exp:IR.Exp.t -> + rhs_exp:IR.Exp.t -> structured_instr
    val make_call : - ?procname:IR.Procname.t -> - ?return:(IR.Ident.t * IR.Typ.t) -> + ?procname:IR.Procname.t -> + ?return:(IR.Ident.t * IR.Typ.t) -> (IR.Exp.t * IR.Typ.t) list -> structured_instr
    val make_store : - rhs_typ:IR.Typ.t -> + rhs_typ:IR.Typ.t -> IR.Exp.t -> string -> - rhs_exp:IR.Exp.t -> + rhs_exp:IR.Exp.t -> structured_instr
    val make_load_fld : - rhs_typ:IR.Typ.t -> + rhs_typ:IR.Typ.t -> string -> string -> IR.Exp.t -> - structured_instr
    val id_assign_exp : ?rhs_typ:IR.Typ.t -> string -> IR.Exp.t -> structured_instr
    val id_assign_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val id_assign_var : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val id_set_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val var_assign_exp : rhs_typ:IR.Typ.t -> string -> IR.Exp.t -> structured_instr
    val var_assign_int : string -> int -> structured_instr
    val var_assign_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val var_assign_addrof_var : - ?rhs_typ:IR.Typ.t -> + structured_instr
    val id_assign_exp : ?rhs_typ:IR.Typ.t -> string -> IR.Exp.t -> structured_instr
    val id_assign_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val id_assign_var : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val id_set_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val var_assign_exp : rhs_typ:IR.Typ.t -> string -> IR.Exp.t -> structured_instr
    val var_assign_int : string -> int -> structured_instr
    val var_assign_id : ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val var_assign_addrof_var : + ?rhs_typ:IR.Typ.t -> string -> string -> structured_instr
    val call_unknown : - ?return:(string * IR.Typ.t) -> + ?return:(string * IR.Typ.t) -> string list -> structured_instr
    val make_try_block : int -> structured_instr list -> - structured_instr Base__List.t
    val make_catch_block : int -> structured_instr list -> structured_instr list
    \ No newline at end of file + structured_instr Base__List.t
    val make_catch_block : int -> structured_instr list -> structured_instr list
    diff --git a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/index.html b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/index.html index 5ed22fc5785..a3b5be3841c 100644 --- a/website/static/odoc/next/infer/UnitTests/AnalyzerTester/index.html +++ b/website/static/odoc/next/infer/UnitTests/AnalyzerTester/index.html @@ -1,5 +1,5 @@ -AnalyzerTester (infer.UnitTests.AnalyzerTester)

    Module UnitTests.AnalyzerTester

    module F = Stdlib.Format

    utilities for writing abstract domains/transfer function tests

    module StructuredSil : sig ... end

    structured language that makes it easy to write small test programs in OCaml

    module MakeTester +AnalyzerTester (infer.UnitTests.AnalyzerTester)

    Module UnitTests.AnalyzerTester

    module F = Stdlib.Format

    utilities for writing abstract domains/transfer function tests

    module StructuredSil : sig ... end

    structured language that makes it easy to write small test programs in OCaml

    \ No newline at end of file + sig ... end
    diff --git a/website/static/odoc/next/infer/UnitTests/CStubsTests/index.html b/website/static/odoc/next/infer/UnitTests/CStubsTests/index.html index bce74825759..0661d119201 100644 --- a/website/static/odoc/next/infer/UnitTests/CStubsTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/CStubsTests/index.html @@ -1,5 +1,5 @@ -CStubsTests (infer.UnitTests.CStubsTests)

    Module UnitTests.CStubsTests

    val pp_diff_of_hashed_value : +CStubsTests (infer.UnitTests.CStubsTests)

    Module UnitTests.CStubsTests

    val pp_diff_of_hashed_value : Stdlib.Format.formatter -> (string * string) -> - unit
    val test_fnv64_hash_function : OUnit2.test list
    val tests : OUnit2.test
    \ No newline at end of file + unit
    val test_fnv64_hash_function : OUnit2.test list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/DifferentialFiltersTests/index.html b/website/static/odoc/next/infer/UnitTests/DifferentialFiltersTests/index.html index 00867855b24..21ac5874282 100644 --- a/website/static/odoc/next/infer/UnitTests/DifferentialFiltersTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/DifferentialFiltersTests/index.html @@ -1,2 +1,2 @@ -DifferentialFiltersTests (infer.UnitTests.DifferentialFiltersTests)

    Module UnitTests.DifferentialFiltersTests

    type 'a outcome =
    1. | Return of 'a
    2. | Raise of exn
    val test_file_renamings_from_json : OUnit2.test list
    val test_file_renamings_find_previous : OUnit2.test list
    val test_relative_complements : OUnit2.test list
    val test_skip_duplicated_types_on_filenames : OUnit2.test
    val test_interesting_paths_filter : OUnit2.test list
    val tests : OUnit2.test
    \ No newline at end of file +DifferentialFiltersTests (infer.UnitTests.DifferentialFiltersTests)

    Module UnitTests.DifferentialFiltersTests

    type 'a outcome =
    1. | Return of 'a
    2. | Raise of exn
    val test_file_renamings_from_json : OUnit2.test list
    val test_file_renamings_find_previous : OUnit2.test list
    val test_relative_complements : OUnit2.test list
    val test_skip_duplicated_types_on_filenames : OUnit2.test
    val test_interesting_paths_filter : OUnit2.test list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/DifferentialTests/index.html b/website/static/odoc/next/infer/UnitTests/DifferentialTests/index.html index 278bb803801..cf97b76f6ad 100644 --- a/website/static/odoc/next/infer/UnitTests/DifferentialTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/DifferentialTests/index.html @@ -1,2 +1,2 @@ -DifferentialTests (infer.UnitTests.DifferentialTests)

    Module UnitTests.DifferentialTests

    val current_report : ATDGenerated.Jsonbug_t.jsonbug list
    val previous_report : ATDGenerated.Jsonbug_t.jsonbug list
    val current_costs : 'a list
    val previous_costs : 'a list
    val current_config_impact : 'a list
    val previous_config_impact : 'a list
    val test_diff_keeps_duplicated_hashes : OUnit2.test
    val test_set_operations : OUnit2.test
    val tests : OUnit2.test
    \ No newline at end of file +DifferentialTests (infer.UnitTests.DifferentialTests)

    Module UnitTests.DifferentialTests

    val current_report : ATDGenerated.Jsonbug_t.jsonbug list
    val previous_report : ATDGenerated.Jsonbug_t.jsonbug list
    val current_costs : 'a list
    val previous_costs : 'a list
    val current_config_impact : 'a list
    val previous_config_impact : 'a list
    val test_diff_keeps_duplicated_hashes : OUnit2.test
    val test_set_operations : OUnit2.test
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/DifferentialTestsUtils/index.html b/website/static/odoc/next/infer/UnitTests/DifferentialTestsUtils/index.html index 7309b129d7f..169cd665f4c 100644 --- a/website/static/odoc/next/infer/UnitTests/DifferentialTestsUtils/index.html +++ b/website/static/odoc/next/infer/UnitTests/DifferentialTestsUtils/index.html @@ -1,24 +1,24 @@ -DifferentialTestsUtils (infer.UnitTests.DifferentialTestsUtils)

    Module UnitTests.DifferentialTestsUtils

    val create_fake_jsonbug : - ?bug_type:string -> - ?qualifier:string -> - ?suggestion:string option -> - ?severity:string -> - ?category:string -> - ?line:int -> - ?column:int -> - ?procedure:string -> - ?procedure_start_line:int -> - ?file:string -> - ?bug_trace:ATDGenerated.Jsonbug_t.json_trace_item list -> - ?key:string -> - ?node_key:string option -> - ?hash:string -> - ?dotty:string option -> - ?infer_source_loc:ATDGenerated.Jsonbug_t.loc option -> +DifferentialTestsUtils (infer.UnitTests.DifferentialTestsUtils)

    Module UnitTests.DifferentialTestsUtils

    val create_fake_jsonbug : + ?bug_type:string -> + ?qualifier:string -> + ?suggestion:string option -> + ?severity:string -> + ?category:string -> + ?line:int -> + ?column:int -> + ?procedure:string -> + ?procedure_start_line:int -> + ?file:string -> + ?bug_trace:ATDGenerated.Jsonbug_t.json_trace_item list -> + ?key:string -> + ?node_key:string option -> + ?hash:string -> + ?dotty:string option -> + ?infer_source_loc:ATDGenerated.Jsonbug_t.loc option -> unit -> ATDGenerated.Jsonbug_t.jsonbug
    val pp_diff_of_list : - pp:(IStdlib.Pp.F.formatter -> 'a -> unit) -> + pp:(IStdlib.Pp.F.formatter -> 'a -> unit) -> string -> Stdlib.Format.formatter -> ('b list * 'a list) -> @@ -32,4 +32,4 @@ (int list * int list) -> unit
    val sorted_hashes_of_issues : ATDGenerated.Jsonbug_t.report -> - IStdlib.IStd.String.t list
    \ No newline at end of file + IStdlib.IStd.String.t list
    diff --git a/website/static/odoc/next/infer/UnitTests/FileDiffTests/index.html b/website/static/odoc/next/infer/UnitTests/FileDiffTests/index.html index 27ea9195a53..c95bc3169db 100644 --- a/website/static/odoc/next/infer/UnitTests/FileDiffTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/FileDiffTests/index.html @@ -1,3 +1,3 @@ -FileDiffTests (infer.UnitTests.FileDiffTests)

    Module UnitTests.FileDiffTests

    val test_unixdiff_process_raw_directives_with_valid_input : OUnit2.test list
    val test_unixdiff_process_raw_directives_with_invalid_input : OUnit2.test list
    val test_unixdiff_pp : OUnit2.test list
    val u : int -> UnixDiffTest.t list
    val n : int -> UnixDiffTest.t list
    val o : int -> UnixDiffTest.t list
    val test_parse_directives_with_valid_input : OUnit2.test list
    val test_parse_unix_diff_with_valid_input : OUnit2.test list
    val tests : OUnit2.test
    \ No newline at end of file +FileDiffTests (infer.UnitTests.FileDiffTests)

    Module UnitTests.FileDiffTests

    val test_unixdiff_process_raw_directives_with_valid_input : OUnit2.test list
    val test_unixdiff_process_raw_directives_with_invalid_input : OUnit2.test list
    val test_unixdiff_pp : OUnit2.test list
    val u : int -> UnixDiffTest.t list
    val n : int -> UnixDiffTest.t list
    val o : int -> UnixDiffTest.t list
    val test_parse_directives_with_valid_input : OUnit2.test list
    val test_parse_unix_diff_with_valid_input : OUnit2.test list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/GradleTests/index.html b/website/static/odoc/next/infer/UnitTests/GradleTests/index.html index 81d5f42bbd8..96385a924d2 100644 --- a/website/static/odoc/next/infer/UnitTests/GradleTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/GradleTests/index.html @@ -1,5 +1,5 @@ -GradleTests (infer.UnitTests.GradleTests)

    Module UnitTests.GradleTests

    val javac_data_eq : +GradleTests (infer.UnitTests.GradleTests)

    Module UnitTests.GradleTests

    val test_parse : string -> string list -> string list -> unit
    val tests_wrapper : 'a -> unit
    val tests : OUnit2.test
    \ No newline at end of file + bool
    val test_parse : string -> string list -> string list -> unit
    val tests_wrapper : 'a -> unit
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/HilExpTests/index.html b/website/static/odoc/next/infer/UnitTests/HilExpTests/index.html index c8cf013e3e6..893f8b1b221 100644 --- a/website/static/odoc/next/infer/UnitTests/HilExpTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/HilExpTests/index.html @@ -1,2 +1,2 @@ -HilExpTests (infer.UnitTests.HilExpTests)

    Module UnitTests.HilExpTests

    val tests : OUnit2.test
    \ No newline at end of file +HilExpTests (infer.UnitTests.HilExpTests)

    Module UnitTests.HilExpTests

    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/IListTests/index.html b/website/static/odoc/next/infer/UnitTests/IListTests/index.html index d65cca16040..8d2de34a359 100644 --- a/website/static/odoc/next/infer/UnitTests/IListTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/IListTests/index.html @@ -1,2 +1,2 @@ -IListTests (infer.UnitTests.IListTests)

    Module UnitTests.IListTests

    val inputs : (string * int list) list
    val inter_tests : OUnit2.test list
    val traverse_test : OUnit2.test list
    val tests : OUnit2.test
    \ No newline at end of file +IListTests (infer.UnitTests.IListTests)

    Module UnitTests.IListTests

    val inputs : (string * int list) list
    val inter_tests : OUnit2.test list
    val traverse_test : OUnit2.test list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/JavaClassNameTests/index.html b/website/static/odoc/next/infer/UnitTests/JavaClassNameTests/index.html index bf882f63fe8..57b0592304d 100644 --- a/website/static/odoc/next/infer/UnitTests/JavaClassNameTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/JavaClassNameTests/index.html @@ -1,6 +1,6 @@ -JavaClassNameTests (infer.UnitTests.JavaClassNameTests)

    Module UnitTests.JavaClassNameTests

    val assert_equal_to : +JavaClassNameTests (infer.UnitTests.JavaClassNameTests)

    Module UnitTests.JavaClassNameTests

    val assert_equal_to : IR.JavaClassName.t -> - expected_package:string option -> - expected_classname:string -> - unit
    val assert_some : 'a option -> 'b
    val assert_none : 'a option -> unit
    val test_from_string : OUnit2.test
    val test_anonymous : OUnit2.test
    val test_outer : OUnit2.test
    val tests : OUnit2.test
    \ No newline at end of file + expected_package:string option -> + expected_classname:string -> + unit
    val assert_some : 'a option -> 'b
    val assert_none : 'a option -> unit
    val test_from_string : OUnit2.test
    val test_anonymous : OUnit2.test
    val test_outer : OUnit2.test
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/JavaProfilerSamplesTest/index.html b/website/static/odoc/next/infer/UnitTests/JavaProfilerSamplesTest/index.html index 87cf860017b..6751f5b4617 100644 --- a/website/static/odoc/next/infer/UnitTests/JavaProfilerSamplesTest/index.html +++ b/website/static/odoc/next/infer/UnitTests/JavaProfilerSamplesTest/index.html @@ -1,3 +1,3 @@ -JavaProfilerSamplesTest (infer.UnitTests.JavaProfilerSamplesTest)

    Module UnitTests.JavaProfilerSamplesTest

    val test_jni_pp : OUnit2.test list
    val test_jni_parse_method_str_with_invalid_input : OUnit2.test list
    val test_jni_parse_str_with_valid_input : OUnit2.test list
    val test_jni_parse_str_with_invalid_input : OUnit2.test list
    val test_from_json_string_with_valid_input : OUnit2.test list
    val test_from_json_string_with_invalid_input : OUnit2.test list
    val tests : OUnit2.test
    \ No newline at end of file +JavaProfilerSamplesTest (infer.UnitTests.JavaProfilerSamplesTest)

    Module UnitTests.JavaProfilerSamplesTest

    val test_jni_pp : OUnit2.test list
    val test_jni_parse_method_str_with_invalid_input : OUnit2.test list
    val test_jni_parse_str_with_valid_input : OUnit2.test list
    val test_jni_parse_str_with_invalid_input : OUnit2.test list
    val test_from_json_string_with_valid_input : OUnit2.test list
    val test_from_json_string_with_invalid_input : OUnit2.test list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/LRUHash/index.html b/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/LRUHash/index.html index 827e7371320..81e5e717646 100644 --- a/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/LRUHash/index.html +++ b/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/LRUHash/index.html @@ -1,7 +1,7 @@ -LRUHash (infer.UnitTests.LRUHashtblTests.LRUHash)

    Module LRUHashtblTests.LRUHash

    type key = IStdlib.IStd.Int.t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : - pp_key:(Stdlib.Format.formatter -> key -> unit) -> - pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> +LRUHash (infer.UnitTests.LRUHashtblTests.LRUHash)

    Module LRUHashtblTests.LRUHash

    type key = IStdlib.IStd.Int.t
    type 'a t
    val create : initial_size:int -> max_size:int -> 'a t
    val find_opt : 'a t -> key -> 'a option
    val replace : 'a t -> key -> 'a -> unit
    val remove : 'a t -> key -> unit
    val clear : 'a t -> unit
    val pp : + pp_key:(Stdlib.Format.formatter -> key -> unit) -> + pp_v:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a t -> - unit
    val bindings : 'a t -> (key * 'a) list
    \ No newline at end of file + unit
    val bindings : 'a t -> (key * 'a) list
    diff --git a/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/index.html b/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/index.html index 845bc39122c..a80f3305f05 100644 --- a/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/LRUHashtblTests/index.html @@ -1,2 +1,2 @@ -LRUHashtblTests (infer.UnitTests.LRUHashtblTests)

    Module UnitTests.LRUHashtblTests

    module LRUHash : sig ... end
    val inputs : (string * (unit -> int LRUHash.t) * (int * int) list) list
    val tests : OUnit2.test
    \ No newline at end of file +LRUHashtblTests (infer.UnitTests.LRUHashtblTests)

    Module UnitTests.LRUHashtblTests

    module LRUHash : sig ... end
    val inputs : (string * (unit -> int LRUHash.t) * (int * int) list) list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/M/index.html index 829bde8e4ad..bd567ab60e1 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html index 0caa69395a0..fe8a0982ed8 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html index a085f83520f..f38c825b366 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html index d09eb9d0d07..c8e841587bd 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/index.html index 25a91d08dad..14c5d01f230 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/Domain/index.html index d9b579f86cb..f4783f7fa71 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/index.html index 0664fb93c2b..748840fbbea 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/index.html index 078880681bb..b3b17df9f5c 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_RPO/index.html @@ -1,15 +1,15 @@ -AI_RPO (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.LivenessTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/M/index.html index 4b521f2b3af..2376b8230aa 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html index 24110542b09..36017310661 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html index 55e518ef8e4..29f9dc8b765 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html index a506c709659..b02b74b4c49 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/index.html index 7deeaff21f9..17e0c4d317f 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/Domain/index.html index 2c0a2274de3..f5956e84939 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/index.html index b520eaba7b8..61440155c11 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/index.html index c811a2b7800..8c92064cae3 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/AI_WTO/index.html @@ -1,15 +1,15 @@ -AI_WTO (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.LivenessTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/index.html index 9fbd5f7553b..d9a2aa27756 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/TestInterpreter/index.html @@ -1,10 +1,10 @@ -TestInterpreter (infer.UnitTests.LivenessTests.TestInterpreter)

    Module LivenessTests.TestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +TestInterpreter (infer.UnitTests.LivenessTests.TestInterpreter)

    Module LivenessTests.TestInterpreter

    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/LivenessTests/index.html b/website/static/odoc/next/infer/UnitTests/LivenessTests/index.html index 5daba77a630..50fb7516a54 100644 --- a/website/static/odoc/next/infer/UnitTests/LivenessTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/LivenessTests/index.html @@ -1,2 +1,2 @@ -LivenessTests (infer.UnitTests.LivenessTests)

    Module UnitTests.LivenessTests

    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +LivenessTests (infer.UnitTests.LivenessTests)

    Module UnitTests.LivenessTests

    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdMap/index.html index fb98f8b4a84..cf2d3d65f31 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.ProcCfgTests.BackwardCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.ProcCfgTests.BackwardCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdSet/index.html index d01131aa1af..c3ba16686e9 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.ProcCfgTests.BackwardCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.ProcCfgTests.BackwardCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/index.html index 9e08a617af1..ffd3a616ad0 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.ProcCfgTests.BackwardCfg.Node)

    Module BackwardCfg.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.ProcCfgTests.BackwardCfg.Node)

    Module BackwardCfg.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/index.html index 9b34b62eb92..b6615d5ae5c 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardCfg/index.html @@ -1,5 +1,5 @@ -BackwardCfg (infer.UnitTests.ProcCfgTests.BackwardCfg)

    Module ProcCfgTests.BackwardCfg

    type instrs_dir = IR.Instrs.reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +BackwardCfg (infer.UnitTests.ProcCfgTests.BackwardCfg)

    Module ProcCfgTests.BackwardCfg

    type instrs_dir = IR.Instrs.reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html index 1ddd496e9a9..a52641b3a79 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a InstrCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a InstrCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html index 66dd35a4f72..6451335768e 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/index.html index 4ed2ce06417..a6912b2c143 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node)

    Module BackwardInstrCfg.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.ProcCfgTests.BackwardInstrCfg.Node)

    Module BackwardInstrCfg.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/index.html index 42930d03e81..3d00dc56ada 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/BackwardInstrCfg/index.html @@ -1,5 +1,5 @@ -BackwardInstrCfg (infer.UnitTests.ProcCfgTests.BackwardInstrCfg)

    Module ProcCfgTests.BackwardInstrCfg

    type t = InstrCfg.t
    type instrs_dir = IR.Instrs.reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +BackwardInstrCfg (infer.UnitTests.ProcCfgTests.BackwardInstrCfg)

    Module ProcCfgTests.BackwardInstrCfg

    type t = InstrCfg.t
    type instrs_dir = IR.Instrs.reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdMap/index.html index 338c374b124..65fc66e1f23 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.ProcCfgTests.InstrCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.ProcCfgTests.InstrCfg.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdSet/index.html index f9a222d3aa7..3454eb91cf9 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.ProcCfgTests.InstrCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.ProcCfgTests.InstrCfg.Node.IdSet)

    Module Node.IdSet

    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/index.html index 184d2b7c779..38a853ed43c 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.ProcCfgTests.InstrCfg.Node)

    Module InstrCfg.Node

    type instr_index = int
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    \ No newline at end of file +Node (infer.UnitTests.ProcCfgTests.InstrCfg.Node)

    Module InstrCfg.Node

    type instr_index = int
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val equal : t -> t -> bool
    val compare : t -> t -> int
    val to_instr : instr_index -> t -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/index.html index fcf63d2d701..48a35a3ba85 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/InstrCfg/index.html @@ -1,5 +1,5 @@ -InstrCfg (infer.UnitTests.ProcCfgTests.InstrCfg)

    Module ProcCfgTests.InstrCfg

    type instrs_dir = IR.Instrs.not_reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +InstrCfg (infer.UnitTests.ProcCfgTests.InstrCfg)

    Module ProcCfgTests.InstrCfg

    type instrs_dir = IR.Instrs.not_reversed
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    val last_of_underlying_node : IR.Procdesc.Node.t -> Node.t
    diff --git a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/index.html b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/index.html index 1cb0441683a..a1a644587c4 100644 --- a/website/static/odoc/next/infer/UnitTests/ProcCfgTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/ProcCfgTests/index.html @@ -1,2 +1,2 @@ -ProcCfgTests (infer.UnitTests.ProcCfgTests)

    Module UnitTests.ProcCfgTests

    module F = Stdlib.Format
    module BackwardCfg : sig ... end
    module InstrCfg : sig ... end
    module BackwardInstrCfg : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +ProcCfgTests (infer.UnitTests.ProcCfgTests)

    Module UnitTests.ProcCfgTests

    module F = Stdlib.Format
    module BackwardCfg : sig ... end
    module InstrCfg : sig ... end
    module BackwardInstrCfg : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/RestartSchedulerTests/index.html b/website/static/odoc/next/infer/UnitTests/RestartSchedulerTests/index.html index a62b1ba375a..efa5c1aac75 100644 --- a/website/static/odoc/next/infer/UnitTests/RestartSchedulerTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/RestartSchedulerTests/index.html @@ -1,2 +1,2 @@ -RestartSchedulerTests (infer.UnitTests.RestartSchedulerTests)

    Module UnitTests.RestartSchedulerTests

    val a_pname : IR.Procname.t
    val tests_wrapper : 'a -> unit
    val tests : OUnit2.test
    \ No newline at end of file +RestartSchedulerTests (infer.UnitTests.RestartSchedulerTests)

    Module UnitTests.RestartSchedulerTests

    val a_pname : IR.Procname.t
    val tests_wrapper : 'a -> unit
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdMap/index.html index 521c45b60a9..30a1e99f31b 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.SchedulerTests.MockNode.IdMap)

    Module MockNode.IdMap

    type key = OrderedId.t
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.SchedulerTests.MockNode.IdMap)

    Module MockNode.IdMap

    type key = OrderedId.t
    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdSet/index.html index 4fedccc1829..2a480d7cbcb 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.SchedulerTests.MockNode.IdSet)

    Module MockNode.IdSet

    type elt = OrderedId.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.SchedulerTests.MockNode.IdSet)

    Module MockNode.IdSet

    type elt = OrderedId.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/OrderedId/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/OrderedId/index.html index 6ffc9a03988..d3e47839fcd 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/OrderedId/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/OrderedId/index.html @@ -1,2 +1,2 @@ -OrderedId (infer.UnitTests.SchedulerTests.MockNode.OrderedId)

    Module MockNode.OrderedId

    type t = id
    val compare : t -> t -> int
    val pp : F.formatter -> int -> unit
    \ No newline at end of file +OrderedId (infer.UnitTests.SchedulerTests.MockNode.OrderedId)

    Module MockNode.OrderedId

    type t = id
    val compare : t -> t -> int
    val pp : F.formatter -> int -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/index.html index dc52476faf5..fb2c6381459 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockNode/index.html @@ -1,8 +1,8 @@ -MockNode (infer.UnitTests.SchedulerTests.MockNode)

    Module SchedulerTests.MockNode

    mocks for creating CFG's from adjacency lists

    type t = int
    val hash_fold_t : +MockNode (infer.UnitTests.SchedulerTests.MockNode)

    Module SchedulerTests.MockNode

    mocks for creating CFG's from adjacency lists

    type t = int
    val hash_fold_t : Ppx_hash_lib.Std.Hash.state -> t -> Ppx_hash_lib.Std.Hash.state
    val hash : t -> Ppx_hash_lib.Std.Hash.hash_value
    type id = int
    val equal_id : id -> id -> bool
    val hash_fold_id : Ppx_hash_lib.Std.Hash.state -> id -> - Ppx_hash_lib.Std.Hash.state
    val hash_id : id -> Ppx_hash_lib.Std.Hash.hash_value
    val id : 'a -> 'b
    val loc : 'a -> 'b
    val underlying_node : 'a -> 'b
    val of_underlying_node : 'a -> 'b
    val kind : 'a -> IR.Procdesc.Node.nodekind
    val compare_id : IStdlib.IStd.Int.t -> IStdlib.IStd.Int.t -> int
    val pp_id : F.formatter -> int -> unit
    module OrderedId : sig ... end
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : 'a -> 'b -> 'c
    \ No newline at end of file + Ppx_hash_lib.Std.Hash.state
    val hash_id : id -> Ppx_hash_lib.Std.Hash.hash_value
    val id : 'a -> 'b
    val loc : 'a -> 'b
    val underlying_node : 'a -> 'b
    val of_underlying_node : 'a -> 'b
    val kind : 'a -> IR.Procdesc.Node.nodekind
    val compare_id : IStdlib.IStd.Int.t -> IStdlib.IStd.Int.t -> int
    val pp_id : F.formatter -> int -> unit
    module OrderedId : sig ... end
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : 'a -> 'b -> 'c
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/IdMap/index.html index c0a4288c415..0245ebec622 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a0 t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a0 t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/index.html index dabbebc0567..c1731735c4a 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG.Node)

    Module CFG.Node

    type t = int
    type id = int
    val id : t -> id
    module IdMap : sig ... end
    \ No newline at end of file +Node (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG.Node)

    Module CFG.Node

    type t = int
    type id = int
    val id : t -> id
    module IdMap : sig ... end
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/index.html index 5346f6ab543..3ac73e7ff48 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/CFG/index.html @@ -1,2 +1,2 @@ -CFG (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG)

    Module WTO.CFG

    module Node : sig ... end
    type t = t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +CFG (infer.UnitTests.SchedulerTests.MockProcCfg.WTO.CFG)

    Module WTO.CFG

    module Node : sig ... end
    type t = t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/index.html index a69bce5370d..02ca009a7e0 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/WTO/index.html @@ -1,2 +1,2 @@ -WTO (infer.UnitTests.SchedulerTests.MockProcCfg.WTO)

    Module MockProcCfg.WTO

    module CFG : sig ... end
    val make : CFG.t -> CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    \ No newline at end of file +WTO (infer.UnitTests.SchedulerTests.MockProcCfg.WTO)

    Module MockProcCfg.WTO

    module CFG : sig ... end
    val make : CFG.t -> CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/index.html index dec5384ce96..2c3e6edb7d6 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/MockProcCfg/index.html @@ -1,22 +1,22 @@ -MockProcCfg (infer.UnitTests.SchedulerTests.MockProcCfg)

    Module SchedulerTests.MockProcCfg

    module Node = MockNode
    type t = (Node.t * Node.t list) list
    type instrs_dir = IR.Instrs.not_reversed
    val instrs : 'a -> 'b IR.Instrs.t
    val equal_id : IStdlib.IStd.Int.t -> IStdlib.IStd.Int.t -> bool
    val fold_succs : +MockProcCfg (infer.UnitTests.SchedulerTests.MockProcCfg)

    Module SchedulerTests.MockProcCfg

    module Node = MockNode
    type t = (Node.t * Node.t list) list
    type instrs_dir = IR.Instrs.not_reversed
    val instrs : 'a -> 'b IR.Instrs.t
    val equal_id : IStdlib.IStd.Int.t -> IStdlib.IStd.Int.t -> bool
    val fold_succs : (IStdlib.IStd.Int.t * 'a list) list -> IStdlib.IStd.Int.t -> - init:'b -> - f:('c -> 'a -> 'c) -> + init:'b -> + f:('c -> 'a -> 'c) -> 'd
    val fold_preds : ('a * IStdlib.IStd.Int.t list) list -> IStdlib.IStd.Int.t -> - init:'b -> - f:('c -> 'd -> 'c) -> - 'e
    val fold_nodes : ('a * 'b) list -> init:'c -> f:('d -> 'e -> 'd) -> 'f
    val fold_normal_succs : + init:'b -> + f:('c -> 'd -> 'c) -> + 'e
    val fold_nodes : ('a * 'b) list -> init:'c -> f:('d -> 'e -> 'd) -> 'f
    val fold_normal_succs : (IStdlib.IStd.Int.t * 'a list) list -> IStdlib.IStd.Int.t -> - init:'b -> - f:('b -> 'a -> 'b) -> + init:'b -> + f:('b -> 'a -> 'b) -> 'b
    val fold_normal_preds : ('a * IStdlib.IStd.Int.t list) list -> IStdlib.IStd.Int.t -> - init:'b -> - f:('b -> 'a -> 'b) -> - 'b
    val fold_exceptional_succs : 'a -> 'b -> init:'c -> f:'d -> 'e
    val fold_exceptional_preds : 'a -> 'b -> init:'c -> f:'d -> 'e
    val from_adjacency_list : 'a -> 'b
    val start_node : 'a -> int
    val exit_node : 'a -> 'b
    val exn_sink_node : 'a -> 'b
    val proc_desc : 'a -> 'b
    val from_pdesc : 'a -> 'b
    val is_loop_head : 'a -> 'b
    module WTO : sig ... end
    val wto : WTO.CFG.t -> WTO.CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    \ No newline at end of file + init:'b -> + f:('b -> 'a -> 'b) -> + 'b
    val fold_exceptional_succs : 'a -> 'b -> init:'c -> f:'d -> 'e
    val fold_exceptional_preds : 'a -> 'b -> init:'c -> f:'d -> 'e
    val from_adjacency_list : 'a -> 'b
    val start_node : 'a -> int
    val exit_node : 'a -> 'b
    val exn_sink_node : 'a -> 'b
    val proc_desc : 'a -> 'b
    val from_pdesc : 'a -> 'b
    val is_loop_head : 'a -> 'b
    module WTO : sig ... end
    val wto : WTO.CFG.t -> WTO.CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdMap/index.html index 6ff549d9365..c1c63b4a7da 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.SchedulerTests.S.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a MockProcCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.SchedulerTests.S.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a MockProcCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdSet/index.html index 600dee0ca6d..3a7533a12ae 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.SchedulerTests.S.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.SchedulerTests.S.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/index.html index da99233e16a..cd57a84b890 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.SchedulerTests.S.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.SchedulerTests.S.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/index.html index 8602956fcdf..29d65a620f9 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.SchedulerTests.S.CFG)

    Module S.CFG

    type t = MockProcCfg.t
    type instrs_dir = MockProcCfg.instrs_dir
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.UnitTests.SchedulerTests.S.CFG)

    Module S.CFG

    type t = MockProcCfg.t
    type instrs_dir = MockProcCfg.instrs_dir
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/index.html index 451480ae858..bacfa5b93c5 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/S/index.html @@ -1,2 +1,2 @@ -S (infer.UnitTests.SchedulerTests.S)

    Module SchedulerTests.S

    module CFG : sig ... end
    type t
    val schedule_succs : t -> CFG.Node.t -> t
    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option
    val empty : CFG.t -> t
    \ No newline at end of file +S (infer.UnitTests.SchedulerTests.S)

    Module SchedulerTests.S

    module CFG : sig ... end
    type t
    val schedule_succs : t -> CFG.Node.t -> t
    val pop : t -> (CFG.Node.t * CFG.Node.id list * t) option
    val empty : CFG.t -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/SchedulerTests/index.html b/website/static/odoc/next/infer/UnitTests/SchedulerTests/index.html index 0aae87b0b10..2c362d75787 100644 --- a/website/static/odoc/next/infer/UnitTests/SchedulerTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/SchedulerTests/index.html @@ -1,2 +1,2 @@ -SchedulerTests (infer.UnitTests.SchedulerTests)

    Module UnitTests.SchedulerTests

    module F = Stdlib.Format
    module MockNode : sig ... end

    mocks for creating CFG's from adjacency lists

    module MockProcCfg : sig ... end
    module S : sig ... end
    val create_test : S.CFG.t -> S.CFG.Node.t list -> 'a -> unit
    val inputs : (string * (int * int list) list * int list * string) list
    val tests : OUnit2.test
    \ No newline at end of file +SchedulerTests (infer.UnitTests.SchedulerTests)

    Module UnitTests.SchedulerTests

    module F = Stdlib.Format
    module MockNode : sig ... end

    mocks for creating CFG's from adjacency lists

    module MockProcCfg : sig ... end
    module S : sig ... end
    val create_test : S.CFG.t -> S.CFG.Node.t list -> 'a -> unit
    val inputs : (string * (int * int list) list * int list * string) list
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/SeverityTests/index.html b/website/static/odoc/next/infer/UnitTests/SeverityTests/index.html index 790e1bbbff4..9c42776bf81 100644 --- a/website/static/odoc/next/infer/UnitTests/SeverityTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/SeverityTests/index.html @@ -1,2 +1,2 @@ -SeverityTests (infer.UnitTests.SeverityTests)

    Module UnitTests.SeverityTests

    val order_tests : 'a -> unit
    val tests : OUnit2.test
    \ No newline at end of file +SeverityTests (infer.UnitTests.SeverityTests)

    Module UnitTests.SeverityTests

    val order_tests : 'a -> unit
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html index 02c41e834df..42ed3117866 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html index 767637c7669..f2e23fe65bd 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html index 9a244870f0b..e1f0a462f37 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html index 1a03a97b3b5..46f40d8ada7 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html index e7f6ff94b71..1221bed31b3 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions.Domain)

    Module TransferFunctions.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html index c459ed2219b..e71a2c4d4ca 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html @@ -1,9 +1,9 @@ -TransferFunctions (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +TransferFunctions (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter.TransferFunctions)

    Module Interpreter.TransferFunctions

    module CFG : sig ... end
    module Domain : sig ... end
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html index 70e889c9684..64fcab40a35 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html @@ -1,23 +1,23 @@ -Interpreter (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter)

    Module Analyzer.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = +Interpreter (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer.Interpreter)

    Module Analyzer.Interpreter

    module TransferFunctions : sig ... end
    module InvariantMap = TransferFunctions.CFG.Node.IdMap
    type invariant_map = TransferFunctions.Domain.t Absint__AbstractInterpreter.State.t InvariantMap.t
    val compute_post : - ?do_narrowing:bool -> - ?pp_instr: + ?do_narrowing:bool -> + ?pp_instr: (TransferFunctions.Domain.t -> IR.Sil.instr -> (Stdlib.Format.formatter -> unit) option) -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> TransferFunctions.Domain.t option
    val exec_cfg : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.CFG.t -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> invariant_map
    val exec_pdesc : - ?do_narrowing:bool -> + ?do_narrowing:bool -> TransferFunctions.analysis_data -> - initial:TransferFunctions.Domain.t -> + initial:TransferFunctions.Domain.t -> IR.Procdesc.t -> invariant_map
    val extract_post : TransferFunctions.CFG.Node.id -> @@ -28,4 +28,4 @@ 'a option
    val extract_state : TransferFunctions.CFG.Node.id -> 'a InvariantMap.t -> - 'a option
    \ No newline at end of file + 'a option
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/index.html index 454e2d0187f..9bd3dbf186a 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/Analyzer/index.html @@ -1,6 +1,6 @@ -Analyzer (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer)

    Module MockTaintAnalysis.Analyzer

    module Interpreter : sig ... end
    val compute_post : +Analyzer (infer.UnitTests.TaintTests.MockTaintAnalysis.Analyzer)

    Module MockTaintAnalysis.Analyzer

    module Interpreter : sig ... end
    val compute_post : Interpreter.TransferFunctions.analysis_data -> - initial:domain -> + initial:domain -> IR.Procdesc.t -> - domain option
    \ No newline at end of file + domain option
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/HilConfig/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/HilConfig/index.html index d7a61b8c853..b194b5b9a6a 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/HilConfig/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/HilConfig/index.html @@ -1,2 +1,2 @@ -HilConfig (infer.UnitTests.TaintTests.MockTaintAnalysis.HilConfig)

    Module MockTaintAnalysis.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    \ No newline at end of file +HilConfig (infer.UnitTests.TaintTests.MockTaintAnalysis.HilConfig)

    Module MockTaintAnalysis.HilConfig

    val include_array_indexes : bool

    if true, array index expressions will appear in access paths

    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html index dc852f3beed..560259d3887 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain.AccessMap)

    Module TaintDomain.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain.AccessMap)

    Module TaintDomain.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html index 59cdcdd09b3..dec209cdf0d 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain.TraceDomain)

    Module TaintDomain.TraceDomain

    type t = MockTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain.TraceDomain)

    Module TaintDomain.TraceDomain

    type t = MockTrace.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/index.html index c39ea861e27..409b5f2d34f 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TaintDomain/index.html @@ -1,5 +1,5 @@ -TaintDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain)

    Module MockTaintAnalysis.TaintDomain

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +TaintDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TaintDomain)

    Module MockTaintAnalysis.TaintDomain

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html index 4043eeb0213..fc89fce93fa 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sanitizer)

    Module TraceDomain.Sanitizer

    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option
    val pp : Absint__Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sanitizer)

    Module TraceDomain.Sanitizer

    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option
    val pp : Absint__Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html index 5206c9783e5..2671403ffbe 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink.Kind)

    Module Sink.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink.Kind)

    Module Sink.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html index ed3f197c89b..dde1a3b3bf3 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink.Set)

    Module Sink.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink.Set)

    Module Sink.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html index 3eaf6df6c87..566ff72c596 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink)

    Module TraceDomain.Sink

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : +Sink (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sink)

    Module TraceDomain.Sink

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sinks/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sinks/index.html index 65908ce73f9..e79db44efa0 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sinks/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sinks/index.html @@ -1,2 +1,2 @@ -Sinks (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sinks)

    Module TraceDomain.Sinks

    type elt = Sink.t
    type t = Sink.Set.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Sinks (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sinks)

    Module TraceDomain.Sinks

    type elt = Sink.t
    type t = Sink.Set.t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html index df1a5c73dee..0ed4e18ba88 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source.Kind)

    Module Source.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source.Kind)

    Module Source.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html index 74991a1ac65..0a09737bbe8 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source.Set)

    Module Source.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source.Set)

    Module Source.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html index f1b8318e6fd..974ac5ce0d5 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source)

    Module TraceDomain.Source

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = MockTrace.Source.spec = {
    1. source : t;
    2. index : int option;
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Source)

    Module TraceDomain.Source

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = MockTrace.Source.spec = {
    1. source : t;
    2. index : int option;
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list
    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html index d6e57a526bb..925b840e381 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html index 40ca47af940..2be3db2afd0 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html index a4a0aee4fad..c20a00688a4 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html index f9292debc56..169d765c163 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html index cd097dae697..9f7e9f38f22 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html index 220a23a3bb7..4079aaa0a02 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html index e42430ec6c7..ffb6122e706 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources)

    Module TraceDomain.Sources

    module Known : sig ... end
    module FootprintConfig : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = MockTrace.Sources.t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain.Sources)

    Module TraceDomain.Sources

    module Known : sig ... end
    module FootprintConfig : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = MockTrace.Sources.t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/index.html index efeb39b0e75..e3345fd376a 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TraceDomain/index.html @@ -1,19 +1,19 @@ -TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain)

    Module MockTaintAnalysis.TraceDomain

    module Source : sig ... end
    module Sink : sig ... end
    module Sanitizer : sig ... end
    val get_report : +TraceDomain (infer.UnitTests.TaintTests.MockTaintAnalysis.TraceDomain)

    Module MockTaintAnalysis.TraceDomain

    module Source : sig ... end
    module Sink : sig ... end
    module Sanitizer : sig ... end
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option
    type t = MockTrace.t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks : sig ... end
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option
    type t = MockTrace.t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks : sig ... end
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list
    type report = MockTrace.report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list
    type report = MockTrace.report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list
    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    \ No newline at end of file + Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html index 3a965bf6ea9..74c7f41304c 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a CFG.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a CFG.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html index 4cf18f8bac0..bd7231730ed 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html index 5c82738233e..da76a67109f 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node)

    Module CFG.Node

    type t = CFG.Node.t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id = CFG.Node.id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node)

    Module CFG.Node

    type t = CFG.Node.t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id = CFG.Node.id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html index 37b2ef6244e..c3ca6fc4bcf 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t = CFG.t
    type instrs_dir = CFG.instrs_dir
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : +CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG)

    Module TransferFunctions.CFG

    type t = CFG.t
    type instrs_dir = CFG.instrs_dir
    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdMap/index.html index a1f4831a65b..d5b15f3ac84 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdMap)

    Module Node.IdMap

    include IStdlib.IStd.Caml.Map.S with type key = id
    type key = id
    type !+'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib.PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib.PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdSet/index.html index 84105c104f9..c808254a57e 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/IdSet/index.html @@ -1,2 +1,2 @@ -IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node.IdSet)

    Module Node.IdSet

    include IStdlib.IStd.Caml.Set.S with type elt = id
    type elt = id
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    include IStdlib.PrettyPrintable.PrintableType with type t := t
    val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib.PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html index a101dc31aa7..be7d18a371b 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html @@ -1,5 +1,5 @@ -Node (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    val to_instr : +Node (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG.Node)

    Module CFG.Node

    include Absint.ProcCfg.NodeCommonS
    type t
    include Ppx_hash_lib.Hashable.S with type t := t
    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    type id
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    \ No newline at end of file + Absint.ProcCfg.InstrNode.t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html index 1c9ce4dab9a..09e6c7b2a17 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : +CFG (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions.CFG)

    Parameter TransferFunctions.CFG

    type t
    type instrs_dir
    val instrs : Node.t -> instrs_dir IR.Instrs.t

    get the instructions from a node

    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all successors (normal and exceptional)

    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over all predecessors (normal and exceptional)

    val fold_normal_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over non-exceptional successors

    val fold_normal_preds : t -> @@ -7,4 +7,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional successors

    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold

    fold over exceptional predescessors

    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/index.html index 27f8ae24060..58cc0894ad2 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/TransferFunctions/index.html @@ -1,5 +1,5 @@ -TransferFunctions (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions)

    Module MockTaintAnalysis.TransferFunctions

    Parameters

    Signature

    module CFG : sig ... end
    module Domain = Domain
    type nonrec analysis_data = analysis_data
    val access_path_get_node : +TransferFunctions (infer.UnitTests.TaintTests.MockTaintAnalysis.TransferFunctions)

    Module MockTaintAnalysis.TransferFunctions

    Parameters

    Signature

    module CFG : sig ... end
    module Domain = Domain
    type nonrec analysis_data = analysis_data
    val exp_get_node_ : - abstracted:bool -> + abstracted:bool -> Absint.AccessPath.Abs.raw -> TaintDomain.t -> Absint.FormalMap.t -> TaintDomain.node option
    val hil_exp_get_node : - ?abstracted:bool -> + ?abstracted:bool -> Absint.HilExp.t -> TaintDomain.t -> Absint.FormalMap.t -> @@ -29,7 +29,7 @@ Absint.FormalMap.t -> TaintDomain.t
    val is_endpoint : TraceDomain.Source.t -> bool
    val add_sink : @@ -67,11 +67,11 @@ TaintDomain.t -> TaintDomain.t
    val analyze_call : analysis_data -> - ret_ap:(IR.Var.t * IR.Typ.t) -> - callee_pname:IR.Procname.t -> - actuals:Absint.HilExp.t list -> - call_flags:IR.CallFlags.t -> - callee_loc:IBase.Location.t -> + ret_ap:(IR.Var.t * IR.Typ.t) -> + callee_pname:IR.Procname.t -> + actuals:Absint.HilExp.t list -> + call_flags:IR.CallFlags.t -> + callee_loc:IBase.Location.t -> TaintDomain.t -> TaintDomain.t
    val exec_instr : Domain.t -> @@ -79,4 +79,4 @@ 'a -> 'b -> Absint.HilInstr.t -> - Domain.t
    val pp_session_name : CFG.Node.t -> Quandary__TaintAnalysis.F.formatter -> unit
    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Quandary__TaintAnalysis.F.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/index.html index afd6f30be0b..a06d226d060 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTaintAnalysis/index.html @@ -1,7 +1,7 @@ -MockTaintAnalysis (infer.UnitTests.TaintTests.MockTaintAnalysis)

    Module TaintTests.MockTaintAnalysis

    module TraceDomain : sig ... end
    module TaintDomain : sig ... end
    module Domain = TaintDomain
    type analysis_data = {
    1. analysis_data : Quandary.QuandarySummary.t Absint.InterproceduralAnalysis.t;
    2. formal_map : Absint.FormalMap.t;
    }
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    val check_invariants : TaintDomain.t -> unit
    val make_summary : +MockTaintAnalysis (infer.UnitTests.TaintTests.MockTaintAnalysis)

    Module TaintTests.MockTaintAnalysis

    module TraceDomain : sig ... end
    module TaintDomain : sig ... end
    module Domain = TaintDomain
    type analysis_data = {
    1. analysis_data : Quandary.QuandarySummary.t Absint.InterproceduralAnalysis.t;
    2. formal_map : Absint.FormalMap.t;
    }
    module TransferFunctions (CFG : Absint.ProcCfg.S) : sig ... end
    module Analyzer : sig ... end
    val check_invariants : TaintDomain.t -> unit
    \ No newline at end of file + Quandary.QuandarySummary.AccessTree.t option
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sanitizer/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sanitizer/index.html index 2759eae82f3..84b28e95e9e 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.UnitTests.TaintTests.MockTrace.Sanitizer)

    Module MockTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.UnitTests.TaintTests.MockTrace.Sanitizer)

    Module MockTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Kind/index.html index b07121f0e91..240ecdb80da 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TaintTests.MockTrace.Sink.Kind)

    Module Sink.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TaintTests.MockTrace.Sink.Kind)

    Module Sink.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Set/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Set/index.html index 16fb44e546b..c9a3b55b507 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TaintTests.MockTrace.Sink.Set)

    Module Sink.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TaintTests.MockTrace.Sink.Set)

    Module Sink.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/index.html index ddc651afd67..f07e1294406 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.UnitTests.TaintTests.MockTrace.Sink)

    Module MockTrace.Sink

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : +Sink (infer.UnitTests.TaintTests.MockTrace.Sink)

    Module MockTrace.Sink

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Kind/index.html index f9de32cf843..7bbf859a245 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TaintTests.MockTrace.Source.Kind)

    Module Source.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TaintTests.MockTrace.Source.Kind)

    Module Source.Kind

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Set/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Set/index.html index 71c68afaaf4..6b3506d2d48 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TaintTests.MockTrace.Source.Set)

    Module Source.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TaintTests.MockTrace.Source.Set)

    Module Source.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/index.html index 0c4d3eea0d9..f7af0bcbd56 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.UnitTests.TaintTests.MockTrace.Source)

    Module MockTrace.Source

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = {
    1. source : t;
    2. index : int option;
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.UnitTests.TaintTests.MockTrace.Source)

    Module MockTrace.Source

    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = {
    1. source : t;
    2. index : int option;
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list
    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html index 2410665fbf3..b768480ed87 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html index 945a6f35b10..f4d04e68e2d 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/index.html index f94cfb8b3f2..5a39d23e131 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.UnitTests.TaintTests.MockTrace.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/FootprintConfig/index.html index 3721d2343d3..896ea39b2b6 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.UnitTests.TaintTests.MockTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.UnitTests.TaintTests.MockTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Known/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Known/index.html index 41f6d9e457e..5b923b8d761 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.UnitTests.TaintTests.MockTrace.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.UnitTests.TaintTests.MockTrace.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Sanitizers/index.html index c4d04753dda..d6d14c5c5da 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.UnitTests.TaintTests.MockTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.UnitTests.TaintTests.MockTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/index.html index 9f9f0213444..d9f2b910f52 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.UnitTests.TaintTests.MockTrace.Sources)

    Module MockTrace.Sources

    module Known : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.UnitTests.TaintTests.MockTrace.Sources)

    Module MockTrace.Sources

    module Known : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/index.html index 072e4079ef6..18b2751da5d 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/MockTrace/index.html @@ -1,19 +1,19 @@ -MockTrace (infer.UnitTests.TaintTests.MockTrace)

    Module TaintTests.MockTrace

    module Source : sig ... end
    module Sink : sig ... end
    val get_report : +MockTrace (infer.UnitTests.TaintTests.MockTrace)

    Module TaintTests.MockTrace

    module Source : sig ... end
    module Sink : sig ... end
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option
    type t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option
    type t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list
    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list
    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list
    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    \ No newline at end of file + Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/M/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/M/index.html index 5132359a348..799e155c4eb 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    type key = +M (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.M)

    Module AI_RPO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html index 7efcbc098bd..575375bc48b 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html index b513d5dc834..91611ef8639 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html index db52eb6ef7e..cb924a4870f 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/index.html index 4a4d2c73f9a..6edf13b9c9c 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/Domain/index.html index 01c323e313a..3c2630f7955 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/index.html index 7325049cf55..6ea9f73cd79 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO.T)

    Module AI_RPO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/index.html index 3cc785dc131..3f8ec1cdb5e 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_RPO/index.html @@ -1,15 +1,15 @@ -AI_RPO (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_RPO (infer.UnitTests.TaintTests.TestInterpreter.AI_RPO)

    Module TestInterpreter.AI_RPO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/M/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/M/index.html index 09eca4ca555..5648fbc7e0c 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/M/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/M/index.html @@ -1,15 +1,15 @@ -M (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    type key = +M (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.M)

    Module AI_WTO.M

    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html index 3f98b9044f1..38cde300ccb 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdMap/index.html @@ -1,14 +1,14 @@ -IdMap (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = +IdMap (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html index 78e77ce3de4..4f3f2884b77 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/IdSet/index.html @@ -1,3 +1,3 @@ -IdSet (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +IdSet (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node.IdSet)

    Module Node.IdSet

    type elt = id
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html index 95241416f62..3bea958590f 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/Node/index.html @@ -1,3 +1,3 @@ -Node (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    \ No newline at end of file +Node (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG.Node)

    Module CFG.Node

    val hash_fold_t : t Base__Ppx_hash_lib.hash_fold
    val hash : t -> Base__Ppx_hash_lib.Std.Hash.hash_value
    val compare_id : id -> id -> int
    val equal_id : id -> id -> bool
    val id : t -> id
    val loc : t -> IBase.Location.t
    val underlying_node : t -> IR.Procdesc.Node.t
    val of_underlying_node : IR.Procdesc.Node.t -> t
    val pp_id : Stdlib.Format.formatter -> id -> unit
    module IdMap : sig ... end
    module IdSet : sig ... end
    val to_instr : int -> t -> IR.Procdesc.Node.t * int
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/index.html index 901f5bf75a5..58114bcb265 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/CFG/index.html @@ -1,5 +1,5 @@ -CFG (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    type t = +CFG (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.CFG)

    Module T.CFG

    module Node : sig ... end
    val instrs : Node.t -> instrs_dir IR.Instrs.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_preds : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_normal_succs : t -> @@ -9,4 +9,4 @@ t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val fold_exceptional_preds : t -> - (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    \ No newline at end of file + (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    val exit_node : t -> Node.t
    val exn_sink_node : t -> Node.t option
    val proc_desc : t -> IR.Procdesc.t
    val fold_nodes : (t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val from_pdesc : IR.Procdesc.t -> t
    val is_loop_head : IR.Procdesc.t -> Node.t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/Domain/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/Domain/index.html index ab7e5f7ea71..ee3c7df77a0 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/Domain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/Domain/index.html @@ -1,3 +1,3 @@ -Domain (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    \ No newline at end of file +Domain (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T.Domain)

    Module T.Domain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/index.html index 363fdaf3740..c0248998db8 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/T/index.html @@ -1,9 +1,9 @@ -T (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    module CFG : sig ... end
    module Domain : sig ... end
    type analysis_data = +T (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO.T)

    Module AI_WTO.T

    \ No newline at end of file + Domain.t
    val pp_session_name : CFG.Node.t -> Stdlib.Format.formatter -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/index.html index 1fac2b81b35..ed69fd729d1 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/AI_WTO/index.html @@ -1,15 +1,15 @@ -AI_WTO (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : +AI_WTO (infer.UnitTests.TaintTests.TestInterpreter.AI_WTO)

    Module TestInterpreter.AI_WTO

    module T : sig ... end
    module M : sig ... end
    val gen_pname : unit -> IR.Procname.t
    val structured_program_to_cfg : UnitTests__AnalyzerTester.StructuredSil.structured_instr Base__List.t -> Backend__Summary.t * (string * int) M.t * IR.Procdesc.t
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/index.html index 7d3baec6216..33539dce473 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/TestInterpreter/index.html @@ -1,10 +1,10 @@ -TestInterpreter (infer.UnitTests.TaintTests.TestInterpreter)

    Module TaintTests.TestInterpreter

    module AI_RPO : sig ... end
    module AI_WTO : sig ... end
    val ai_list : +TestInterpreter (infer.UnitTests.TaintTests.TestInterpreter)

    Module TaintTests.TestInterpreter

    \ No newline at end of file + OUnit2.test list
    diff --git a/website/static/odoc/next/infer/UnitTests/TaintTests/index.html b/website/static/odoc/next/infer/UnitTests/TaintTests/index.html index 78c34cd8af5..647ce537d9a 100644 --- a/website/static/odoc/next/infer/UnitTests/TaintTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/TaintTests/index.html @@ -1,2 +1,2 @@ -TaintTests (infer.UnitTests.TaintTests)

    Module UnitTests.TaintTests

    module F = Stdlib.Format
    module MockTrace : sig ... end
    module MockTaintAnalysis : sig ... end
    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    \ No newline at end of file +TaintTests (infer.UnitTests.TaintTests)

    Module UnitTests.TaintTests

    module F = Stdlib.Format
    module MockTrace : sig ... end
    module MockTaintAnalysis : sig ... end
    module TestInterpreter : sig ... end
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSink/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSink/index.html index 8c6b13fa965..85636dc3542 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSink/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSink/index.html @@ -1,2 +1,2 @@ -MockSink (infer.UnitTests.TraceTests.MockSink)

    Module TraceTests.MockSink

    include module type of struct include MockTraceElem end
    type t = MockTraceElem.t =
    1. | Kind1
    2. | Kind2
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val matches : caller:t -> callee:t -> bool
    val call_site : 'a -> Absint.CallSite.t
    val kind : 'a -> 'b
    val make : ?indexes:'a -> 'b -> 'c -> 'd
    module Kind = MockTraceElem.Kind
    module Set = MockTraceElem.Set
    val with_callsite : 'a -> 'b -> 'c
    val with_indexes : 'a -> 'b -> 'c
    val get : 'a -> 'b
    val indexes : 'a -> IStdlib.IntSet.t
    \ No newline at end of file +MockSink (infer.UnitTests.TraceTests.MockSink)

    Module TraceTests.MockSink

    include module type of struct include MockTraceElem end
    type t = MockTraceElem.t =
    1. | Kind1
    2. | Kind2
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val matches : caller:t -> callee:t -> bool
    val call_site : 'a -> Absint.CallSite.t
    val kind : 'a -> 'b
    val make : ?indexes:'a -> 'b -> 'c -> 'd
    module Kind = MockTraceElem.Kind
    module Set = MockTraceElem.Set
    val with_callsite : 'a -> 'b -> 'c
    val with_indexes : 'a -> 'b -> 'c
    val get : 'a -> 'b
    val indexes : 'a -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Kind/index.html index 4c5d4280ebb..53a4f6a115a 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Kind/index.html @@ -1,10 +1,10 @@ -Kind (infer.UnitTests.TraceTests.MockSource.Kind)

    Module MockSource.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    val get : - caller_pname:IR.Procname.t -> +Kind (infer.UnitTests.TraceTests.MockSource.Kind)

    Module MockSource.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    val get : + caller_pname:IR.Procname.t -> IR.Procname.t -> Absint.HilExp.t list -> IR.Tenv.t -> (t * int option) list
    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Set/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Set/index.html index f7d37c80054..bd917488404 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TraceTests.MockSource.Set)

    Module MockSource.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TraceTests.MockSource.Set)

    Module MockSource.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/index.html index b0a1e24720b..82a1b5b976e 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockSource/index.html @@ -1,10 +1,10 @@ -MockSource (infer.UnitTests.TraceTests.MockSource)

    Module TraceTests.MockSource

    include sig ... end
    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = {
    1. source : t;
    2. index : int option;
    }
    val get : - caller_pname:IR.Procname.t -> +MockSource (infer.UnitTests.TraceTests.MockSource)

    Module TraceTests.MockSource

    include sig ... end
    type t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = {
    1. source : t;
    2. index : int option;
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list
    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sanitizer/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sanitizer/index.html index 852323d7ab3..ad39d94ba42 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sanitizer/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sanitizer/index.html @@ -1,2 +1,2 @@ -Sanitizer (infer.UnitTests.TraceTests.MockTrace.Sanitizer)

    Module MockTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    \ No newline at end of file +Sanitizer (infer.UnitTests.TraceTests.MockTrace.Sanitizer)

    Module MockTrace.Sanitizer

    type t
    include Ppx_compare_lib.Comparable.S with type t := t
    val compare : t Base__Ppx_compare_lib.compare
    val get : IR.Procname.t -> IR.Tenv.t -> t option

    Get the sanitizer that should be applied to the return value of given procedure, if any

    val pp : Absint.Sanitizer.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Kind/index.html index 0c640908317..eb4ab4b12cb 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TraceTests.MockTrace.Sink.Kind)

    Module Sink.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TraceTests.MockTrace.Sink.Kind)

    Module Sink.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Set/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Set/index.html index fee1fec573b..7b0f2f68d17 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TraceTests.MockTrace.Sink.Set)

    Module Sink.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TraceTests.MockTrace.Sink.Set)

    Module Sink.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/index.html index a144a1a9d52..5707ac224c3 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sink/index.html @@ -1,7 +1,7 @@ -Sink (infer.UnitTests.TraceTests.MockTrace.Sink)

    Module MockTrace.Sink

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : +Sink (infer.UnitTests.TraceTests.MockTrace.Sink)

    Module MockTrace.Sink

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    val get : Absint.CallSite.t -> Absint.HilExp.t list -> IR.CallFlags.t -> IR.Tenv.t -> - t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    \ No newline at end of file + t list
    val indexes : t -> IStdlib.IntSet.t
    val with_indexes : t -> IStdlib.IntSet.t -> t
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Kind/index.html index 4e506cb6fd8..8cdaa514e3d 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TraceTests.MockTrace.Source.Kind)

    Module Source.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TraceTests.MockTrace.Source.Kind)

    Module Source.Kind

    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    val matches : caller:t -> callee:t -> bool
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Set/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Set/index.html index 767eaf92fb4..bb422c02691 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TraceTests.MockTrace.Source.Set)

    Module Source.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TraceTests.MockTrace.Source.Set)

    Module Source.Set

    type elt = t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/index.html index ff7d203191e..79fb8b8c124 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Source/index.html @@ -1,10 +1,10 @@ -Source (infer.UnitTests.TraceTests.MockTrace.Source)

    Module MockTrace.Source

    type t = MockSource.t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = MockSource.spec = {
    1. source : t;
    2. index : int option;
    }
    val get : - caller_pname:IR.Procname.t -> +Source (infer.UnitTests.TraceTests.MockTrace.Source)

    Module MockTrace.Source

    type t = MockSource.t
    val compare : t Base__Ppx_compare_lib.compare
    val equal : t Base__Ppx_compare_lib.equal
    module Kind : sig ... end
    val call_site : t -> Absint.CallSite.t
    val kind : t -> Kind.t
    val make : ?indexes:IStdlib.IntSet.t -> Kind.t -> Absint.CallSite.t -> t
    val with_callsite : t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTraceElem.F.formatter -> t -> unit
    module Set : sig ... end
    type spec = MockSource.spec = {
    1. source : t;
    2. index : int option;
    }
    val get : + caller_pname:IR.Procname.t -> Absint.CallSite.t -> Absint.HilExp.t list -> IR.Tenv.t -> spec list
    val get_tainted_formals : IR.Procdesc.t -> IR.Tenv.t -> - (IR.Mangled.t * IR.Typ.t * t option) list
    \ No newline at end of file + (IR.Mangled.t * IR.Typ.t * t option) list
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html index 941dc1e4c6c..3dfacbe2b4a 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html @@ -1,12 +1,12 @@ -AccessMap (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +AccessMap (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint.AccessMap)

    Module Footprint.AccessMap

    type !'a t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html index 3be1ca469c3..a5cb01e60d3 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html @@ -1,2 +1,2 @@ -TraceDomain (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +TraceDomain (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint.TraceDomain)

    Module Footprint.TraceDomain

    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/index.html index c8d531324d2..3e3e9842af8 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Footprint/index.html @@ -1,5 +1,5 @@ -Footprint (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : +Footprint (infer.UnitTests.TraceTests.MockTrace.Sources.Footprint)

    Module Sources.Footprint

    module TraceDomain : sig ... end
    module AccessMap : sig ... end
    module BaseMap = Absint.AccessPath.BaseMap
    type node = TraceDomain.t * tree
    and tree =
    1. | Subtree of node AccessMap.t
    2. | Star
    type t = node BaseMap.t
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    val empty_node : node
    val make_node : TraceDomain.t -> node AccessMap.t -> node
    val make_access_node : TraceDomain.t -> Absint.AccessPath.access -> TraceDomain.t -> @@ -7,4 +7,4 @@ ('a -> Absint.AccessPath.Abs.t -> TraceDomain.t -> 'a) -> t -> 'a -> - 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    \ No newline at end of file + 'a
    val exists : (Absint.AccessPath.Abs.t -> node -> bool) -> t -> bool
    val iter : (Absint.AccessPath.Abs.t -> node -> unit) -> t -> unit
    val depth : t -> int
    val pp_node : Stdlib.Format.formatter -> node -> unit
    val mem : Absint.AccessPath.Abs.t -> t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/FootprintConfig/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/FootprintConfig/index.html index eca53b46222..5a0135965db 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/FootprintConfig/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/FootprintConfig/index.html @@ -1,2 +1,2 @@ -FootprintConfig (infer.UnitTests.TraceTests.MockTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    \ No newline at end of file +FootprintConfig (infer.UnitTests.TraceTests.MockTrace.Sources.FootprintConfig)

    Module Sources.FootprintConfig

    val max_depth : int
    val max_width : int
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Known/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Known/index.html index a2f124e9873..1dce13e4cb2 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Known/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Known/index.html @@ -1,2 +1,2 @@ -Known (infer.UnitTests.TraceTests.MockTrace.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Known (infer.UnitTests.TraceTests.MockTrace.Sources.Known)

    Module Sources.Known

    type elt = Source.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Sanitizers/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Sanitizers/index.html index 59ca40b598a..03974194f41 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Sanitizers/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/Sanitizers/index.html @@ -1,2 +1,2 @@ -Sanitizers (infer.UnitTests.TraceTests.MockTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    \ No newline at end of file +Sanitizers (infer.UnitTests.TraceTests.MockTrace.Sources.Sanitizers)

    Module Sources.Sanitizers

    type elt = Sanitizer.t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/index.html index 990b32f7583..753f1766d9e 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/Sources/index.html @@ -1,2 +1,2 @@ -Sources (infer.UnitTests.TraceTests.MockTrace.Sources)

    Module MockTrace.Sources

    module Known : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    \ No newline at end of file +Sources (infer.UnitTests.TraceTests.MockTrace.Sources)

    Module MockTrace.Sources

    module Known : sig ... end
    module Footprint : sig ... end
    module Sanitizers : sig ... end
    type t = {
    1. known : Known.t;
    2. footprint : Footprint.t;
    3. sanitizers : Sanitizers.t;
    }
    val empty : t
    val is_empty : t -> bool
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add : Source.t -> t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/index.html index bc5c6e8271f..34d0f7a1754 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTrace/index.html @@ -1,19 +1,19 @@ -MockTrace (infer.UnitTests.TraceTests.MockTrace)

    Module TraceTests.MockTrace

    module Source : sig ... end
    module Sink : sig ... end
    val get_report : +MockTrace (infer.UnitTests.TraceTests.MockTrace)

    Module TraceTests.MockTrace

    module Source : sig ... end
    module Sink : sig ... end
    val get_report : Source.t -> Sink.t -> Sanitizer.t list -> - IBase.IssueType.t option
    type t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = + IBase.IssueType.t option
    type t
    val leq : lhs:t -> rhs:t -> bool
    val join : t -> t -> t
    val widen : prev:t -> next:t -> num_iters:int -> t
    val bottom : t
    val is_bottom : t -> bool
    module Sources : sig ... end
    module Sinks = Sink.Set
    module Passthroughs = Absint.Passthrough.Set
    type path = Passthroughs.t * (Source.t * Passthroughs.t) list - * (Sink.t * Passthroughs.t) list
    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : - ?cur_site:Absint.CallSite.t -> + * (Sink.t * Passthroughs.t) list
    type report = {
    1. issue : IBase.IssueType.t;
    2. path_source : Source.t;
    3. path_sink : Sink.t;
    4. path_passthroughs : Passthroughs.t;
    }
    val sources : t -> Sources.t
    val sinks : t -> Sinks.t
    val passthroughs : t -> Passthroughs.t
    val get_reports : ?cur_site:Absint.CallSite.t -> t -> report list
    val get_reportable_paths : + ?cur_site:Absint.CallSite.t -> t -> - trace_of_pname:(IR.Procname.t -> t) -> + trace_of_pname:(IR.Procname.t -> t) -> path list
    val to_loc_trace : - ?desc_of_source:(Source.t -> string) -> - ?source_should_nest:(Source.t -> bool) -> - ?desc_of_sink:(Sink.t -> string) -> - ?sink_should_nest:(Sink.t -> bool) -> + ?desc_of_source:(Source.t -> string) -> + ?source_should_nest:(Source.t -> bool) -> + ?desc_of_sink:(Sink.t -> string) -> + ?sink_should_nest:(Sink.t -> bool) -> path -> - Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    \ No newline at end of file + Absint.Errlog.loc_trace
    val of_source : Source.t -> t
    val of_footprint : Absint.AccessPath.Abs.t -> t
    val add_source : Source.t -> t -> t
    val add_sink : Sink.t -> t -> t
    val add_sanitizer : Sanitizer.t -> t -> t
    val update_sources : t -> Sources.t -> t
    val update_sinks : t -> Sinks.t -> t
    val get_footprint_indexes : t -> IStdlib.IntSet.t
    val append : t -> t -> Absint.CallSite.t -> t
    val pp : Absint__TaintTrace.F.formatter -> t -> unit
    val pp_path : IR.Procname.t -> Absint__TaintTrace.F.formatter -> path -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Kind/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Kind/index.html index 3a75707df07..830a0417d9a 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Kind/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Kind/index.html @@ -1,2 +1,2 @@ -Kind (infer.UnitTests.TraceTests.MockTraceElem.Kind)

    Module MockTraceElem.Kind

    type nonrec t = t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val matches : caller:t -> callee:t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    \ No newline at end of file +Kind (infer.UnitTests.TraceTests.MockTraceElem.Kind)

    Module MockTraceElem.Kind

    type nonrec t = t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val matches : caller:t -> callee:t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Set/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Set/index.html index debd41d8111..6ddd59d6bc6 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Set/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/Set/index.html @@ -1,2 +1,2 @@ -Set (infer.UnitTests.TraceTests.MockTraceElem.Set)

    Module MockTraceElem.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    \ No newline at end of file +Set (infer.UnitTests.TraceTests.MockTraceElem.Set)

    Module MockTraceElem.Set

    type elt = t
    type t
    val empty : t
    val is_empty : t -> bool
    val mem : elt -> t -> bool
    val add : elt -> t -> t
    val singleton : elt -> t
    val remove : elt -> t -> t
    val union : t -> t -> t
    val inter : t -> t -> t
    val disjoint : t -> t -> bool
    val diff : t -> t -> t
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val subset : t -> t -> bool
    val iter : (elt -> unit) -> t -> unit
    val map : (elt -> elt) -> t -> t
    val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
    val for_all : (elt -> bool) -> t -> bool
    val exists : (elt -> bool) -> t -> bool
    val filter : (elt -> bool) -> t -> t
    val filter_map : (elt -> elt option) -> t -> t
    val partition : (elt -> bool) -> t -> t * t
    val cardinal : t -> int
    val elements : t -> elt list
    val min_elt : t -> elt
    val min_elt_opt : t -> elt option
    val max_elt : t -> elt
    val max_elt_opt : t -> elt option
    val choose : t -> elt
    val choose_opt : t -> elt option
    val split : elt -> t -> t * bool * t
    val find : elt -> t -> elt
    val find_opt : elt -> t -> elt option
    val find_first : (elt -> bool) -> t -> elt
    val find_first_opt : (elt -> bool) -> t -> elt option
    val find_last : (elt -> bool) -> t -> elt
    val find_last_opt : (elt -> bool) -> t -> elt option
    val of_list : elt list -> t
    val to_seq_from : elt -> t -> elt Stdlib.Seq.t
    val to_seq : t -> elt Stdlib.Seq.t
    val to_rev_seq : t -> elt Stdlib.Seq.t
    val add_seq : elt Stdlib.Seq.t -> t -> t
    val of_seq : elt Stdlib.Seq.t -> t
    val is_singleton_or_more : t -> elt IStdlib.IContainer.singleton_or_more
    val pp : IStdlib__PrettyPrintable.F.formatter -> t -> unit
    val pp_element : IStdlib__PrettyPrintable.F.formatter -> elt -> unit
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/index.html index 2084c7dd537..0400f4b68eb 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/MockTraceElem/index.html @@ -1,2 +1,2 @@ -MockTraceElem (infer.UnitTests.TraceTests.MockTraceElem)

    Module TraceTests.MockTraceElem

    type t =
    1. | Kind1
    2. | Kind2
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val matches : caller:t -> callee:t -> bool
    val call_site : 'a -> Absint.CallSite.t
    val kind : 'a -> 'b
    val make : ?indexes:'a -> 'b -> 'c -> 'd
    module Kind : sig ... end
    module Set : sig ... end
    val with_callsite : 'a -> 'b -> 'c
    val with_indexes : 'a -> 'b -> 'c
    \ No newline at end of file +MockTraceElem (infer.UnitTests.TraceTests.MockTraceElem)

    Module TraceTests.MockTraceElem

    type t =
    1. | Kind1
    2. | Kind2
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pp : Ppx_show_runtime.Format.formatter -> t -> unit
    val show : t -> string
    val matches : caller:t -> callee:t -> bool
    val call_site : 'a -> Absint.CallSite.t
    val kind : 'a -> 'b
    val make : ?indexes:'a -> 'b -> 'c -> 'd
    module Kind : sig ... end
    module Set : sig ... end
    val with_callsite : 'a -> 'b -> 'c
    val with_indexes : 'a -> 'b -> 'c
    diff --git a/website/static/odoc/next/infer/UnitTests/TraceTests/index.html b/website/static/odoc/next/infer/UnitTests/TraceTests/index.html index 51d45b0b1e1..486615bccd9 100644 --- a/website/static/odoc/next/infer/UnitTests/TraceTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/TraceTests/index.html @@ -1,2 +1,2 @@ -TraceTests (infer.UnitTests.TraceTests)

    Module UnitTests.TraceTests

    module MockTraceElem : sig ... end
    module MockSource : sig ... end
    module MockSink : sig ... end
    module MockTrace : sig ... end
    val trace_equal : MockTrace.t -> MockTrace.t -> bool
    val source_equal : MockSource.t -> MockSource.t -> bool
    val tests : OUnit2.test
    \ No newline at end of file +TraceTests (infer.UnitTests.TraceTests)

    Module UnitTests.TraceTests

    module MockTraceElem : sig ... end
    module MockSource : sig ... end
    module MockSink : sig ... end
    module MockTrace : sig ... end
    val trace_equal : MockTrace.t -> MockTrace.t -> bool
    val source_equal : MockSource.t -> MockSource.t -> bool
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/IdMap/index.html b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/IdMap/index.html index b79610bef60..3bd52fe75c4 100644 --- a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/IdMap/index.html +++ b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/IdMap/index.html @@ -1,12 +1,12 @@ -IdMap (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a MockProcCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : +IdMap (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG.Node.IdMap)

    Module Node.IdMap

    type key = id
    type !'a t = 'a MockProcCfg.Node.IdMap.t
    val empty : 'a t
    val is_empty : 'a t -> bool
    val mem : key -> 'a t -> bool
    val add : key -> 'a -> 'a t -> 'a t
    val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
    val singleton : key -> 'a -> 'a t
    val remove : key -> 'a t -> 'a t
    val merge : (key -> 'a option -> 'b option -> 'c option) -> 'a t -> 'b t -> - 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : + 'c t
    val union : (key -> 'a -> 'a -> 'a option) -> 'a t -> 'a t -> 'a t
    val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
    val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
    val iter : (key -> 'a -> unit) -> 'a t -> unit
    val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
    val for_all : (key -> 'a -> bool) -> 'a t -> bool
    val exists : (key -> 'a -> bool) -> 'a t -> bool
    val filter : (key -> 'a -> bool) -> 'a t -> 'a t
    val filter_map : (key -> 'a -> 'b option) -> 'a t -> 'b t
    val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
    val cardinal : 'a t -> int
    val bindings : 'a t -> (key * 'a) list
    val min_binding : 'a t -> key * 'a
    val min_binding_opt : 'a t -> (key * 'a) option
    val max_binding : 'a t -> key * 'a
    val max_binding_opt : 'a t -> (key * 'a) option
    val choose : 'a t -> key * 'a
    val choose_opt : 'a t -> (key * 'a) option
    val split : key -> 'a t -> 'a t * 'a option * 'a t
    val find : key -> 'a t -> 'a
    val find_opt : key -> 'a t -> 'a option
    val find_first : (key -> bool) -> 'a t -> key * 'a
    val find_first_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val find_last : (key -> bool) -> 'a t -> key * 'a
    val find_last_opt : (key -> bool) -> 'a t -> (key * 'a) option
    val map : ('a -> 'b) -> 'a t -> 'b t
    val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
    val to_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_rev_seq : 'a t -> (key * 'a) Stdlib.Seq.t
    val to_seq_from : key -> 'a t -> (key * 'a) Stdlib.Seq.t
    val add_seq : (key * 'a) Stdlib.Seq.t -> 'a t -> 'a t
    val of_seq : (key * 'a) Stdlib.Seq.t -> 'a t
    val fold_map : 'a t -> init:'b -> f:('b -> 'a -> 'b * 'c) -> 'b * 'c t
    val fold_mapi : 'a t -> init:'b -> f:(key -> 'b -> 'a -> 'b * 'c) -> 'b * 'c t
    val is_singleton_or_more : 'a t -> (key * 'a) IStdlib.IContainer.singleton_or_more
    val pp_key : IStdlib__PrettyPrintable.F.formatter -> key -> unit
    val pp : - pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> + pp_value:(IStdlib__PrettyPrintable.F.formatter -> 'a -> unit) -> IStdlib__PrettyPrintable.F.formatter -> 'a t -> - unit
    \ No newline at end of file + unit
    diff --git a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/index.html b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/index.html index 6955ee734fe..0f49032fff0 100644 --- a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/index.html +++ b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/Node/index.html @@ -1,2 +1,2 @@ -Node (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG.Node)

    Module CFG.Node

    val id : t -> id
    module IdMap : sig ... end
    \ No newline at end of file +Node (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG.Node)

    Module CFG.Node

    val id : t -> id
    module IdMap : sig ... end
    diff --git a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/index.html b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/index.html index d9df533952b..6964115f5aa 100644 --- a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/index.html +++ b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/CFG/index.html @@ -1,2 +1,2 @@ -CFG (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG)

    Module WTO.CFG

    module Node : sig ... end
    type t = MockProcCfg.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    \ No newline at end of file +CFG (infer.UnitTests.WeakTopologicalOrderTests.WTO.CFG)

    Module WTO.CFG

    module Node : sig ... end
    type t = MockProcCfg.t
    val fold_succs : t -> (Node.t, Node.t, 'accum) IStdlib.IStd.Container.fold
    val start_node : t -> Node.t
    diff --git a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/index.html b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/index.html index f5e449abaf5..05de334d363 100644 --- a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/index.html +++ b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/WTO/index.html @@ -1,2 +1,2 @@ -WTO (infer.UnitTests.WeakTopologicalOrderTests.WTO)

    Module WeakTopologicalOrderTests.WTO

    module CFG : sig ... end
    val make : CFG.t -> CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    \ No newline at end of file +WTO (infer.UnitTests.WeakTopologicalOrderTests.WTO)

    Module WeakTopologicalOrderTests.WTO

    module CFG : sig ... end
    val make : CFG.t -> CFG.Node.t IR__WeakTopologicalOrder.Partition.t
    diff --git a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/index.html b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/index.html index b19050290d9..c489e5667e7 100644 --- a/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/WeakTopologicalOrderTests/index.html @@ -1,3 +1,3 @@ -WeakTopologicalOrderTests (infer.UnitTests.WeakTopologicalOrderTests)

    Module UnitTests.WeakTopologicalOrderTests

    module MockProcCfg = SchedulerTests.MockProcCfg
    module WTO : sig ... end
    val inputs_from_scheduler_tests : - (string * (int * int list) list * string) list
    val inputs : (string * (int * int list) list * string) Base__List.t
    val create_test : WTO.CFG.t -> string -> 'a -> unit
    val tests : OUnit2.test
    \ No newline at end of file +WeakTopologicalOrderTests (infer.UnitTests.WeakTopologicalOrderTests)

    Module UnitTests.WeakTopologicalOrderTests

    module MockProcCfg = SchedulerTests.MockProcCfg
    module WTO : sig ... end
    val inputs_from_scheduler_tests : + (string * (int * int list) list * string) list
    val inputs : (string * (int * int list) list * string) Base__List.t
    val create_test : WTO.CFG.t -> string -> 'a -> unit
    val tests : OUnit2.test
    diff --git a/website/static/odoc/next/infer/UnitTests/index.html b/website/static/odoc/next/infer/UnitTests/index.html index 4c8f8e5ed03..961c0e9ac99 100644 --- a/website/static/odoc/next/infer/UnitTests/index.html +++ b/website/static/odoc/next/infer/UnitTests/index.html @@ -1,2 +1,2 @@ -UnitTests (infer.UnitTests)

    Module UnitTests

    module AbstractInterpreterTests : sig ... end
    module AccessPathTestUtils : sig ... end
    module AccessTreeTests : sig ... end
    module AddressTakenTests : sig ... end
    module AnalyzerTester : sig ... end
    module CStubsTests : sig ... end
    module DifferentialFiltersTests : sig ... end
    module DifferentialTests : sig ... end
    module DifferentialTestsUtils : sig ... end
    module FileDiffTests : sig ... end
    module GradleTests : sig ... end
    module HilExpTests : sig ... end
    module IListTests : sig ... end
    module JavaClassNameTests : sig ... end
    module JavaProfilerSamplesTest : sig ... end
    module LRUHashtblTests : sig ... end
    module LivenessTests : sig ... end
    module ProcCfgTests : sig ... end
    module RestartSchedulerTests : sig ... end
    module SchedulerTests : sig ... end
    module SeverityTests : sig ... end
    module TaintTests : sig ... end
    module TraceTests : sig ... end
    module WeakTopologicalOrderTests : sig ... end
    \ No newline at end of file +UnitTests (infer.UnitTests)

    Module UnitTests

    module AbstractInterpreterTests : sig ... end
    module AccessPathTestUtils : sig ... end
    module AccessTreeTests : sig ... end
    module AddressTakenTests : sig ... end
    module AnalyzerTester : sig ... end
    module CStubsTests : sig ... end
    module DifferentialFiltersTests : sig ... end
    module DifferentialTests : sig ... end
    module DifferentialTestsUtils : sig ... end
    module FileDiffTests : sig ... end
    module GradleTests : sig ... end
    module HilExpTests : sig ... end
    module IListTests : sig ... end
    module JavaClassNameTests : sig ... end
    module JavaProfilerSamplesTest : sig ... end
    module LRUHashtblTests : sig ... end
    module LivenessTests : sig ... end
    module ProcCfgTests : sig ... end
    module RestartSchedulerTests : sig ... end
    module SchedulerTests : sig ... end
    module SeverityTests : sig ... end
    module TaintTests : sig ... end
    module TraceTests : sig ... end
    module WeakTopologicalOrderTests : sig ... end
    diff --git a/website/static/odoc/next/infer/index.html b/website/static/odoc/next/infer/index.html index 1081f60edaa..631242e5dc9 100644 --- a/website/static/odoc/next/infer/index.html +++ b/website/static/odoc/next/infer/index.html @@ -1,2 +1,2 @@ -index (infer.index)

    infer index

    Library infer.ATDGenerated

    The entry point of this library is the module: ATDGenerated.

    Library infer.Absint

    The entry point of this library is the module: Absint.

    Library infer.BO

    The entry point of this library is the module: BO.

    Library infer.Backend

    The entry point of this library is the module: Backend.

    Library infer.Biabduction

    The entry point of this library is the module: Biabduction.

    Library infer.CStubs

    The entry point of this library is the module: CStubs.

    Library infer.Checkers

    The entry point of this library is the module: Checkers.

    Library infer.ClangFrontend

    The entry point of this library is the module: ClangFrontend.

    Library infer.ClangUnitTests

    The entry point of this library is the module: ClangUnitTests.

    Library infer.Concurrency

    The entry point of this library is the module: Concurrency.

    Library infer.Costlib

    The entry point of this library is the module: Costlib.

    Library infer.Datalog

    The entry point of this library is the module: Datalog.

    Library infer.ErlangFrontend

    The entry point of this library is the module: ErlangFrontend.

    Library infer.IBase

    The entry point of this library is the module: IBase.

    Library infer.IR

    The entry point of this library is the module: IR.

    Library infer.IStdlib

    The entry point of this library is the module: IStdlib.

    Library infer.Integration

    The entry point of this library is the module: Integration.

    Library infer.JavaFrontend

    The entry point of this library is the module: JavaFrontend.

    Library infer.Labs

    The entry point of this library is the module: Labs.

    Library infer.OpenSource

    The entry point of this library is the module: OpenSource.

    Library infer.Pulselib

    The entry point of this library is the module: Pulselib.

    Library infer.PythonFrontend

    The entry point of this library is the module: PythonFrontend.

    Library infer.Quandary

    The entry point of this library is the module: Quandary.

    Library infer.TestDeterminators

    The entry point of this library is the module: TestDeterminators.

    Library infer.Textuallib

    The entry point of this library is the module: Textuallib.

    Library infer.Topllib

    The entry point of this library is the module: Topllib.

    Library infer.UnitTests

    The entry point of this library is the module: UnitTests.

    \ No newline at end of file +index (infer.index)

    infer index

    Library infer.ATDGenerated

    The entry point of this library is the module: ATDGenerated.

    Library infer.Absint

    The entry point of this library is the module: Absint.

    Library infer.BO

    The entry point of this library is the module: BO.

    Library infer.Backend

    The entry point of this library is the module: Backend.

    Library infer.Biabduction

    The entry point of this library is the module: Biabduction.

    Library infer.CStubs

    The entry point of this library is the module: CStubs.

    Library infer.Checkers

    The entry point of this library is the module: Checkers.

    Library infer.ClangFrontend

    The entry point of this library is the module: ClangFrontend.

    Library infer.ClangUnitTests

    The entry point of this library is the module: ClangUnitTests.

    Library infer.Concurrency

    The entry point of this library is the module: Concurrency.

    Library infer.Costlib

    The entry point of this library is the module: Costlib.

    Library infer.Datalog

    The entry point of this library is the module: Datalog.

    Library infer.ErlangFrontend

    The entry point of this library is the module: ErlangFrontend.

    Library infer.IBase

    The entry point of this library is the module: IBase.

    Library infer.IR

    The entry point of this library is the module: IR.

    Library infer.IStdlib

    The entry point of this library is the module: IStdlib.

    Library infer.Integration

    The entry point of this library is the module: Integration.

    Library infer.JavaFrontend

    The entry point of this library is the module: JavaFrontend.

    Library infer.Labs

    The entry point of this library is the module: Labs.

    Library infer.OpenSource

    The entry point of this library is the module: OpenSource.

    Library infer.Pulselib

    The entry point of this library is the module: Pulselib.

    Library infer.PythonFrontend

    The entry point of this library is the module: PythonFrontend.

    Library infer.Quandary

    The entry point of this library is the module: Quandary.

    Library infer.TestDeterminators

    The entry point of this library is the module: TestDeterminators.

    Library infer.Textuallib

    The entry point of this library is the module: Textuallib.

    Library infer.Topllib

    The entry point of this library is the module: Topllib.

    Library infer.UnitTests

    The entry point of this library is the module: UnitTests.

    diff --git a/website/static/odoc/next/infer/infer.html b/website/static/odoc/next/infer/infer.html index 122a7502e51..b287676a482 100644 --- a/website/static/odoc/next/infer/infer.html +++ b/website/static/odoc/next/infer/infer.html @@ -1,2 +1,2 @@ -infer (infer.infer)

    Infer

    Backend

    Want to write your own analysis? You probably want the Absint library. Backend is in charge of orchestrating the various analyses on a collection of procedures.

    Some of the simplest analyses can be found in the Checkers library.

    Frontends

    The frontends translate the source code to analyze into Infer's intermediate representation (see IR) to be analyzed by the backend.

    There are two frontends:

    See also TestDeterminators, which operate right after the frontends.

    Utilities

    IStdlib groups non-Infer-specific modules, and IBase contains more Infer-specific modules that other Infer libraries need, usually depending on the IBase.Config module. Some datatypes and their accompanying utilities are defined in the ATDGenerated library.

    Integrations and Infer executables

    Integration ties the frontends and backend together, and deals with build system integrations.

    You'll find the source code for the infer command-line interface and others in the infer/src/ directory.

    Index

    List of all libraries.

    \ No newline at end of file +infer (infer.infer)

    Infer

    Backend

    Want to write your own analysis? You probably want the Absint library. Backend is in charge of orchestrating the various analyses on a collection of procedures.

    Some of the simplest analyses can be found in the Checkers library.

    Frontends

    The frontends translate the source code to analyze into Infer's intermediate representation (see IR) to be analyzed by the backend.

    There are two frontends:

    See also TestDeterminators, which operate right after the frontends.

    Utilities

    IStdlib groups non-Infer-specific modules, and IBase contains more Infer-specific modules that other Infer libraries need, usually depending on the IBase.Config module. Some datatypes and their accompanying utilities are defined in the ATDGenerated library.

    Integrations and Infer executables

    Integration ties the frontends and backend together, and deals with build system integrations.

    You'll find the source code for the infer command-line interface and others in the infer/src/ directory.

    Index

    List of all libraries.

    diff --git a/website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-500.woff2 b/website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9d07a635ad643cebf9c65bce8dbdad1b6286bd90 GIT binary patch literal 16148 zcmV+vKkLAEPew8T0RR9106!D}5dZ)H0EXZI06ww+0RR9100000000000000000000 z0000Q92*`Sh$IGJ0EB!9ff5Oq7ZC^wfyrortaJ;68UO({0we>6LIfZMgH#8J91MXV z8!B}L)5X2Q1gnwXrV$mB?@I`n3 z;6bfGf(9kJ^ufdL1f{4?MpF2kzufrf2#tM`3so#z_w0WrB;gRA!iT89sHkxklt4&S z@?Qv_)a{ZTmBEp2A?T?}Y|VmIu}U^#RE$go`=S_$jgeplX5L4n zl@I?bRekUMzq+xlxuvPu8BqZNhF8=AXy;1HHUHl-O9NQXorRP>iegY zEfWOzlC#uQx*#h)JA|-jEa0?t7&CUA+6MRE2l&4^|MOlMFtH>fNVa1;dBkT%1DK(9 z)h@g2e)m5g>e5ror*sRmKfo;6g>?-9KSLyYEo@_m_4%K*8X_L#hY#M}Yt~rCRwY4` zF>Kc4aHMiOz4ST&A&zA()I0#nA1PBQ212?0pRV8ENjAv68D2$iMM+UXkB>xH!g~S2 zIl*OyGC8zv%fr5yRmleNe9u?;dsEH!zg?~bQVxW|4CSoT#n`XH+4MP=cIBdT`|4OzsJeD6=lgN)_oX_f(VtLa8$o zYC#&d4VyomSwR#!Q(z-t#mbw7g6DPayyWE$@usoQoK6c^HRCPbE%WE3E8*_BrIxyd z(XCWqbp{;srX(fXT&heK>7zOhLLhRA%d!&$mVH?^09kxCxUes$xXeEW$u`^@W;c zK~xm3iplc>g0w2ob?z4wM%T}oHeg7bejo+uRRzNXCPCE1^`=>g7fUKMa*127q8IMH zaLiqTmy;iL%&&g)JAiUkkAIzyyXX&p`b!u-6)IJ!R-;y(dJP&KcEmkD_&GWttZ+gE zg!f}RF2qDuHX(*UHHC}tI%LVqOv(13B$x}QV2Itt+z4C!iN4c3pQsK-q2wR)6gPaGJi0uaXVun~yP{lFud(k7rGEf$4FD|xhLucHOO+b{tB=9z!8~Ks z4-FqG59EX32SN8Q-am`33IiMfaN`RA-zi<+4r7F4l~vo;UH6k`j@~hhIs1PP>~q?b zJxg{y@U?GD`y>K49()9(%aADx90C#=Mh*%Zx?BuQJbZZsL{6J`$S)@_@EtV`9Rmw1 z8#|vuenpA})vDK^QIlpJI(6yR=cEr#x$S|2uKLW!KKH~c|9WA-HQ%}FWdQ#DV!Ii? zeeb#5{@AA6IZHHawS^rER-D*y;KEBpvJ|Ocz#yO!Wh21CA;J3*5f=*^hY(eWoP?B; zjDm`mSpg#xFDDl_y;7CRl&ePrMa?R$$ri%M=s=tGZx_h7J&49716Eqef>H8aHj7{Hg}C z-Jt~w#}zIMDS=Hub3Ow>TNQ&8#6djB@np$)Bh9hhAtk zZE$Bo+i~G0jb<}W`BT~p;TF>!(W6a;pnjc!1qTK6AZC~V*Wc%(@9!xj*K}BZf zM|9@@Ac@=@plXVu#HFdTNZ2T9DOj3UQV)r#z*rF{vW^&W6>K8o=)nOZ zPfsc%A$3@S7~cC5ijWM-5IW#E_VRF2*H-rdXPAR{s-zm4)`6eo&67{fr@W=7dfgLx zXlj`hGRT<=r&T~g&*+JJ1n5v9;Te~*%vK?~g4hsHDH9BP5g~jwcr)$4oF6&mO8ywF z#RLMe2+>WhK~$FzgGj%^#Tv^cJZ1o{a~`CD;f#pZfzKIrBnT@`Yb2zi0wVXn5tc9x z6j{*WZZdfkapaXh2qpn;T=)5JD_V~`J8G#XkIka9rN)*^X8Ic{j0 zxeKDxD%2g$ZdPO63%Z-XTv`-SiLON_yKa6Y8#~4m(xgP|1)7;k(c%V^N(#E!xR_{* zP4ymK?TR`qHadj6p*W5Y^2V<&=|t%c%AcP6Tka0+RPriDr=pZf7JGnp-$OCFRB}6w z(cRkyjUpe0_Nc&6`jisu1M;rjGvL3>_{=)eW%0;(I#OlbL?t&~#pqQ)DY%_zuc;Bz zuWP ziHJSkPs6mWG7Rmi(PP><-_UkjQOR>m?r7ZMqU#n6OBccH2i3D%OQ~QmcqDA}J=1nn znbrq)d@^k_Lbhd3b0ykzv!VVFO0j7-ohW#mcE8929k8St>O~;qk?SP}CDa8irbDr! z6G~Z%9$!8V!3=sbVAnMRS@>nLs)}JvH9`W}8k$2~OGj7_U2&07X?nwog+y##aZ>kk zO%j?Z`}$?!$SULG_}!~_df}rHdcAQ+<|FiZUWgPfyYsz=JaC<$nVrxWLkjQ#C8+1Be6SyV)i8Vn~(#E!wIMyNgOvJ zC(`3ILVutyXVn{q{W#AE7k89Gd@k1kJXbZqbq!o^SbT2R!7X<+$bAj+P=h=khIpzW zo@#%4xVCC3!iT+fgcPhr3FOJO&(3OUk&dEXL(TfuLS)4Ty2eforQKaQW2k zXZ^BOZB`b$N4nQauh%)7Gt@I~1emjF54LurzE`gMn7L}NECDL#;k~T!s=wcud)x1< z-HW&WhB{bh2j}DchTC;snjG}byzZvFPos~gJLsJAyx;R)uh-pOf@|)zz1?`DmETEQ zV{nQexNz4T?pQMZ4Lokm;P3NCMK>^Rqzo_(%qs3y&~V6$Nmr$?*ql9`~_#+q%iOu?r(HStwzcHaOrlf`e zJNrYOaO3CyGD(^J+_4z(VNg-XRQ&~_w?N~f(mh@AMSS4uTD>&bqmSyi!1@H@zD>m_ z_|J_Ot41Q-JRAO=+7SeVwQx?v5~;AqHgLL*#GeI|lCx)KQgv4P?}GFnjKpCc;I@E2 z<2lL+HsSj7(6FT1xad9SnH-W5IC{uN1g(Y+qQI^na-XB?KdM+Ho;9>47%W<%PoRZRCmWhm@^t~dI(CONK_w0u$c z;Y@?C4Z^zN)+sy1wGoUCbreNpU_oiFSSR;Jq-rjhhMsorh-sQ4V1l=4tMQlK_-f@Z zCM1Dd-bpW~C%Y_aA@89Yr;?g-Z`;UwefAC}uk`DBNL#p|o?-Pe>&kT9e3T0 z@_ZOk8zcWCV4_CcWih@nU9W?#eNVY22R;4&>x`CHEZ);*+BX)-R{9&j^)7QeZyd0Yg>9JFV_!dJG&96H zeB|xpHjAwO5U0h5hhW~Cp5B0zSpU&3cPA{8;D z*vkH$wIzCuab3GUqqYuFQ^jkGXk27u5RiqISOzo*DEHx0v*K2gkq^4fN0)zditDX6 zCSFN6;+%kt;1~;hs&lbC-KyWKZVO!PlU{W6g2!jxrdRFk?l%H=Z2GVdp&F)ZchrGw zyc4cyT*vc`t((2N4L|6dIG|%(kW|dk3*%fd*iQHI{z(+ zmku`0wA87Firb4gGGtl`K{$YC64PC!lj0&D83}|JN5l=6y=k@hYzmq>MeC6>^24Ck z$T$S;<2i`{LKn~J%^6gCbq5E;?qjhF^>hDwV4CM?jf(TPOQUvXbjuKnM=&&hU5oB| zcdN-#N3ctGF1jPAjH_|jJu0UN){L#Sjt}3&8aJg9+EXeCI zHt;zH;#>#G00U&4$Ph|CRlocpy->Ujrc*9ZA7L>p7U_40?NN(s%UYDbFPj#`R1gRo zgg&j$c=ZR!42O=s z36`mJOmAB@D#lovBI^!J4HpO3Q$t+#xpZv{!g#S`w$5l7R@|Y1OwVz8x>fV?DgdEV zbcHTX)#l?^w@=>?By%*C|Ax> zzS1a8qzqk}K+!x=`S z_GQY9T@5F`XW{Ju)Fa=v-W~}8+QS3Q&T)Unu9X6C*A0T?6lL9t>jl!=$BKi@`%U6w zCW&*NDcb>Zf&geSWPso_h=?;Oj;w9x-HCM2ZgWvIB%>;cQG(Jxe`wr)%t0->Y{t*V>H{O8n_chz6ATh@Zd!^LsnKGwYdLfH~)` zxb+tZ^jC~sW+tGFj_FOYE;!*?UxYgX+d91~#)Zcmk6nK3P_ucxZoSYN+>~Rbi_MwObZB)BCub3W|dt~&&z`*Fa$?c<;{E+jL z?epYw^m^)DFi$Z@2gBwgo>z&s)^BIlMecxCxHGd`)`>RP-=GII39oi_ytdCNFnr;* zTZ?~XrR%e1bL^@04NHEz|F@s!znP89SjSg1DR69wb4mC(SM%H{Se#v7b$IGv^@%!; zlh!xBEVrM{qxUZ_OKtlYdzM+Yw4u-bs%3g+WNBSp=gE*JEyrts_h88`?f- z>i71xPPg7n^(%Gx1uDHnMalhDHetXU;+>i-Lk+HqsVKnYbq$`G+%bBwe_&*0XXkv$ zuwE~jvtYh#SgV%|FCe0}IEqwhmq_#WL-f$r>GN^dI|T~1#`dREq2%Y2vgeBZ?M&-t zzb{`^pbm-6d^Tdip-?lb)?dIC+H0wbMLw%gp%NDI6ciHViUR&a5LV^)lFD1{_X8O* z{%a8M_bOg(tx(_8J5+za^^`NunlH(-I#0DhKAdX*VruReQ@vZ|kk|9&|Ed04=$Z<# zrP`+*il_O~D*WWs+}ES8d(H_zY8_gWy*9h&Uc)&VwxTuimpy}9RohkFzwCxVieidB z_6FVx0;heRSG2!Mq0TJ5HG1NbGn-}hdvvy8Pp2NuILn7>;|d|h0LEKg?Q{HfQ6Rz4 z+QbGWgHF6fR{3C2sgPMfYpx*|JT**}zEwiV6%1#*6ql>Ccy#t^R}~pk<;&a~4_52Y z`CJJh{iTFRA(?TiaL0Cl8LcOOa#uvBli_g4&hCwZvL9dSaHR60WpjEP)|R<*CAQ#C zjj_lr^M!$uGLDaf-YtFID;Zp6l#v-~N(q|PHE%_qMbzJ_F;^GlGnMb9GJT*ppm)hw z>mJZAb75(G-O`YP$fx|f{SQ0pAtC?2AAbr)N>=J|)L?LY$inFJt0WeF+!nkrP;$OO zM%BMvm>>LZaQe@5lRf?~mG(Py!O;5%LO4Goa_k|w3G7$!eO zLfN(RSR7tj$aCe;Wkl0F=b)z|o2cTI!Ar-uW+fJjET#F>8a^5FVCpxbipAyHgH(wF zP?og_H|%9FYuF4vr?zta^}Da^IGR>#HVlPAG#(x!As2Uter${(rd~>!4~Ne~qB`IR z)nhn6X5DyhUAM*>RoZE(eQu(%Qc^k)@D3Dm9vnU&>D;z-|LQ}CB*#F;V0D%AzExtl z9r~#;cK+=@FbjS_K72Hclq{8-@l%k3dW*^JHon)ioxlj10 zmL=Ldhnd-`6xl#?cA-0=BvKLSCgy6j7X462o4frDGFw6_?g?pK&t>3*iNEo75x8y# z94v$2enc;$Yjr5fc(32+gA=fx6@!C)E1Q~omk;;%uWk}Lh5nLKL7_+_@Rye0Kq2|N zFZjKVUUk!D+1<`8e4jb5&&mE9Nt5NYIWzIyr&&UOX?tyb(NmCcK;RFyd+GyEL8=s( zX>!sF-BNsv;bl!Yl|Kffj-B zmRF)(Bv?eeRa1`k5O;xLX?@jeN^OKUjj_L#0Og+=2^6Vgt>tx%G>`8qEoXY!wbwt~ zrpJ=b=lYqjvk8y-x0ARO#*_w2ert@K%~pBK{9|)_>(-XI9Or{9FFSjl^li7K_BFIF z`J%b5*zCwCxLjk#n~fo(d0R>sT<(_1{w`2oL1jSQerK9fAyqb6OWJHgno31AmF1;Y zw>LO4>`Iko#2TFA(B{db&2TcS`$^Cy#r*X}nJy(GiR*cbmeF_&i<7|77UT2^9O)}E zZfgHW#t#svGi%FBGvFRPBTfMcrPekyRV;rVWlAG^OA5{KHfvjZW9*#6v6e{~=>(m9 z9j9enpP*{6*)l?Ye<-m8C_m;Q&<%QvVIZWfA3l}PHFtV+x&=}rXwPq7;7+LH+|Z7O z1^7rw?nljYftuUe{mK(XXw+xPqCpeL{Vp5byS><`^54ab}FG`?uF3{ zEy(wt7|%*;W-#14&zc^jbw6?HR43DZiAa|*Z{A#_gyR%8tw`Rat>kB5@6*!XL%>Qq z+yMVuJd8m}F%U?meRS5Cdu;yVC!wx#8KbO-mtWGg0J{qk>oqk)`0WbEOvX>NdfRS3dM-AK1PJbiDY4mHdN0`n*oabu#It3ZqW}&$xqmOUXEUm^X zh$CSkew9?SASF^MbniDO)Wc?d#Z`|f;2OV(m*;I@>J4>FuAAFFBIwQ4@C8C^DS;~} z#^;&%Qrzd>C#M`ZT04{3mitGJRf71~OD*O|gkrHw%)qZc*RiyJvFXrc)nas}d13al z?&!*VjTgW(Y(`M76;@Ys<*??5Q(>)~QbnFnuT%4-Y#!uU`u}kW{{vkPi%+Yy7V30X zpH^$}>AbAJQPN87$rspGfzmf3YGNbaWTYPhL;e*XdlxC)#HAov5)QM!DuQ61?YP2c zDww%!yF_ZVd9*rTkzMphS;*Ve`yB%IM>>s}e>H364>JlFZ*vm*^vC(L_w7JXoE(F} z%A)X%DZf8}@S_s@w>m8@xH0JH*zOD70;(Nepcwl*~9Q18eoUtL;g%hk~@riFzH@582% znvUO>ejDUSLr z&j2?E{@^244i=hoSlFB#F*65;Y0MLY%VA;>*28ja`mJY%LoV9Q7wcMT@-hz8-m-5K<-81FeKtMB1iZ7Oh%UTK%PN}XL{o=`KwMn z)|nltoBW6dP#{-hwn883EX|e;fwT?e)T6c7x*o3k9E3d7-t2K^)|8r=04Y~X#7$aX zU53@dueSzGx;^?@pAOGnL(Nv9rgeN*`A8)DGy-`VX+(>#==JS8+(PV%hfvteb5zWe zl6nWWk@Z}~tA6ZG1bH@rx)VSi)}!i1H^m$sut=B{>%w5u&U|M$=%ihb;ihBj5j2t% zJg32h5C2Cw*ZZRIMdtOV{6pNN<57v+U29K{@RFmFj`L>tw(5|?m=Kw~FCvC2$D6z+ zIi3oNNZuEjU<^sC1qpMMh~w;!qpAo7uR%qm#wG8~XSMNXcuB{jl6c47{Bez!7*(AH z_dL%g1wCXWd3L_u=}toLX|v6*c6w&}q?_UGowS^W`jHs3nN68t8~ z-pJ_aN_U|<6J7x>1ZTEa)D+faF0K$4iZh?%_dPUR87Y3?zV_DO50uJ*jZv!S((Z@r zzwfy(%|r$9ha3@{mZ`?%)jWw=9GpM3gcvc4Df{U9P%g6oktKGEen0%EAVRziN*)VDq+itt%uu&CC zV=vF)NY<#rpTE~vE)Xch`2sngpC`{3=PCGA-m@b`MC!RgRph+@yt348stg5U#K(1C;BithNU$Rfn=rXu8-BdnYY|zD7 zeo2&nW51oKI0~|9403`RyuDn8G1mIh{8-^4k@w%i%kqW3h1>Vl zOr+#fTKKMZqHqE=;hR85R+kJs;+PzF9k-cQU}U88uJaDZJn*Pw_!00)cj#HYtvgRXn>_huc7aE!Ebz+ZMz2!geq3^>>>CRCdnoi9T47#5-kp;tE2Mk}9pEsf z-4|TxS-GZk&A4a$zM9IvVB9;tpzJ7X%9f)R`W8BNoqw--f6>kpy=&;5@?ECwx>aR$ zm>f2h&1u3$AG4Q_NY#C9qYtk|)ha411C47!CX%Df0N3Z>#9Ll$fEo?wY^dtr)<>ZzPf6r|=m}Qtv7A35iY}nYyIqQHN5|q0uPXI}|HMTiFh_vZFhTrp?D;7V-JafS1kZ zAboM;ThL0Z5m|_q*e@Z4wzwlB3AJErkMf`MfuZ1EdG0F8WE2)XQ>qe zJW0Y{Cs#IF3#)V-vigN2Er)>WaV5GLtdyOV#G)QZ;CkNC-5E z_L~H)encca#$X0BFPM1kJ9J!QEmrFQ3d$Yj%GBfspv-W0~%nSY||ACK5D!=wfurent9{M>UCZY9{ zN21L+F7RR5H>Q)f8-cKK-1MMjz;bbZiza#dzj6pf0fj0c5INKmRy#BiJWl@nGYi85 zOlMxurn56d%aO8c_ho_CFT~8f;H)zlrZi^wzvLU*n8dcLj|3~QXr3STbWjfggvox!-)LH5*gdAoA|Lys|jxkIjiH4j2iCVWZ|J7EGgG^;LQ_WN} zWx)l>az>e=+r6^*0i-KB!VR!K%^eGd{h42U&%Z6)%vR>)K6DT<8 zpMWuCNGZW!?TEk#ZtxhmvV^@0NioM5_){stgNneI0L`|{hXo}fMTUMmMuwO;QSO#pXRw5Qse zSG^i552TmXSG`awX$#wHMk}Ollv+VPkN8m8e1+)aJcg%^2I_M-kYnynCkLwte1-6s z&L$@_wkzKE_%YW`I^p*>b>ZM-ws@ey?K9!%OaNZs5*J{1iVhOekTI*aHuWPzB{PK= z=1odbGKC^FC|2r&U;`>UNT{YZqn|A(d}AA!mne7Td1)lRS=BXzuUjK zQ37OS)Gq`;d}Q2eNSimrQ7<0Y?v%vsF_+nppxm{Tb4bE+Fj%?Ns)lW|UfVN08z_=V zZ0IsEX3~ugDP>z06JWQ!`%2LxDdgx5nRFe?p8!B%Hg|(pjDHP16DX^wjkPXflL{@- zk-Fmqv`UXjCu%lo=Pmrkf#}e=foi)L^31^G))3A{eAn;HLTw4*z;u8b){M(>w8r?= zHlP4BG#Y7iHXz5y#!wx=sMs(D%~kbKMs$+NgbDFx!A6 zt+}QMTa?q|um(!HA`nfCl^SmL-XJ zvV{dWVI#@fyPBAV>~Iw?+(+Lpouzz-e~LL#UKVAcn>tA_%Y8_gCnd}@{dX{EUb}6R zB+b-}Nu5-SG;4D^zvD<933FMK4J4SzFC?q%wsBVt8taY?(W*}n)IMe;oAUrpZDmEB@6m7EjEsMhF~tkXsI!2pJKQ+@#3pQ{X~G_09Ts=|BHr)~9o-gEjzW9TDT??Bh~S<&7jj!IqG=W`ha@c8K^FKNNQ3 zdtZL`SCpS&oBMayR`RT|%7k*s#1K6!IZy@L)bZ(Ps(5PU#5l-P6^L&qpU^|^eIueP zj#BoN35vfQ?~@;2ewepA5svp0_v*~1W)Q-Flyb+3%u&EIH4P_LL>ib_%$|!Va(S3~ zK-D!p>jX_EoRDe}Lng=2B^y)(L>0Y^2Gf;LfX-#RHhj5h>4Z78l4-1%1CJK;PZR4@ zGgjoJL2J}orldQepC7c+6WO5lf<%T+CmHo>3y4{%wCu#x=EWjsm2_PY43LP&6cZC9 zQBy_XJ|UQzKWD=i779PiLcWw;**~X*aLQFODsYhq`Ou+`TeJ|SXI*6|P62-)?I=>0 z#2=;(iUQEWRxmD3Cv^PWwyx4}3e{*QxZyG3i!pbI&=PN27e6{x5Wa>o6e4E*=iC>; zRSca+50>5U)D{bbi5d;kgjr0SCNXgz>)kM|Bc+a$P&AFas;T}#R9G~|BdZ4a~FsY}8gGmg)KPgxE*v!I%J?mA$;oo`NC zH+7>JP(ebH6YU(@Op%B46eH$wwVUE5%oOKlW-!^0QIXTsrPHYjeruX`+A%bofMD;8 z!(avkyTKt2p~T9%uxfKtuW;`(qJdA*{_>GH)A+HdemK=^l=LbFPZWwUjje=L;6oV~ zB`g9o8nn70fD`cQoSk4F@uth1`KMpueu=_FL0J&zP6fa7_$Ua$-?jr##4knr8Q9%oFK3L9ksL^DS zRi)+XMFbpIv1vTIvb#mJfx@`^8H`6Qol;&0^4KInbrp?f@WGOR%#e2C2s84x1A^#k z?}?Ek_P&EVczShtT=O*IX031PGREL0N>I**(p*ETQaB2p9@{KDS(zSk(`8qpjAg+G zMdX_S@=jSp`g;~#)d4_zN9{lz?jl$?+@dnQ^omat*#?%~oTP=1Vk9Um71?^jmB#u$ zdZ{ywWY_~pbI8a@Q{k|w_5qXYab{sl4BE6qm4lvzwK4p@$7@jx)wMcw{?>3(k-xsjgUtdRFKZlf&>hqjVv}; zG+~rsMA_EVs)%3^=m|Gy?7K)y2hi%ozlIQ5!+Z{RGl+kIvt z8=A^1NRF7IN0dGHN&3Cw&4C6epKZBO%(6h;gjlU3e~c#4d>i80?*lV10&b(x@Xq^Ymub= zyD}bT`7$?eG}5S`BU;ciXjJZK=s4~kCF+X@poPC4K2F<=n!ihnx)}s9C z1E0^mYJ+8qBWYZ){*o52aG!Wn)D8z~^Yq5S_WxS}xR5~Cftb?Vq|%w`D*9<-N<78< z#?p|)Ab|3S>)P6V;QcF%*2cLknnt8h8Q%gPLt9eLmObsL@)H{*JAUjkJq>W;g|%e( zKhq!qAd+>#y;Xa3=IBaW7gat~QDlkw`p{dmMN^kWp8ZFHw927uyC6ujTusbZd9F$# zWFF;&F9}m}b3Z+g^0v;d1=_V;MiC!4Yn70X`m)N2ImV1-8WM-r&Bju9r(LaNQ@@kYjFs99L!e7TCg5Qpo+|Ow;=zg|5E1dpEh549T z{OkMNyMja9Lm3V_$1&-Tv{MLl6|1EXf_gpi{9t_DIiM z{rq>x_+okO?1@2fl?5Brrpl&b2kqE@EQr{}%dT}6*lkxJf|gzGDuBx(5hH_V(iNtg zVJG&Q%hvgR?3sO|Ga9=c-at+gf&|5nc|P45O#-b$2-YI0MZ)Ka&(ZeJN5Nc8m&ZO% zK8u^x+z;2Hhx*bE%qy|7$H<I6QHa~J1crL?UHiCxWlvQ z`tbw`P7@{VPFSSq$VW`@=QRZ`5bPp}c39h5=sj-ZH@FcuSv6X7RjCB3M(J3p;!m#| zCD*bZ){8Poxtli3^5F98PfKKW7(ccfR9D@P$y8hZi{O#D@S7i}kJ(ne=x?j7TFOF+Dm1E!1g62u&U)}4z^@rSv^~g_iY^E+9woS?Y>eE8uxZT+x z3KTE~oa@3YwcB1xr$VM&Q`7RGWNVuYIqs?b$+7FS8ph1AJyc@m{H{F0s`S18v5XRK zDx%oK3%;2Dr+>R=_C7mLBT?VPria(A#bg;vrl{2NKt#3_(9&Co(SDuV3$WZRx0k09 z_hOTj)98kNCBjX4=ng7xQ<5?lCPk29UJIbt&UEQVBZ<&ym}@-@Cvk!U><1=ChqdF@ zh7-;i0Z#y~^!CB!9CEl046f+uMtiYq17^sjogv3;H~3J3rCT$^}Ma4mDv3d6Vg zbjNO6m%}`bw53g!EDiR@RCfsM+sC!wB!!*bU@b_L{Iv|th(}(*!=}m-X{1Gs12B$Q z5$k+kpUEIp=qP}y2wd=EsgS|!RtaH)E(?7TpqyQU)}pXOoD9GL4gJkg3jNBFl08p} z9z>9V7;Xuz1V)$7AB4I2{#9bLCU8JDt6h>{RN{VtlHws-4KF#QI6I?f zK8led3{YdQ#`@IDyv8UXNl_E_;>bKLan2n>KJ3;@ADykcjU**J9n z5U9Ky_*MMz0$})IEu%vHwUG-f3JcVbxTYo;uyTs+6#@vst#m?`qF!4pghMfS01pm8 z0BTJlNPt<8ro?~%uxrU{|NplZ%LWR6O)_v03Bk1q|UW`BvuhJD7~_P12N=-0-V4{d7+SEc$(~Q3Vxzrjf}wztcIoV zfwf8k6R_yfHI|I`5ehs&hFh=)K7?zKWqp@eR0I@QZUXBu63D=?nn+;-VE^;{8>hnC+W zs9AN#XsyCjEk<2tH1>^3LB5HKfeLz?l_+pV0~wS&Rjy3+wyEb_MYAfEf3rwTR19<+ z@yY^nb_%lFLkCu)5{x=Yq8Xh)@>P*xg=$RDYIaKuB&18UDnYO>q)Rgns!~Y1(PB)y zWKqO?HZml;#46Wic1OajqXE^rHVwqwPf^lF)h=4DPPqzbFoSuo4V9GKS;~9$XNGP_ zNju>qU%&`uH(XO{zbFT^Q-M_m=XZGJuDj_L0wNN!+wQpQ9ttX2!o7IiDlpvlK&6M4 zS+mZ_-xD$&ii_tXAFJ}oG*g8_e-b4kf-~2uQ=>t>&0PE~RQrQQ=(*_i6oy@mma;kZBb&1mq+XzoEGro)^AXSG9KOsK;d6b2}#r>Y@3Co zN}C{yO)m8>?HOOa^eP-86`9CIAxcq++9Z=rG1WBF%`np}!9s)z6D~p|aqL_&kBkIM zs41)jpl!v1ldNPi0mZ~5VsPgmT8!BowuwJE?6&BLqfR?w$F4o6qAE^2a~;N(+l=TH z;Y5fap&)DziN~IZ!mBG}DN?0LH&=#Ciu?v6TD>NXYBj6kV2S%a^MSkMzVNlrV=P;a zTzT@%Q=pL3iM#biFUodIx{F+(}_OWdg;Q? z1*V0}a!7!l6QIC=78K};0tEte#efzJC{Um)`}8_)Xl_U3wE5=NmX6Wgj&rk}vcPD63s%Ew z`%*(>2&#brtx#a&7P*y`#m)7lvjX{HFzn)yc|~h4|6-`XYKdB(!BQE zuf1k{#o2jUS@Yf2em1JL7w-g#YXkE}>c#O}RqlvCz+bBlL_Y#(rj)u%0fGEZq51xC zxRufSJ(fI^I&E0XON^e1PgS0rK9v6-M+p2410jc^4*VU1sSOlDjy}EC@c(QmbRs!9 mf2}u&@BZ<$?q!(cboTo!`%LDv5p@sf{|Nm14^8{#Nge<~iWRp2 literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 b/website/static/odoc/next/odoc.support/fonts/fira-mono-v14-latin-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..edc71a868ab6867ccab1e3b3b772033909548799 GIT binary patch literal 16284 zcmV;NKV!gmPew8T0RR9106&}n5dZ)H0Es9706#bY0RR9100000000000000000000 z0000Q92*`Sh$IGJ0EB!9ff5Oq7ZC^wfzB9#uvZI&8UO({0we>6LIfZMgKP(h91MXV z8zpx&%I*s)&>aB#k$RPvQIx6K%P|@m!Nvgu1;0V$|Nna27y}Bl?|wM29SQ}mN^#05 zb5%rF71~7=>Z}wlqj7IzahV?6XbxL98o^ec^YGD2)ySpJ?2Vg^_2LyPII4H)OML@d zF6GSl4U@H1U}ehqjZfI3k&GH1wfRIC;UE7a0w-)Nbzp39s_31(@Q8<+E3-WB3~U?u zlbpQ7f4|@N_S$CvLH(}*L#!qW*a4sdl(C6SMG*=aMSd!Z`Q4w-E8h<^vw};W2rj8x zsRi67Gr+s8$AzLfCR0HW1OeH~5`o9wiW5{6QE{U?)0VcE-E3(6pRJp9jdi!{>UMQ? zX5Ad|5B{Dz_eZK&>_>swFSi}5esuHyPlA*}g#<_`c#}}0W>51(Z2LB> ze_7r(-RtXv)c0{dJIPB`)D}RfVwl*5e{^n#L;VI?MF88`Gux*XrA26lyc1(1cCsc+DSg{BeP{`b6{X3?n_*j~%cH8)< zt*je{NEMy^pXfLKGJBb{AeoR|);X6Z_hY_0dmeLzCE^q3RPL+GuS#y!@84q226oSU z=z20{LM-^TU>bjKs@eYc7mz?mJ_8r2bJWE=JucJEO`Y4_|NmnD{sp+eg5)h1q(p+0 zM1qut1ZWZ>bT0*#wfrJ7SBIS@{6>}Lwi)`>uD(=vIO22eGT>h(wa9% z1Vuzv`UmvOSDVF2t~E>$a{Yd%oJfE%u%m(@JcWGnCzQLp5t>k<&OKje10^8-roa`j z9{p`1V0-oY{a9BBlp+yx*7;ftY~Amdzw1}dt8Kx^Y^e_(B%ao)la4IYlG7?(ES|xZ zdg(qa1xWbq)C_qD1*fLTfy14eA`1q4YLW~U`KKmGQ-(P;PKpxr$uVMz@|klPHOl2%u%m(Hs$Rnk7?XuXuhCcx~5DhMQ&PwAt=Fj3`a{7=0<87^M%54_|)# z1qc)*Scp)FG=hzpsAySlRF=EAuN65-Yv_(^tXqSH2Gtw5X-kCAFyucu7EU}(f z%Zp;|XSE3!#78K|1Nm1Pb&$t)lB)U)B3rlVtvsJ2>8?RC8k;lFx zFf8fuFLRx@EqY=}6dBJv_rgoBy!M7GH}0xb`|TSK(E&v-2gl&(YD|&0m`H{OU z%!EKS+CQ94eFzQ$^;z?rMJ5HkDY@6R7kjhdy~jYV19}-yll2C$*nqvG=fpt4*t+3Y z?J*d!R3)>)GweBH#9HU;QvIl3TO!OH27$@LU@-&?A0yMfshg>%pT9vbKwlo4{hy@k zFisa8-~Je}ls$SD1H+)sm-m^{{VuQvL??iHN5NSz5scef0JQ%F*nhW8wXJVcw%NB? z{Qdm*;NJs(-u-DopF{yifL!V>P+sy(rrIz)y-ILrGnF)1?S$L&w0x!o|ZUQ0AOemFAU_z!{WOG<3`?tZXV& z@~T#&UW-;CZ90VY>eDY`$Qh%~`r&=YeR9XgKJ|kcyeUsy_LWP14d5?5W+hqB?q_NK zN$^ywX`Z|lV2~&r8cRf)k_?%$D@Ro|M5Zc)FQ4CUcSjBAKwZ-e zH26Bu5KmLQu~vzqqYklRF)K#pk;l}NPn%lYozzO3v5EZb+u5>}Wm8fQZ$f-+(pwFp z`BwEVEMeSYx|Ol60XBFz0tN?}ywN%Y1nEh{)q?f+wrP~xX#i#pbU6K|yU$yP;i#xg ziP(-?voJRLFzx(-g&Q>s;g8sIT9HX+bJR7W%RFI*l?5@LvbTIig^)bCVj``QsW<}S z6mQ+(UE9acVy5EFn@6K^!x8$9WqCoeY54`&x zMU*_drY@zi`qH{UJBMg0pr*Gd@MTk1pMOJfYiXr0oQfC@gcVJ11C=cfY?Bf%QdwiE z!W|ZXHED@RcrYT5uC+ZZ75KdOfnD+F=)B+Fw1ryqh(zhPJ6VP;6QBPov^C}bhvtep z`Y7NXItD0cMGRxq!x{>)j{4X@5jIhb8z{jRN^x`G7^sLIEKSf)nxg*$I>Qpj%}U52 zgMtjG#25{*hB(%dzy^}oL=|qJA-2#6H+fB{MiI>hN4gP>1dOIaIQoh@;$m~;xouwB z_sIglfVxOYI+l)X>^!!ydYQ`#s*a{yl*RBt7p|#`<_eqA3|(vBw#E7ec?~(KafnQP z>6{d>U-10SY46K%S^MC?aSPNKEVcx`dNhgGf=@|D#{J8fhSU+$)g21TjMVTtI$-{Y`3sC1HAmr49N=k~lcs>XGtHtN4 zH{mDVuNLN=4y%#+Ua-$1GUty;|G8S7jY-6wh;{cBFyl<9G0jAA?DwF z=|TE*Y=jnjVl}9qYmAtLkS;k9(Qh?0>7r~7_284CX81I+e$J(h>mRz~1158`5m2zD zK2At?J86l}@}7t~QeWa;4s}7rG#9>x3bj}h)6O$M1N6A5{l#jz8>Z~{in@?g41uY0W1T`djEU@G0QL#Q(whzYNh#~%n1Ehz!X)VXb)_Aj3 zE5$Q7!U*8!%~odB6U}LO5eb^7H9|||YZ>3RydW=oUL6%cZk)TpU!(Mcf!=HhSSP5^ zXP%I<-W~;HoNt^#?~X=*b^^-4Akz=P!VxwX$gx8Rxqbj1j_?U2I3R>VKY$2F!~_6N z2%*#uAj1(kfdUtVQ0WIy;fR_*iW@?x^#kZ|R`nnOS`5iJ#gaylXtJ~gfkLxM`O)H` zX!THI8$hAmWOsCU7&<)+T^@$+g&aK|j$RK(pN9|oq4dj&D8Bi`{XN{AdOe1(=U-Lc z=?+5Id6L8!BzXx~g%^ik9m*B>7XDFrHgq?L1q?PhZb0rMET0{9$?%Kz0!nS}Qd&vI z&!|ujeJ`|7(|z^4mW9T&sjHFK0w_UDG!@Tv$yo&VvvAYwaPLjRt5`|ORp!-?kFZL+Xkk(!8WvZ%CT;;1lLiNt{ z?4_~?`;jI3`9mY8F!Aumbz-du>3Hr#FETP;JVzgWkn!&KR1jiq3PNJUt?%M-b(}mY zp?!5cZ*iT3Cy~zbd>0c(lA{NWC`NncC$W!2%tKrI{d;5Dwyx<&?292Dqs(&L%Z2s* zbzUk-eq0}{NDxH?=#fuA@BJnS<+D5Q@b5u+aJ}3c|IuN` zq2wjfV*!khC~250#&K53f)37+bl*nKc5O=bP;m&b3{rZ|%$Yt!ARz~Peij549LWJ< zE`zJeN2Cd}z1cMua(wF|B?7d(wmCYTQlb>bTC+Po(5>TdQ|FJ|sW5hv>YA`p>Jm=$ zD5y4ql58R&7fhgN;tefSsZR7#pAnm+EXM7WWx!IFiEmk{<`ZsGkZ2rlZLy7gVuP7j zf@lt6Q?!7xP}^*c%-Rx1Gc-F|ScPW_+`3223mr=RQb6s zT*c2qRP`;;HEB*fOVY%pI?FP;Q3-xewmx6VC$9K4N86Jn>{kCh4jJh2l>hkVG|$I3 zu~ZUup8rlwV1Ps>Y=|IDHl3uJiNTxsv*4LDxh0b;yZG;r4ZGmUlPifMZ4oNp|h#|Xzi4o3(Sy*N-dKSTL`+@7D>Q-p)V0!&^!oiHkn6 z+CM>;!?8;dPcpW9(mFl6( zMIS^ZaDs8PZ=08w?U-v*6r8kFwyY*i&5Tf36SUEVYJ-ozUv*SJM&2q4OroxLQtEhPf`K|IT($D01$h7FHe z7+}VJSk3^J`hO4YMgC-fl^YCEXomZR9ILh9GH*djweH@d6^5EsMhE=YtXn0CBC7&@ zESuU}%fc7erCG&X%L5d4G<|i?m2WwqUsrHYD>2?jlv*1LUyHSvvWJZipJbB)=~?$X z=?ZUP!>I-pUcR{Jgy7!Ztr3#ZZ_?qGk;}@ihd3h5>C*Ki5w$ptl_e4y)vUL0R+}ulMCc_!xzyqJ{Nv#%(&(Hg1n? z94cjb#@r|E=N50SaR}5N1j&dyM{u*9W{(Gl6yVD2#$AWMK$OhXJ*N<;NFL0PV@cSjS6RNSocarH`vuZIeFX znPc$0NvyBBHsTUvK!K`p91M$qDzU>#``f$%p!foiZQ`;h@z$)0L#5d>YKbb8yrZ2ysy+&~svSZp_OTl6M1-DzJqC^Q_-=tn?zEM9@X%6v<9j!v8Wvbo48T%!@)yA%I3#S>Irs zUObxH*2;-~j0C#rrS(9u`|4aubC}C%-yfcy7(8^_t&y3M5F;LV4YYXBUf<+!3~F=n z&^^Afkqk8JNH72E!Hn2eD21g-i1%~&69nPol^P!&R;SN;T{8OSw|F4pDv^Reudq`g zufBn7oAef{_Iza((8Ho^ebmaBXOR~-rcZMMbi6(HDF)~02S2W+@dKcz#8i2lk`+E( z9mIH6&d79dUUWnbZ(XzqUsw}-0@7rfe4A~NVwwT%Tc%~a9bPGhHFZ`Al69kKVq815 z0jEc=1uvs&Ja0~6P9!an0e{}nVn}26Zwq`v>e0w7TB^ub0SC#pJr7;<@mjRiaaiU4 zI73|_HnQiY#OoTrNyZhj`hqrP=@Dqr4ZR<4li6d!hOzI@t{>Gv!w{(L|EEpf`L#^H zX1d!lAl!0hnIWX8-&_k9Qzf6St^_=Wh~?HH&G@* zxpks(=&pSmy**W~JSr=J^_AVir?-UP?i*@aWAhBLr`^JO=#DL5VmAt#&s8Z^PRiH$ zGo05yHG*UhY)#KqpLBrdxZGSyh0*b8kf9@@j1e$wOxt~W)YP=NiA!}^17GFcp&K`? z(ABZRnKe>iQ}((hi?)ur#m|}?E&~*@DCT*cCLT?-1_2TXnAn@BY9d#JT9I&oq~+$J zq!&cgI!em`7Oq&MDGped4`4IQ>Wjiv$F*}?Z-ablVL3S9K~<$Rf$u+Wn7KYp{rfYZ zvkp`zy$=%oMPtPKsyl8{NVdcTd4WPPO!8aqDGR8}E58-^$TE1i=p9f-{#V2~@f}-j zgLW>lZ?}4ipG}=V$+1huJH(wo8khV?eMgm#Tb-bfd0+MMFv&+K?CK@@xVKbIFZ^HR z#Z&D`DdIzhqQ@6L_TcC5m4WqvFOFF}^ww-;m4Xbnbo2G4#Kff}o76~8%b6=h7 zgD94mkIyQPvVMA1`6KRFs!G*a*{MWUY_4cMJO4^xwaF_|Yl3?bGd*EBQ_}cF+ejGk zvwTb(%5zltsU8^gzaPs7x`P$w$9tuF|JpA6a1^8j{lZtQpPzy# z3rSz~rYKUF&iSnnB?osdapr%=!^VBfO?rtF_af&X8Io*kTd{eQXR1=Y{{1P4>aj}L zlqVA%Rm3Wt^G;kW?tSL`ADVX%cF0%DKh_niaX&opht>?SYS65~ zymLNd&c956?rMd#5vJxGK0%^x5)R?pvKr&6c6L5+4m`*dRtnP_ErhxLw%g6OBgAc$ z@k#rUp*`(T}j}O6}iNbt_tX z=y!?qmvbIDMDYtx20pY?xijV^u{udm5xff zFWsvpsZ%U!n5F`kZ>!MT4XqCD-j)FGK-g`GEPwNm$2Bl`jQ=yM2sT?$qs_QMZ#qx# z7CPqVM#pPwDkNH-*$49L4I()iHZJgVFb&!WZewrq!iqm74t& ziLANsQmLY>N~mWs^Zr!hq!~5HCbygDa5mi5#wTdrL#BQq=QcO+E{ zO3Bd@@9oe#5`xPGdHiC{Dfel&=kW`UHCTty}9WSQ3Zkz7>KyvtH5I*dS^Y5v8={amEkvk!?bN+Ow=S zzqosRHm9Ue zoTF^iRiWwO;mt$F(!oZB+!tQm2hFZCEovRH)(p^RxwDM-a0x&j%PtQ&TTUcMUp{0% zGz1I`S~fKpBs5; z?O|lHcsOfSlW*uAK-0Z$yKjYrug7EBqS4-N`zKv(*uZuz;7zZ6ZnjE zr9M*n36eFl!?4a%pDOW&<#PJ-+O9zMrH@$^qer-BOY;ybe|Miv~ z|BC2f=JwRXq5natU#a5Mzhf8EwxCw5srd2^c-O{}!Je(b*6v-qSK|UQoD8i*r;WrLm+0SlN##E0aATSE2)~1 z?@V*)TZnbEFQO>gxXOhnM}e7UOMzz$HEyYQRQzp)+*g6sS4?D@0B8(92*Wpcso2-l z#Pf@q7H(WL6jI(8_`<%riX6WGC<$8OC9;6(z7?{pROfv=BNEtN-3q+hDDah$B$Q6D z@jl-F2);AvgsdYj!aVv#izGv0owiCgrVgS37a%)l<;kf8M4G3yBF8BfOI!7xkeTNO zD`B*-95y|<&Yoja$c!U;@1R-n?Vq3WsEqEV8l$)%_pgcOOgM8@Qvyy*l` zA(nDj6C83(O6g^qBlD6f@Q+Z(@9yK?QSrC^U=!thm;mU%;cehIVAt~^q%HyA~F9#^C{ z8fI+f3!gf2G<+%)`d4@K$bS*71kjjOt1#$Q$j|LalpTeVqmXh`Su7x% zmc5+5yGnCoMAJ&ro~vRo9HnA@@7PRFPzF)%lueF~Z(ua?`4S1AA;v&=kNapcy7pXk zG0Q*`>Rl0WtjDPn2&#h|MOiylH#BF$QdB05WcfNCL`o{r3I(MqA&)H0rGH>GwwI^A z;C|8kVxH*gC-U4=CoX~CR$p*a?grC7eRD0w(a_N#<2DAkicXuE`Mq7PwHgh8jE6iU zl(|~VM&5AIST#xwFI3Ab>kA$|7#6-1t}tou#4qC-U7Mmto^PA7Nt05Kd0T|8V;_m? z0$SAaZOKWMfMUBOqYwV)J%M_^9HsY`ae3|*hEf$^mN-j0SBqD(RXjnNxr)Hxc=3D# zUrna$JV?DlVT*+Vfml$Qj60=3%VEuoW`SC&Q0V1c;)b(rYlb&yUfo%@5?{WNuw@F= zv)Mu`;kh`BIzYwu``G2!h?;gis#j8{0RXc}CsGMG@TWP?n}X-mAGfJmtu|LHRVJ@S zZStzLr5yyq1cyCEFa#ayXVomsdK*uoM4mYRTrrnmPOi=7c)2QCTn_Xxs&s_#z7|&` zQt;@+HieuspY1as9$S>6`nGiL=ktfli*X!r33Eq761Dit^a(bODQ7V_ z*77o)#j8;|yr%LbTD|k_6~}D_*eW%K?~&O#IEnJ z31Q4bIk}MMTU`;@CW0CF;97eDmSc@+MnMY<@5RB4TSdvUHdK5k32`9|-LabM(Pzr>LbtI}}+{`rzyO`(4FSw5a* zI;|_dcsDZ>o5{eVZ4Ibg^5vrXE+czTs3SK;^`fpI^C}>X-)JE>tI{}*3+#lk1F!h0 zQFOl|m;IqH)Fxd~sgHbT7FT4wtjvCSL(XRJK`wctS?E(+PO0I|8!#Zq{gvQ2e3O+hwts4T1 zjd%=UbsjZ~bbj*pi{285;JbMKbsrYE$utF#Fd=<-e1V3wmmK;gkQ$@e786K`(XfB} zrrBLa)&GYV&tJ9jUC*!uMdmX)+B=IeS=i7h2U~?W8J42K-)lz8FPdLqC|1;pcw^>` zgmn4`e^^0AI>g(10e~w5JRN14WN_AN;ADz~tV;N})-af?}R{-Lq<+Q(5uV%ig{2RM3{I_x< zRqc;{pKbL-w7^lPBD9MCa$B30Z@E`IsslXzl&y{6@rxA1WAE1?EsxZ`jtyX(HNTo7 zT`VUlU@jgX<|Zl17b!q~wGPZ&%t^q}Zaxp@Leke-3x+_vE|m+0smxL3zy>R;R8_Eb zm0T4U7FBZm-7=L!o4Pr5Yd3n%^UQT8n17}X>B(Elo3x1}>JtJbM`dN_t++M1z~_F^ zP9yZ*fg|>Nd6;YHl*o(bBU0kR!qc?ddEAdai$>(EgFj0zh>1Uo;iHk+rXxV?PHvgf zT5@A96$|f6IVGE0akyB9T}llZmyWCifY?wx6kWY+<@FSC(+ zuYr2(oF<#FyH+5xT9ZA$-hEbi_uiExufd@vtB@<4-I-Cn`{dYtfY5H91yg zzjdz65t-SA=LCiQxA?aPX>bY40#VM%v<1_IQ48NP%As2AG`=Y0>gCTkW&|@cu9>xh zwT`v?t~Z@EhlQ~(2;ICN*Ngu4-Ou1qZExIG$pzSDN&c*?yd~#rpZXQpN>L9A<xqW)P1nzI2W(f$y)- z&)`(;dG}v5Al!ze;QdU$zL-cnB}foMcUU3!ZA4*`tbst0lgGzw)cYCj+IHC8qmg5> zK5TYmU=09M_uV-u<+nx(*ib1WW7SeJl`5rRRb-j55_nS2pf#W|QWjf`F#`|`NR*(O z3>^8lnMtq7W*af*%qE)NC z0B-}E{Mu=4y6J+p-ct0Reb{T~h98`rgzhgl2@0#>(xlkJ+FFA$(mduHt;RpUInt=| za}lbzaAP=cyVv99wH0nk5SOlDEBeGNZ-Wu%AY;~IUXHzqGbqm*(9O9=TMF3D;=I@y zY!2W_`>4J|ukrC{-V(j3PLmq*jH_o+s9HOP7vp9~sAvU2s5B{yBna*=D)JRwVtG4T zm-wr(jaBOA@_C*x+Z=-#UF^4%PdlCEYx~VMTf{7$b~we;5sOXEsFBfoG#YwW4WLle z0JJWRhSpOfQxKJm|A|@)i&$crm?5UnEvW{%+FkD!l5J`-Wx9Q_QwDU&hD&o;CNQIP7polp~ z#L}SA?Ngo}$w$t z;DJx9T_hs4QZPWA=v6Eb;`PG2OGpU`J+B9J%X zh}V#an{b+C<5S9_Iw`IDvYMdBW`99Rf+eMP-S!Zh@;eck(vJ+@cbdScpK+QY)1b*S z+04s$_4!j1kGw}t)><-HPD>(Fp$ zI5Zp@HX|*V74{Iw@NUMgox_nATvNf2#!rlUye<;)kN|;)?H=d7Oe1)0dwoFeY7hi> zctgCQOMU4lIK&Tl{k;Ln8gzv-*Nz3Qi{{bZ^xmRzRq4{3tRHB$t>c+rT)#b} z&3ccu_Sr)1qPC7_esTS#RP^=(RYNfI%qzqqo_+rr6|BQi!5ZuV`2n0zplyFk9>X3F@kv?*xL&f#3F(wZN}nE>)SpnsYIt zdlOt+8c<6vpSi!KIaz~tp82&J7Z4{Gb$^=uoqDY+CJ!}~F9_YUPrV+eL*$uLoy~#j zu+XoT&T5|zdvmbX-Tm)Oc)g{~al#)bHE-f%)_9=7?K5CMV}OB*X#qv2=pZ5W#-yOq}SFlz_X|T<VjlLTq3!4jV4d%mOq~4nVi$z+6B9V~^gDyY@}aJ#5FcETdp@YXC_RW1Rg9wI+l~ zSsN_$2L2B>0}Ig55K=!IkOOEKr~`xwBSRm&&fT2kCsr|9j-7&qKP6G8!{5 z7_lbqs}kSc66P}}BW|w19_vU3(A5OQr$?LNg<~{1bQ5y_A2JV{H!o3Nk2*;(%Y%uo~E<&^XVHE!|_CZ+uoe{5;_{@vc|Q=6y^US1MIeNpB6OW2@LE4%uFaRlwk`r z=$(6yQa>q;AKGZCaMxU+xE6)EL0v{!mMZ{vJfD40A!DHZGb@q^=9--eWs9`d%-RJw zfR1(|5s@;W#4ZA8l#?>c1QZz@p+zsDoSIm3fAaSFKY zth0{Vg3QTC+Ayf7Mk>&J2qntigtQiT!Vub5Dv76(n8kVkL(*;Jci$WR77_uA}oem5`$Wkmp`Mj z@u4Tg^EOBq*U?IgxpLj2i%}6`>FS8g790~(GOB_)B}xF?S3W-335kc2lkG=Q_ff=r zOcU$GU@Ex)kWuYAK4enOv-bwDNdEv;3T})kF&aO7uK!`OH<1ic8)};D@IH1d0Kw6v3s_UhTseN-Ow|2*Q=>(7c`8PTXtv=@p zTny2}8VinBYi(OVs&Ud}Q-vu8&IRSV^^H~65Wn(AP%0D3brVzzkM-$VsXg*t!-%f< zUhvYBe<^x6Z~CKy8cw&I%AKIjo+TwZ62;sStOYDdjcCe-cUY=w%?)(Xx!&467sN0p$QWtsBrDLMc{u#4qRpC< zA~6rCt=Estm4x0un7bmKRY&l?Xm{Apl{SEwm63*Rj?{0&*PLDcb0KA^htosD<{WIupHETmk??-)OceKDPt*52P|RnSeUz? z)Taz>y3n-^Yq4x==9YHXQu5k*xzp~pP4oObFH6wFpZR9BEN5jslyK6~x`?)($|ICG zF^`tH-_*jK#fi`~4R=!-ks}8ul~e);2?UafLS|2yS$W+jU`IwTd>CMJH#Vs6I8p+% zXX}ts4t-%EU2(osCWhsf*`Z|O1C!F(S3#oj<`swd&uUSj0F3#1&AX4Ef+^|?ZaA(l-Fyi^?nsKg+fW7 zF3E2tRTf)#$vw@CfmPD2s+xBouAI6tI#-ONbaThBC%Ufq6jODyXS5ffJ;cWJD@5}l zQbt~zRx$Km089W>Yvu+Z)Vcjta#d3I2%@WfBx3+l^jndAXO)8^1Lb3RN^SSzq)hLgAIY+%Dfrd|bm0;wtwS+W=?&UDQHY!PW|I1cKuKr0zkw7i5lsr%!wiE;m>9%e326;>!=@I=4LSd;!Yl>d zeT;^@OslMdowh;LwopM{B?kipp=I3&8Vy-Kf$3XcYAWfKqP5WOcPA^hI#Xx6I9j3p z88vRG+l}9`2yg{&ecV{@TD^Z?b@%9JQP}$KeT_Q$7q>;_=@Hk01sx--NW9&T>7cVa zo@>SeEOki;T1y6LPJp@{awEOey-H&3*(>Xf@VhyKlUjgW7|2zFa9g*gLs^p^n>l`Hgi&*>5$L#yc%BaT$S5l-!3_BgvqSWwPl1(tT28aB`8s)yh!1^V zPgCpAHe7YCgn5YphL1>yWWJiBgz@6Vb`H5z6BTl4@ zj8hoceL1|mh&QSX;$kVu0-aWX`z^H%iFeIWUWqDP=7vzWz18HIUMn$W7RY!f=fl%*SATT)JD`uJn&~&Ai(_x*K1Us+(70laeQStIA4oUobwvK|=6+JR^evc8s zmaFMTh9ArM&Ala)d98mfy}rg@Nevdr7{SyRiL+_N>#|5Ri|S+rCxs!f9}yQ~I9&Bx z_fA>-CxncRmeV7Z15(6w1umrm5Q$ZU*$4i-m4Z|r*H{I60y4m0)vz_Z=FQRkBqr*@ zPA8PN$K6W0Wzg`^MgUwDtUn8K5Bz&J73x;!$}Z(->@%Lb-7yf76qv>C>E}*gJhG^yqoRm~`Tp>n zhh=FT^~3-9k-Awf$%T}=LA=W4?o$$D3%o9!@HJq7V~m5HF!y$N%0ZW&`B-u|X#Y&Y zugp!<$9AT$kZ7>c4tQ=N@-8it2i>`+aW8l>tC>r*E!X=BfMJ?pC zAw*akD7yP)ckd!~5U5bl{1D7C8t{M?1*2OFB(Bc>^-w=A$6;Fp)6N2qni zpf)8!3BfB|lSRPqJb@$WGh?EiIMa=aF4H*evLD$;V3@9&q%k(^vgT5pkG~(}jIClg z*WSm%fnSfBf!8(}^w?VB3a4|aK#xJ(Z!i1KNj0h%3WTL?sMyj@m7(ojQvRh9HA)OW zqokneW^JfI6mcCoJ&#o*>%oa_ih&|f3>2fJf12Z4)Tw7LOkU5miZV6F(27E+ciXCC zEQ4*Eh`otx2212(My4_RN6(QVE6Urhd)QA%@L|d8d z@h(QhE@jFZh7>ryD`tbk5n=nkVt`_H3~dQXjlcyP^V8! zhhisVWgW@Rj;@9>;lvlUV8b9BYI$z|l9Q?Jl?oI_HB4|1tMCYUR|Wt1b_chxbtC2{ zjhk{np0F_#+UoUd`Lr>UnZTF%!%JK>{&-sMKqirCaYKTX>uwD5{6oR%y+cHAG;yFV z=o0O`tc-JIL65#^<2dN9W(i%U7*bn>(;j0@9A%qN$N{^2P+)L*HUDt#00CX&;XCLz;5-Rsff=@~hAC@hIa-ZFu_LeS3iJ8#bBsRuV$!a7Mj!6?Zw zE^Ww$(j4C;HyR!Bd2Xydoz5}yef`NUbj*tVn7j;8$3wJKM@r$`_^?OQxvQVn9T;2w;w|$JBg30p0zZ?3QzQ=zf*kFKy#l=+Se6`H<&3vJ8qK zMXH71HRC?JVgJK-C$@M0DHd`8Q6Um3n{xa$eNMG)p(Vl0$>RY-)pnjX%VmM%FP_ zM>R068$N9Z7lg-pKc@YjG#skB2~;mlrCll)kRB0DU`=KWFQY1x(t;~s)Dj_BJ0zUl zNK`02WAQsk1h$ zmBv<7<8X?Aw;&Y3wNhVhhdXQxDmI1FJmFAc73>t5-pUBuDb}1UMIl%I7UtM23mJ4S zFB~|OP2-)Gv69MG4@`Wy>?0h_)>GR!eTB1?Mh!@$E84p88%S+}L^ncI8IFf*RzuE~ zcqn90c`#sADWK_k2~&RL`L{KgSW4M_;hz{06=_x>(J+Y1Tpby9|FiA3?RUswoa@r%lrQAC9%Tq z%rB#$CZw>)ZnpKKUd9i?VX)(EH};9UuMUh4&1nihX9A?Sh@ph5$X zfjF58fI}RhB`5=EQp&d&%{QE7{*_5(H0>=i~?t)fxh6xC)u7qS@I z)&mXHfN?S(AcPFyhKf23sYVU0YJy~UW-uUXaZ$*KOWnYC#@i2zidVzeh4S_?zkkewIzG2`MJvaSh5qTdSi;>oR zEY8{bV+r~~$CA|9j-}{g>(Vm`a>IIUs~sN=O{aQcfr#GKgT*@apryCP^+v>CBLy7= z^@i2biyqRwR2KfOccb;%sXKfTZcQ_`hQU&diLT_`#MpUY+}U4k0stEsDM6ow^QHRH zWih=`Lzf;wFZIFj8C`i$e{{QkVQ6Z_c)3NHid#{t-^xLW>o!c(U)_joAtP7^6m8u? zm9@1OwK3Z6#C}134G=QwZ@pH|veb;2>ej1c$~ z`VNub71vxxQiP1+hMR7A7gaG@F>CRvHDG$r`x<>{gB-aWJk{dbTq&-Pe5}bQ3S-$q zPm~qA1*^9RY8KLJzxC^zt+Ys`eQ(d!K}|zT=XM*~qqjJ>RJ=Ywfo)|j-dz^`1`LWg z;E{PdJY!?$u*x1T!$v*xgq!Eg$X;^Rp%V1>)+or5t&OJYiv3M{-jr!Gu^Gu|#xkCX zOlB(S$w+3hlAWAD0}DKeAcIP7@`4UVvXw5Fq9s)ZLIR2$tb<4#Z5gDh)DRI%BF=WO z!KJ`S`DDX;S-NU9n*2|ZVkH_gPGN{9RH1Xg3c-#!T@j3YXtR-h?*|NN0Z~FtacH53 z5oTDbJ%$6}%7eStJiV~mv_I~c@eAOt&%Nz;ws0t+6fQjY2oSnZcQ6>M^R;!Q7;Edh zyZpt$w)&t+r-cOkUYkW58_YXNp;{r*dlGJIZ}O+K<&rU55RuI8gtn01ZR+Zc8HsAB z^hrR5Nx}T)Ku_kOoq;|o3d`Q8#w&X}G!zK2UWmXYfw}|=gMLuxD}_R#nG6DhzELQ# z_-DMga6{>XF+(pWTTM|15dE{WXMZdWVi8Zk zv4X@FtomV8#zE^ohG^y9-nmt-dpq)B;{j)xQK;|doY?6~(l2LU78W!3q0GUUv4iiU S=daF)={K-yhxDBb0002=D`A}g literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-500.woff2 b/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-500.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..24bb8f45f89f43e11b1e6589de9f6fa9f0175e94 GIT binary patch literal 24020 zcmV(_K-9l?Pew8T0RR910A17o5dZ)H0Pw&709|kZ0RR9100000000000000000000 z0000QbQ^)6P8^a-24Db%EC_-y37QrW2nvDaD1pXz3xx^*0X7081Bws?AO(X^2aZn+ zfmIvY-51c)b|BB)Hel%RmaqM~?5hw)*f#Vv|Yt6K)k#sB%h6%F$TYCV_Aic(uWXJSA|5s@

    BF$fM9vsYs(%;pVL{QgttFZl2LrhoVLUHN_ z*%fVNWKol@#Hpe^eH${Uql`fG&AS#uT(fl1rDTGmh(PBumv-*=`QmzoV2uh@4i$WL|O10-|QK2;QTuYN0 z!*eFj;7D_=`hy%(wj=5__}szvH$W=f{jWun@{!Nq~kq%F;I z;VWL6eoxPydKkk(rnake;~rI)``-n_kL;I&EZrK47Q&Z0dA$(BmZSOKq zleJVg+7-VhW>qKr&1JoCaIwY#I_@DIyRITnrh}>=BhNWE@_}W&3z73H5^_noqd+L? zi0}q?3=IGqN4VL{eYyk8&d0vogBNKz!9(5!%w!mLEa!akmz;8|hDS6U&W}4=?M5UV9-yRO$x_Tu=_6TG(qkq98x(hc!G*P$IL~4LH;! z%m%mHox&~xvYak190p*)X@qRbrw8$&0k;;M#GfU3K_k|AlhW4WflaFgL3-@k3l{1P$@%> z0LthDuZS4#EtHdDD{)mP02pkp8RjAaGhq*K$=a(Mn}b1BVt`l0$!P#$ zIJGwN7y$TPnrI;I50abZ4SE0noz&Z`${*Zltf9e(UkPU1YbGAYOqX;@<%l5G7YmV$ z-SdQzd~m)=tK47iz0JDPSX$%1-&;PoK?_@C+J|~-+sD?!_s}Bk0P(s+-tH2gs zlyBnrXx#OA-p~D%cX_*2MsAjmUdI!^UkA{Ua-=TfuGS&lbc>wP%BgENW}V!aK-(tV zOkmJrKbaI`ZcW$q%vz$VU>aZ=U_X=s8^@1U|79E_UWWNJFlYIO_C^+v`VKQS-jLii z_g_t5xO6u>C<9b;Y362G&jtn$^DYtq10DT%JnUY3yNJgEv986XCc@q$g9*RF-Igr? z*8-1KMFt5Z)BXpnM;AD25knCs5Ht#wUC-;tKLm$#;Ov42fB2GTnz+C`(j}RI|3^SY zxmQ(hi*b@Bp+O#`M51@+T8_}<%xpzro&_!S_@z!1BYg?UlWSJ#HZ#xsY;R`u0Klk( z7Mv~SFJ0T!EPVATOAfwlZyIg17Zj95xa{W?!jjhuv#b8h(e{OI*G@%uIDkf&!_Z1J|=jHoDj ztz9s*M$enP1%d&5&{F}d&?O>L8%gO0ou-n$<3OLZuGc-%u#eAfVK{_^v8Mlv*5yu5 z?yipqH3}i~?vZ=>*wS2v=b5K&g-FqQkw+aAAD}gQn0Z`~mKr7G?ikQwUF+A>+8T`n z7RMUpm?u`ObQWp>vGtBjJDGL%gPw;VkCp=1gzMo|2ispiWLoC4nITb&*ASR&Sk0HN4&^;m78^HrM7Eq*8s;)K!tENgO#G%HPqw zq)YuaPguI`tR|&fr0-{n`XXU9?2p z%?-6^1mGOG&dDld=&sL?NIiv$)j&@n|A6NjsUf9PhX^IUL!Ilo-uC|i2+5VYVO*zyv4#(M^~Z;|Hp{h$ z)Qt??Y+c+kx6JOho@EEf;7Q~3Qnvsei70Sb`QG699CtV?7nCdyLD}!%kj@=l>E2qU zwV~04NLcpA0f4O~wU);iy)XeQ;ADM`eUpWbiOhY@OkL0rZ5onAFc2-^>=JO40+XSC zZ*f?8tPB88Ks)kiEW7P|Wch<3IAeowq;~Fe`DM=oOX_T8erwALzB* zM)2_h7gQ@IkhDx7Ta7WAcUP@Sw5duF3s2+0IB%p>dnh?1ny|znyY`;%01!mi&@z3| zxjzGwr~HSeuF5P4xrsv?+r6Rb@B_v)y!Lk?qnFQBJ&zfRPk&a_)xi*U{6Xlp8|bD^ zrCi>Csq15ohBPi(tYDZSQ^6A^KE{dMtv~1LomvD}BNgSy{dW@2QmSq_@qR&W!am0W zcZtIo#RY-g9_tCdxEMRjO-_H z-%v4rAhE# zsYziiuzl%yBrF=lIaV!b$*r^kCi`$O(OBZ;ePwu)bl2v zJ3kj|%6{_?8fE=j5^4vW5 zAY^>)G$pvyHMnaqIZ=ETH8WF>9RV@7Ood`r{^C;5ihmr$L`}bzSsxK7KRF2|sLY;} zdrgkMm3BuBe@$`gViPdY@Hlc`vOpDH_t*40f9q_0)`a_9Q400>99Z=)V^YcuIsYS; z7ClgE_(VkC*WKf=`TXZ%Xmb>a2~7j=(q^9C%vT#asG(Yfa29cjbd4S`;6fi)3=Hs> zvU@a}=&pZ+${1}^?b|L|&*VjU=sw5U494VcER%#zz&bDYW0uk#-7>!nF?iNqte170 z>mrUQNOfaav3HP{We%=trZL};aoxsqOI8e(qwo=%U*yDni}p0eT48=rrS- ze~i--$jF#S|H{MCXKiTcAW3Jbo7yhw9+JF<%L>mj{e1HN1nbo`w#Ps)^$kzT+&V4& zC(JxsnavYcPn69WZfOlC+t?1HDLazm^mRtXp9^l`J@HZGDe3#YgM(DNu#S1uk0$kS z*$=@{u?U*&Jsm&xOfZ?pfgo^gr`?$f1@f^9bT<$CmFMUHCa`tX*-3o3v>-JSfF!C2 zLQ307>rg5+GE}1hFtI!N(2|hT%;P8LlC=2uHIPVq5ybE6k}UM z4w+Dsg^p>kmLDbM6B7km_kJOU0Iwdl5Etjl>b&;s?E*jx|*wLCoQicJv#cziPc=fvk^1y1q^3{Mjm~fJYn*jBz4_FkKr=>`NA{> z*z{>v6_7x@GYrY#7IvOeVgxXIqn(0gU(7!K2otx1PpWsEGZGK>weICXEQ8<{KA9%$ z7{O|w z#4c@%LP`k4&NHBj3kWYbZmQT3h~c`wn1?Y*#{IZUhNQm`hhOk4L8<{^IyQ?57qg22 zR&CrA8AK2Q;s?Hg+&A;r@9^6tqON1imXR$2PYZq_%kGVMC4yB#+7mIy)AK3jca-$^ z;{NHzJj)t5w4UW%i)kJG4PiK^2hL_IvuY1Tc}4yS*o58szZLlAvIg^bP?djvoE)t` zq2I%0-Q|w{76rc?zpYHJt5`K~lxx!BC6(2XmdzL8VVO4bQ)e{CCMpOaMR%xj@@qps%Dw0s&n7$lQU8AY;4GuR)gPHY@$kTor=@nDADJ#!o9M*F!diY zZJqUwwzf@GruMp{FzHG7q7-9lxfr593|Ux~rqT)j6=V=YxnY36I=8N0Hvo@qnpq4` zL$$3Q2k$3^mw&HlDEcc~E(Cum*&B7K)*o?V5_7hjBD|!@Y^{Pka_cz_-{QHe(M-U*f8b~n?wj##tQPVZD_K0%@q>X82#2^ zTf_!UL>4=I{v-Y+iE+b58n%DRzu~7vzb|Y-I7a-jh4&L%)^O1&XfUWT1+?*&vYEIr zKTUj$C-$XsuoBCLoSX*3ckpS-qd>_84|y6gB77)Fx@l0JrkAsiJotyoaUwq9GLHb~ z2R8VuX-l8PNE|ZsChwZ-Y1!prF6OGtu-W5{HMm?h(RyD2;tv!qi;zc*DzA;;(WM#2 zPtX1k@*IQ`33n7~E-a#=;d6;y!G;t}9XY4gkva;<^nP>(1MtMTuO^78m%EITVjOxd zN1jK8YM}X;v-&O?i8)j<*TJ@T#I%xgdiGKTVIG3m?Y{m_yX!~^p7PMjNBQRe7~`jQ zRpr?1iI$q=6OMS-Y9{z$+%^OT>$fEUTps$z`T3+MT?U#h86LzmjH)7WUszDU6=Y35C* zy!rwVb4qQqh3Y?Rs@{t%_h8R5=YyW5QIgz}_S63UY1c zxfp=APyNzwp@TN!X@-I@+_RXvhu|MjaLgacd^*dB<)Ns%FnxA?>@%~{5Ic#g#lr^j~}c3GPbo8oVlQ0!1p7v{JOyIZ=f2$p@Df~A;TkkzZD3? zL?y3lzy9hAmv=p508ifccbBK#c9N`PZJzFUO1ef`q8-P}W}90a7H+>P5Xw|fMpbgv zQxIOFtE**9rL7FVdwJY15$VNBiU&U({a+*sy*Z)!Jpg3zP|qP5Hx?N$H%+i6{D$)x zs{#D|yk8nfslAWUdFQQ~Flir3wMN>d9r`_Mv^OE08O;Iab3b=PNh*B?%Mv-EBf~s% z!gtK=j1B+1xtYfPg6eQgl;CbWysU=-f&OJEj=8nEP+{STdw^d~sK(Y^e8??O%?*R&X*f&Y zo~rO|oQe|F7ffvNFK7(sh9orGqd2#UsrlpT50dja2cfh^xeg)MO6xf*8XRkpY(T1u zX@N-3$NCmaMe@P3**iXS#7PJjd%Rc!F=s4+m|Ipr%*+A^KKC0v!#xI_8EbG8yd45@ z&F6;#o~+4(IoWQX`y~;}!_5K&z!?e7`TzglkA7B&`fq~cF91I|Mda&i`nXg2H~a77 zi+<>VH4GrHM`?ZpEMF45|GnFXm=nl$%{3@=fO7%WWhf=KdVZ-&=BkBlto1&k?VRhz zj8I;~-(Of)a~}{7X}%#J3OPhWgmp9L6WSUE#B?3=yxuO%JHwkbnVD@1ls(*H?j-}a zW-`K2ptMdIC`2wfRwxFDN(l5$UK`Cy}exgsm$)XIF|%TGLDu zm8P-68d@&~I+Jfu0k19v9^am!gV94SXlw&Ck^?+!0ksEk1JY!(@t# zw4W2JqR(RT1tcvK&XGV{POE$f&+H;OVes|*&~qcgmF@i3KK5f1mGPfU6CMQOAQk+4orCSaJJf)LC&#{tjQT>eHns^U#dZ0aZ098{_4nzB%8 zU{gyaSBfkt>e*B&P{pcApnTP8^<`1TrcgCoxZS`SHB0%vyE22b3Ed$glm3_!DUm^v z1d&lE_N-YXmNc^3MzhnRn)wYgZzi^F(xA~mHq>z<4W=P8&?z2DfnX3&&9Ya#r99li zf|PE3S$Q*a=T%-cFnu+PYBjK$rt~bO_|CW#h1bU18*g`tBJ=P!`!U+?C^H)Io* zCJYJZ9k|n>JlD8|ANL625n((jz?Dxf2->}6xY79?Y>yRu%;Xq<3 zG6oUHC?qIXDMp-t4JE5Fv23#yFPg9Q4?gIStIPem$Il^!w0oa)r1HgzVYK0VVbmh_G_4QceiEt4gtPi*eE z?{=C-*3%8moZKf&eVeP5mIjkWpOs0k*CaONXHxrq*|CwDZohhG9vKtPW`{S!zb-g< z(y5p32j5Aq8e%O!Fc$ymdI0}Pj;3(%%P39T<~F;NMoV)(T`*^pHKbsZ%XDmfF%+bT z*WrHzm5{(NfeaBeAUG8QKvaWhTL>VD=o$j31ONd7paB2?P6+{l3jm;qo|L|;+|>H| zo0_x@#*J+>E_sphiMJE3Ylx)@y<(2P+F?WiO3}@{P}!HMwhLa1qd0zz5P|hLt3;bjOa>A~W^-Z(o@2=I#O)!WB9q+3p8Avc@eYxao+j9{*zHX#~k zoomWt9!gGN`96cy03A;{v3Q>5uu4Z)vNzLg<;GUNYwmFdDP>U_}_geE@_LEj86|Lqo_UVSBf+G`rSCu)Go->7ol zXqs)Sd@ExseC@x829;)3PCI4rs%~Xi#V?wc)vA`9tFNMqzb@=>>u~Jg#O>U%?m$In zxNHvMo;uudNct>8WA7;59Ji>*AZCv|YAs7#7K>m2gmws634&x12nvFhY=QVf3xiGo5~*MTHUcCAhZqDP1%rGCg&_=r zEgQ|IN5q{SMJ3Q31W{Glb(xU}8#P*CqY;hU0VRs`NcR8#f6CG^L=$8WpsL&2?vN!C zhXSIE5_(}23KLan^n{{TVG9*uj7e*uddqb0O{3vBrCYY8-QPZGSF;)iZ+x&xacFT_ zU#O)Zr)8}RvhF|N-m)J1r|}~H{8Qsm<86p!$mt4&9JcH!s~}5|t@9x1Is>0`BRN^D zFV*b5^ZN*0)cq2dwZaq+ORprJEPjH*5)P+5{bHJGnO^cc1KUQvCMPcs(b}VLc4zN? zN+^+i!mfnmm{cnfRBb@E>`_G);m-hVGi*>%^k@M=5D^puF|cR_3&lw60?e3mF3LGK zH+xaKIcF_?F6y^gn@iW>qWx0sm0>|F!rcdX_r$M%9L#-=1W^%64mnh68mFSN%hI)r za;M*__po>Se~`goxOP=K?b&(GjqdmN`2xWIoUX!Qx$FA5>S^qUP0RD&Sw3(iRUx`J<`0UNj5wG*>x}Ses(ZQgE zVcS9p=!+qyHyD^_sQttsUFKoVOn@U|JIMmTtG^y#Mdu+FsDM1#*S$u5`_>>Kf$f!^m&-t#JN8@O{=TbKFo9u+ zQp8yIBI+n-IwKwKN(Yp-&;H8az&o!3?e5stHM%qB90JMnu`WM5{T+qC5CS$7{@&EI zeTxN8OWbJ&5EW==-YM+yn!BQN4t;K#|KEOa|Ng%?EEb>$EI=Iy@&W)#2A4dGq$v4t zA@LM4Er*;K96(TsR3sHihmfiqs$4WK-Fn>A?#i5svUBasAcutD|NqTdpYB5;=9Tod z7B$926NT-v@3Tz22cqCs(R3AR18vcGja7diQ7}eO?bJQaWwfdd~EHaKldUaakQY%wvE~M zQzg*IiN6wm}J%rDjmTlBSyd zjHPF$lB!==6@IG;BRci#d;;B8zmgEzHX^+u6fniAAlvyG`AU1dW#l3n=!AUHvO* zp2j~<)7(DYtgU@7&_O`1V{Ofo&k2!(h=}_lz@7iM09juP-W#Ox!f9Qu9ulCa{e=e3 zzYKk!|3M3o`U66r=`*MS!}`q-6qHeo!0H!cCSXjN0BQA>T4sfg#)dW9(lP5Z20J$F zYs;ZNVRB@L#hz0gu!5Xmt`ojRpt6L1-c?bsitzT zrNUONqjn{wF0CP>*{s&(oVL793woD|`bq}MhOHP~tQxDCv~GH#VWw%WWzn|f`Hq#Y zb$hnw`gR8P9XgyHIT|~eICtuDX69<{)`k1&rH7TLwRbl@r?$R!e%6TZ$?RA}U#~XLOb=^WAel`ohmDFa7e$@4oh@(i?xh_0PKi^?hj6gb#WjQ9m&? z?z6!%>kIBzuEu=heHZ#etYd!K`DO37i~cdzsJ|xvARzt{RNjjn$Zn7tn}~M1^qqS& zB5g3${y~S3x2bln-EMdHt`MYj1-nzwyg|x|4 zCJ{}<-G4`-+YBlUw0!@s{-6A_+PB8{C%B*Ma%)_7*bZIgS$Ru&mC6}4d1!F)Dm?=1YI)Z>&n^Mq#j$W>t0O&ct_?Urb3m8n*v z)=7^PsZ*|AgGLpaH0x4og-R_}YBlA7RjRaEZH*neUGcwABV>j=Rwzh-Fo8xL6VA_O zM~xXbVbWE{J#@rj5&Q+)DZ~>?wrCemAx@$MN$C32Nz$g&urQm&JL6f{8IShBhi2^C z#&{VC3p@OSDd}(4Ga!2`1CYyo40APP=0gq%&%GZ*MPYU(y0aJ5eBJSNO%Jw@@8lzad%Ml9-H&%~$EFMX255C#+&sFa z>XWsLlf2dl7ZXSNn(PXeF;>_#YonwqXzJL(q6Y9rMtnNKLfd1a?X%I^=URNZX|?C@ z^rVAq4ZhiZgV?;^Y1G;Dw*zRT)rZhcf*lf`RjZb8+uGzEY|#@Ys^+(>SCQ_g`=>`^hA`Us1iaqQ(N*mGPBXb=3&q{pDg9249MZ!HUmlaJlAZ3}6Ss|`WjmJQ4&I3Rc z4IFiqPq7~ZkXrQ^&yl>GY09|3DX=qVN(GXj{p7T$S5ik$$m(+pTD@D*Q(eSaJv?W_ zyNf;2)0PXxmc-H(%AJ9ti3fiJTPoZ^wpU()xuyJ3x(JUotNc*;=g72Km1k#&|u z-c6LtZl^S{Rx*SViI}U+q^%+32}c=w7=m%m@xey+0gnC@UDC0ko{RDe@J8dxh%;lY zL7O;d4_G$0tw#i84G+TE<(5wtO1_3ivResX*X*HY_wg1C+66kZyDD*rY$$uXmiwHd z=uunx);B#T9|W#BO1gF*pISemiw69C6a=$}q1I_Qze?}~=FSG5EtFQJ)~T!r*CVBU zqDdTRW{V;&-4#DS#^9y{cI)a1Gwsu|S7~C!q)nB;Rgl^OotXv!Fgb+AY`ia9Vz)aC z#|GXSq2Wp6t)#M4#Zb>E$N2ZXN;qKuHYtUjb15XIR!f_Vm0H$XYuE# zGrxDMP_k)Rlrdw+*`J$wMIcO$A!>NM>OMGQNM4<0EB3L7i4IJ|Wb&6vk^EN*RqTkC zq)*w)){y0l=&BPFDtQo$N0dDhsVQ$`@RE13Fw?6e?#UAy*k7K>*?Em~>&xrT7Hd9` zh0e8uVqw@RqF!NA5^R3DOy#4itBp~*Bz_u7bCr#C5?M-6r7~ikxx*6YI72>I|l@s0`@m(!67xOBnSFPbv9m-OcUe_$1%kACWGUh~~N#Dz1zy zPM8x5J>m!wg(xOT!n8~^qoh4$$^+S(hP27$3DKQzw<+kj&9XlxcWwewzQzA|ZR}N*=ljooJ|w~l zqYQdl*-b`;AH3T1oHX@$ENyS@irxF`wCki$k%ojsCP{P_QD;tEc+lCvXkS&{U4_{r zZRG&%yxj^gq^|UcbrFu|AMY4dz2aB8H_>tIoopYT^oAVgl(Ao-XRT?g(ef@y=k9gL z`EaLnK0em<_4O1#soSHC`vKa9GU&^#i=?gR(qnNQRNxUuzGapW6R&~XsUe@ADn7^9 zkC^Vh8M#njTrTn=^=sTb59s5c5PuK`I35Oio6B$b#*TRRRc=v|#FMmaIV_spV!BnU%Cc8yOjU%k_TKBciVI6quUT_H;sb|(<73RvZssNQ zIpf0D9B@9(2eEj?rj>tH~IUy3f6z%po;&zZ=87ley#Y6^v+nZ}fFA@Op21YuvzS4hc z|KCloSS~o0upM-5Zy1KUCm+iUh=g;uNp_Rj&>$DKu@p>m+1fbk zrqVO~G&H9P0sW3%B(Bc-Rv5fQP42H|~X&##6S~lVXhp zE|zRoD1*ovVcp5(-4;qs3u*@Xh|O&+L5_3Co~L*1h9!DF_BxNpERy>&ZxZD;)GN^0 zY3F9)8~cMah_fhnoI5_x=`R}IbDW>@$Jkd4M-yBimfx4Xknk-^t2nN8eK#*gDwDRp*Ah=Idob z$K+&MqJ$8}ad_&d%v^2nq^dNgzQE%8{x*nqL9JQToispQ^db&~)zi34IeNXQeYpFj zrKRwtQa~#0K3#vl`=a($K!3Ex;_YZSr<*U|PIkEcUUyyDyM#-33D-IqKBPSvH*19) zl8%YQnV5OOggk*LqnESJhnV7MMOLo^bG+ezA7z~q7`GD}Q{QijCkbi>V3ik7`*D|( z&r64&yX7j^y1!njaV@x_t}y+zv}5QPgX2L$fT>;a7qb{E5(xG1%g^wyzKm$*WYtZQ zW*=sUq{AA)h{V{&@!Xwf0E4ac&&=@r4w$CCZ&(Y~Cv%ZT5YuEoyS@JDn<*e@LoDO` z%bXsue@MZ-R{(6Bgd~0YGF#!Rj(?1WKeaVF^svR57DRGUG&q^^j1Kveds^fl&K6A7 zz6I(%cFU&W4x*R<()A>MHb*3z&r31vqZy+I6N0s3_0j~YH6-X75}*o1xOK&a9}%bQ z9X_xt?Jj`^@>4|=`=UPqRDZXXfkF{}N6aRIu61|r?h+oc;-Zzll&7qcxBr%~oM_Gi9ZoEMt5@y#f!?Sk ztUDCcnm`W)f?QO0#612?wOP-|Ly_D+yfb-vPho)f&}!J-I+Sf6hWLmSVaJn8x>p}e zcMM0&M4F9cdm5^8*lYml)N}qr6y)4+!p%UO$u-{d_w4@^p7#7vwg7>CWOMEF_s-7! zXRY$x2XfGwHJe zzH#K8d0?YQ`&~H8G$|oNg5MLRgUoiLMy2Hl$gOA%WQO}1m-@VeVS7`Yt3sT4J%;g6 zs&guW^o1}Tf9`;TYDoi!0^?7eeDFvCg>yc#Y~mIE32IO;r15wB#>OMUg#F{U=jBLq z+1tcrVg&)Db9Xxe(DmtD8jRc>;#wQATKz%66RtGAVJT<%`VK0y@_AX>Wt&J-p{-AW8_LJB2;wRZy^|9unc5~v~iKZ4kRU06^7)M?My^w<*Z;7eHqOo~Ic;?P2aEEBfy zoocOotWeL_po&!X;{M5v49=S9NwMI3j46D2#2WtjNDL71(`w%3rk@sI?-$BU0aZ?0 z0dPLb)D#$@EKb1YCMdx4NUY-1YT8QE+lOIBpFKVslRaQ(57!KZyaVC}PM3aeEbPaT zORYX@$tP%grNsSqZn4fH8+3m{e*4U)>c*&&O*rkW&9NqEP!jaNzZd>0py1i6Z@h_P z6K^mn3l~>Ug#K?lYn(81{w0Tmde-r^`t06#OF$Nr{4>cax#h;#m_Vr0Fes{eR+BKR zzeuo8+_975^g~WRnO z=;i}kY6rlM(gjWq8D2|S_J@u1sKCsp-2qWdMZgNbm=kyz4o>Psgr55uYryntXYkN5 zq|bFt*U#KI9d^Pc)UGqK=LeU`U|9v<*( zw%TS+(`ag%IsJ0Gtd#+VODUjo&%FqyqbV$?URW#W{HgRpDJYF&M*2HDqQypKrD>G} z@2vG@?6!FaVH+>N z)Z`;0hMkw0?{2S`=1a^>;JoFp1z9*7Xhl`Vt`nqR#)X-|sU<&iCr#hMf0H$rj8PCj zw2yH4(w%PH(X+`u%qBxa4K-PoC*PJ3=owl_QX1w8nV!L!_qf*>+pv7(pKBH0&%eJ` zNHjOM`FGu0(rb2S+nYBdw|A8u)x0+!Pktja?kq)kltR{AfT`RISCkj0d+!UjQ9$?4 z13B#6oS2GMj4Ij841P=xt2~xu*70|0NP}7M`?K=*4TqC8Z9^suJcn%&FroL?uSbTC zgBPzII5zi+rAu^C*Yh|9u%G9Qa#^K~#kCFVL3R(nj2$g4+?$y)nlSD2j1~$8g=m8!q=xc0H8jl2DOpf%Eo(? zIP{C$n7e7UFN=5CN$UpNXLSe9tUg3O`A4}xlH%aVLA3nL$|QY9cBb*FVYi2T?1Opy_)-(p>Utq?MlQwETiwHB6(^$rYOm<6_hW zNf9ZLWQjiA1*q=kY6O0(_VMj#W>jFa8|eR&de zHTz49#64l>X$m7v|8~o?T-*BaSIfDLmue}YhhAOl#h)^I{P^o%gTE8`C91Xr>p08> z|Kr(LGQ$3j|@i)fW)E9gT!;qLJ{K6zB(g7)W2!lfY z?ErONyje~6Fez{@PN@v>367_Wq}F^i1}!;v$k(09;6NUndUC9F<@DF#gG&qC8!FOz7{bs&-f62ll)1U;r~^edM;mj}5BJ8Pl!lb3+6$3Ji+Fk|nY;}e2QoS%J4 zAgN|G<<;44N?N8vG>u@9<=F!9Ey-`rVwKX09g=ByN|Q$|#KG%H+(EnM)Zm?k1(IEj zxuecG<$$V(DS)Baj%NL7s4M`vN48>Ter9uiA9BKKZ5?>0rx+q_)#U54OOp!}%s_yD$mq1C(O1XByATEYUkYJ;P6U zbUEnm8c6t_@_(T&zCg4HA;T|PhDVegpf83Q3;GP~pIkeMHqgRjM_u!`?q~FBxb2BK z1gaf95&mS8zYdEPpxeJ3j$vTwCK$6IhdQr#MjX90JSNU2lWULn_x5FNI>1R5x-nA< zB$M>Em{$1j>J2E=7Su%8kz$dqt(8c(@AGCF9pi3_9_3l*J2Q1orMZmVgpe&af6j6b zvZhBd)w|V1l0Y8gns4!<^M?zX?MLnL+3{`=Gze$O_La( zexXQ^XvL)aLeA-qD|@}(L;`Lh1FTTHXuAijhN@|c6+S-s0Z0+MG%}?q_~fu#xP{b+ zPXI)`%BuKdE+vWUEfa7+?|Ip6ee!eb1G+Vcq1gHiPkNi9GJQAc+ zQ?WVMVHi6SG`T(nu60Zt6ySy4`UH7%ZHR0Q!649DnV7~)DG}C|aCvyOQ@xmuV9HO^7m^6Q=|A1w-2n^Oa8Wz#HEG0m z6rd1l*YS)5OHAbCR8ecc$M@FLNJcMQhwNfN8YyJ&4Awq3A}LpkPRVJ46q$kK^i3Tr z^p ze#R+LO_<^Th4KH)5 z*zkMF7QXcmb`JIYhY<1wpgzbZ3GWfpYOlz&8!S;Yi*Gk?`!BS@HcD?0csXkBm$)Tj z%xzCVRoY6pc$%%;hRd!t?Xk{;xsk4v>|S+XOAWM9w!&a;;G*eMa4R?7y`wy9(ycDC zi=_4wl}8Dzi^WMXa?-(%I|U3zOlUYqfzRTGc-G`cblS%HUiAoBy%G73`?V;+lX?(&@zcWpDqB^EQ|&U69;_d!(|Pal!M(Jcpvt zup$ROuhE5tITZ2uPFN^wJiZnhT6>Bo7l_<3*U4^lx*PdA#=Uzi)5x+OQ+8Dnt@M_3clWVuPC#PID<2Wgzp{kAw7fvztnzfV3KP01aIVxCAOV+13dacn zI1u|wix?mcmrjbs`2YYseE~tJg;?djX0~n1Ej?iNcgOeo$#CP+ zJYr;h;PoJc99fPpE?4z*$HOsbUTkg7PJ^r#vlQHHz1~RrT3b$L6Ukde%~tAYF_=pYL~H;8 zn>NQTK;s?lp&?Zp_j`q$T8lt?uibcitwycJt|{+d|4%EKzeaa`t^GR1ga4-fSrx2t zvEks(lT6DzZw@KzcjwsF+RkGQQE*55D0suxW1aO|NB>x4a=fhynB6C~*7Q#YSVY@~ zn#lUkbPKQlfu^ zV;z}6z+Mu+Gr)C%Y{V<9D>8%Osp#FT3``RXgQLAY#W>9y7946A*EQVi+61P@Y;8O# z;orhB%|O%L_)b68(Pa@!z*!)fp~0T+0zA++`~HJYtX*rY_qOrf{pnmkod8ER2aq{_ z#ZiUOj+fgNL%2&a6Gx$v7UpN4BP!#>2zIE|I|MP&9r2oA2isi{9W&lgR87Ltz`#;` zO$`y!;+I5x^NpKO6SkePA}BvUXa!??xYqR1F6U+_bfEX_nN=bfn9Ea^%N2b40J^T< z=?O6Rj6&P}sK^M+<$$>&qm$FaSPRFVLWZYVfC*)Y-KnpI-}dIL!wpPzJw7Y+n;#6q zC5_xYaM#Y0O=w&T`@2c!uUIN?SltlAw7Ku)-j4fjIh_{oqi=YaZ*bU=)lK{IIB8;n|zI8mmw6k9);6MpvfMeZd3nbGsmRp{RL$ z%8UDBlO&Cl{pLT$Or$pco-&SiwSQfKnf&~Mw|J*CdU|;Afx-mK{g9>QkZJ+au?;$Z zlEED5*d4Sz-n}w}#p|)og|X=|Cw=R1_&q}V+*Q{Gh`jJ#j z{8y0p+IP63Yu!G#iKjzh`{UwJd)?B-wvl)j3q|U#^v(8nNC=Qlp1Z1dN{-33<-W3X zlu^$c^bN6ZzqYR;nlv}HrNZV4eUG{-MJX^yV74dHne9lWz^U`gH_UPs+Jo;aurVgi zP7&~zOopvZykBxsnh3s$mKme3Kl3w0Bq}M5NVks^7%e-{{0(lp{yG$^gUP(1H7A18 zN1RATmn%`u3RilgBl9N3Wd88n5lm*R&cPo(Uu6ci>eA2vN(yx)cndbI*uvR5$e*2o z@z-x`D~9=j4SZ2UU8bEyIU_mY20@81NjwY^sLUYFZH}4$mvBoT<6F9T?vQ0*Jl{K| zC;c!E)u9MBGw$gbUXL$M(jFZ}oRNVYI0}HrAd6WCo2^?YVb7^FF2?dI29f*=uMukU zm@ZBu2;E4*j!cPlo>ZDf_4G=^N}Oq796L{oEOB6#jU~^9qqzoQG|)Fa5aQw#MRB)s z(W*s4H}@SmD|2Q=SkhfSOS;B(l)R6hEJu{JSeF zA0%)4w-j}>tZICbIDRxeYI9S#j|>j(PAmT=sTxJtZQ#vL!^MyK+5NvS22BN+?>zlE zc@XEg-f7P?oHNzsvh&Bez~h1D-KW1K=?fot#KM0oPD2fS4x02SnhMx`3jlCE<%wvb z*tWX?AYUtGxW~W^6?1YURDnc!LFwOz+pFs8Pf9eP zYICed3GDb6yw<;E#@SW{_@@$GowI;R+eb>wtZY3tT38CtV915{wMCw(u5~p3tzC`P z(LU=sQ$Dfx`L)JZCz?B1$W3AMW6bMy)LK}Wdc=M=kKMycP<6R0N@+*S>RqotGv$Rz z!b?rE?p~{nkgp`u-F3RrjuF;;r!K*^-t8*m98G?7gi#eaxSdYPwuff4OwBVI&$egOQLYBGV-dAE!Kg<)WKycm8W1~+UxCb7wS_&%2RD}rBHwm zMz)7IIs$d1fvgS(&7-cz%%Ltdn5z$Lmc@gkmyKLKt6pq6q$wu)BvofsbQh8hA@NUA zTM-f4+}1Qn3Z?qG!fn`wlm?ECL8_`=DkLPoCB9!;4WMWJ zUO##ORLZK2KLaDvlozOdFlhtVtNaud?qT5R;cZey45hkyvvkRfC}P@@y-q_&SIa={ zHCBsa-IUJm8533;tRqKl=|65b5CTnmP9GQO#&*+R#Ep3!2pijPJe(6l00jg}rb*2W zX34Tm3@c_$lGAE7(VimsjqPiBv*xn@7_XQ$51u}*Kh+ll0RzeD>Jm_XX^xdyj;*p7 z|0gm@U@SOe1Bv>sSr0N=vR-7%E4P0c8rH>j*T$ml)M%?^YHFCc_k0yt0i-mV zreSY>d~2;UBf&VeIA~Jz$ON@XgdH>*{ZP z6F7g_vAVn6RfEysqugCL>o`14!v~B&X#04Di~PV~JnS5wvW`VXi8YiM#UNYpmh?_tlc$1bVN@yHjKq|ff+R4)*tytpE|Wp5>7045M@z)w+cjzUnS|?I^P@??{kBvitL-Ae;t+JO)le$h$Fw1lPA zIp9c$Gs655YB%dF-r|~PPwyBK;l=uNOn@{Xo24aJ#cBqz6AkluJcqwF(wbR*jFb#l zv61tE3$J5w;5-Q`AyGAp>f%qp4+@d-Mhfa6;LQ!=83(r|Zl%&>%@aLL_iZQnLt|4rXBUI%-ZGTtLs|bhbSP5^g_+uDN^c98NlZM6ocAfcq-N6At8Y2# z;Uw9SJ<&eeE7eAg_SuL5&y4$XaSS#y&A^wFcnlp>Wvbd}mm;yS6Au#`QJ6Eb(xLPr z=PuL{ymKG}wHA8UQClD=!9arvRYU?~@cS!HPyH%=nxZ8moBsqMCy|+eX_@E{rRQ+g z?;M8(YD2d&G7CDq;w*wACdx}<_DpR+GJ$|)W*WRQ{sYsU(G##i#ZIxJPs^cA?1%|z zmuR3?$;>U2T+csT>@1z_72R0fA&SYW^O0YIL+K25+wQ78PK96uCt8~q)FqAWih8Qm za)heYZEUOB81B1B3}0OdrWPJvSP|5)!y~5^mL0|!TxMh{*_M@P3GoI`5NB{l7$J!f zn57;w-hWU5<()#)Z(($MK8v$y9q9;#8~JHCTIXLXDqmNW*IZW>*=+KCLNXi3jA*U# z8U-$bP?0X->U&e#CXD4*FP~V(CP9f91}2V{0_0=~&D5y3F@iU-8EC=*v>XNE6ql{* zC)hbGLax8HcIcSY1~oyIsaxEBSjU5unMMF{A!J2Rl^*#;7O3Bvz`bjiLB&?laqBp= zTbjV}b9LU|oVPSNJag-w{oDBQE;r6ECHP6;{_siqRmVO5-{GN}1O1E4F6MzhSN)yI zUVBJ3*mf%(x8@9EcoDq%Q@g46kz!R3L>n}@G_%00Fewr0j?7hb(+-GAEq#~Vz6C|r z9Mt)V!6~L`iM~&^;LJ5i9Qsi?+kp_!q7@giaos&S$=VlvstTjDF)<&n>&m0m>RTpa z)&~(iB@Ev8w6j6SdPodw@dgQ2+XPcM6&4KShmu4N2tw7}t-nPMVg*$i2w7Op% zVn6X|syOPbK_?-N%P}$2SRbAS{7`*0UpXbWu5jEJ0+Q#KRd|&<(^0OlXmnMw;csy< zK%UTo8~>&OBj947O#GNP6?I{#-V4|tRakc%Nv^_%Ms*{OlzRUXUJ`cFX3CyBp-5;WgF=NvN9m>P^|_k(-0ML*f+~X%!}O3*d4b4M7tE zZv+NYNWraW!bKa<_HE@^#mg@yo&~2pao$hKKRJyM_$MXkOrh3v+5>l$m^0HZP$JW5 zx5j0%L-ci6VXNuf(uJ=EVf%r0lMUpM=ppq00)Zbcbrs7;E%g=TRG zcH8Oh8mit*c|YYSo)#U4*BaoJ$c05c(t#kuOe(q&f`8L?(E>8H{-f@~y!v+A8_AFc zfdp3CU1_wLL>S*7U`^*<6*$0&cQadWdyP_Un`D(%Q7Ix#hJP+(5(Hy+a~)#sjB$pv z(N#kjZJ5tAU%1Y%ABm)HpyBQbn{pCpQ{hGDditfdN_erG*cCoj=}wI9;@z7T!z@GZ zDzYAjO}a;%YA-=kNN9g%Ut2h`7>65yFxfe3A9aX1%42`OT_NhU+PbGL)Q|s_`b>9v zQC+6pc9l5DAS%(lPsipl zgfdp2umxomTDY`}qps9?RD5-$g1XFp{?Mg98XsC^&=Mgsi|Zb2)z<-XGgI@CsDH$S zp1<+ncqY#e-=Hak4h9HgSW6f8CL$@)Beg1=5Gu98OAk6k*ATR3N{DUKL~PFin6`{%QWYc}!525o+x0E+vk~Z8|^g=g@4ZhvKztflf=dv!es{GmR zr?!G}mlXh97F6j#Fr;$t(j3G7{C;kx8=QUh36+-iK-7EnByiEnId8f2!gs}a;YwNR z$1|%6`JMKE*!=+fm*9(D1gZLBl5Xs)j_^||YNOu1mTswZbL8c3T*nGVMeweJ_*In< z@jR_RT|M7|V^a5(Zbt7){P~m>#(G+))7B}T#$+L~QYE1&#DYbj)Uk$je!*QUXOI9z zWc8DqL{Mt^&O?ZVxKM`O&*`y)uEQjOsr|jx$E@Smz~4 zkIAR!s29~+9O9}}cy2#HU+RxZ@@o@(vkAauvYel;f0<{110z~eoU&sQcYI+-!LzC;+83Ba=172+U=kqp|9YcQ>!3sVsF4)x_7S-q+1q-$ zg}Yn)Ub?eUQVg^;E_mFjNh?uxV|8ax-5Z9$MLyuB zz*&&E)KeW4k!yLxa>=)zJnu;mjWZR&lN|viS+`lp_TfZFh)$_Ng#*`Jsy4WBhV4US z*nr(DB_P=|0$CV`I*XxE;2hBAM8xw0Ww#K;TVt0*Go_N=0mXm#Uk8Pmb;@#t6 zc=#tmWF~o|9OIaVRR;|dx=1$Gk<(-hTSFOD`^LmXB2?N~%xXsO7mm3V{y1u*M>?L1_TG?gr8 zFs);>B4EDp64<)|p{4#}hOa;oJBU#WG+Z(vR**{81|`|ksI?*B`RHJ@W$cy^lOuUe zGYt93q14+*BLy92+Z3~w>jC9i%Kl!}2P}!+GK3R|F*MLFdSS~R(78Oq+-zc^PRf|a zHJF%0FtZ5nG?62Pn6~|@Am&MI zkpb1Niqfj#gsfd_QTRxhi<<~b-!zJlTuxY4(AVT8KFwBmm&?_2^v2#~*t3@wA)Kzg z9>3N;-rw5vO0O0)d{Hq}-GE%%!^Zc>@ycH7=CHD^o$r@oMriDWsZ_}gXc%gn-AzCC zN-Gv47WV6(1l?EOgc7wHn_A8!UyUA0$Lhzh&P=Fp`gAc)c0 zB=kXfh>i;>gCfuQ{X}ym*#| zc8~k1`hr*A+TA3nT`+)MeJBd0m44Nw%cVJI$9B&pNgXIA4_zp-zn2as0{#XlV$Ft+ zYg=qy#)?B*qz9J`DXY&VhkHuY%vKdOSj&lb9#&f!>+vD%MH8u70?J3>^qXZ0Ej7-b z-qD5NQ#)p>S$U#>LFMj^Qth5NF*-zIwvj_L_8qyv5f8FeDUoYTF1Iwk$fng)C$_!7 z#VZvKSaHbq8hKt+{M0~vOqSVxZrz)$v<%R!zJK|M1)Cn)lbE6&%E^2ihB#@`;S|LQ z#VkJHEhQ=K#{Z`N-74=U4x)dY13u?nGdkRJKQx`4c%=e212G-fZ<1wIcP_dok;}T-4H^moNiF3eX2NM~_a|Bvz%| z7O9@@Icb^zn`7(Z)RJ1#r)y_52auI}mRWI+JbbaVhUSoStV5fo6M4azs4pJVt1&e! zt)G-L3~+0;OES23?Afj|SNY$!!9-;69CmLD75j^BAcc86s-p=%jD|PHYm=*unuL+D zH@T7<(xK8DeY%xM35IE7E=F7}Wceb$3V`|{3 z>V5z$WwUaT)su130q^fal)E(DuhO2f6JyUs&hO1T3uckX1CM5QxjnwrTk(?*pLpxD z`7hdG6Yr(wR|zh)gBy0|_3gXT6GRWTAL%bV)x)kD%%*a=PB_tXo_{P;+8cQ8E_UbI zjc-kk>%rZEyVu*@Ub!wF%iB#)7bWgK`6KjVqiIP!qLB{Adn{%^!wVlWblEhlsNA|! zSD4S(?|J=CIzQlO+a1SjLK_Svn2qZ|Q^H~iuYMhjc-bKv)}L4J1aVs@xSQX@MiYy{ zg46|#NU7i1BQ(7_)IChx7YC)@1XiQ$(mmE>TW2|PDu7xoT3LQk-x()3)IES@18d4Y z95KKvp|h8>*+Gn)lokX!-${4_zRd>>dy47M*W^`)SOf$@6cx2J+r}jfVBw_Ac$#jY7CpgOyP+vPKn=Nwfs|+ zRz=oED_EUAk8|X0mEHY6NCg==+|v!ZqRz>kDxIVZtch(L9fp!6gx)>K1p*rrA75~U z53lw^^Y!xwouh9(XIs3N`|{tz*K~KfYF)p+q@rK=o&fra?g-iYaLcBc=c*zE0Impl zI&SUw8p^Zsy<+!L_x|_+Tv!6sKzs{GDuJcDjJ4%OSJhI9D%IE*ODtknxGi%J%bi)J zESVDtPzZ2Ihwd_lJ$}UbgmEpd8J7w4vkRSvT&S_2&=hiS9*o(OF^`-7Wq!U;VqqmR za!4!$Jh_xf@P#&EAWI^`jkT(%)*-*^yF~0`zxCOOMVp zuyiB205Mp=Mq2b2c9E$Z1A!PJ8Uy2sP=iGxL@FSRdv6sH)!RWqhMimvL@ME8Z4=-} zJBV=KA;}d88xx4_#mov#XdOycPYthT1%o9&@sOh7I>5YoL98Mt@!qr?!ZP%ynnA=Z z5&fbnk0gT)d;=S*i7IH$W+)OXmKSfMLN(0I422nS+rAB1(zwMM zl!m}1?OOn5AiAm;r9crDVY%nF z($_@6c5&d!G$Uh!qZEa&hsXS&5w)*wZOVsOCEQP!)}M&kH$A8uc`JT zBNKQnd5pR!_RtSR3Z*uPL`^J*$A(4(P}?vi8oBhUN$j(8OLj%24L2e|3J~GgL!n(~ zuhHcN+O(-mmh-@EpL6f~lRh~=8aUNvd7!vz_K~+olNfFDa=$9X9|Q;`9Tvttv?|4l zk9?&CO^yK8a(i;N`rXD%Gh`1+x>2)#G{fwXJ5Q;k8A7@)(W!Zow%J9aux{fv(JO-; z39W!XwE8{oqXvt-|9Z3OX_*5~zi!igdi(Y{`^@yr@9FyMMO3Ju?J?Wu$=cycmbryb zmbriJ@`F0h)Kx$Om6zpK!GEWD_UMVpXB`dOYO*Yw{Lj0p`*;RVsiZfOJt<_RAiK$7 zuq)Yjjo<0TDAS$XG1v0Z3g`H9=Y2$q;|J%zIUM$8GIXQ%{Py&*>zUir;Ct@gv-ck? z*ZF2wyP+E9%2X-LQ%%QI)@JxWWP`AI{T_)NQg}-qwEAZc@7+uq`yy}l=xhy5BF)_1 zn{TO{xd*e4TZ41vki&R$wg-Iud#Wbr%9C}HH$PgbxwjHf%pzv3%Lh=)w854z$CQ7T zfO5$>Z3!4S3os!A0%GMHIuJnctd&W*VRrIm*h1Q5mhj?j*u>d4Rf-V8wvGM6P4J*84;zixfRf#%6R9ALjd3exLJmra=rl-V+!!CK1o_gBjOAZ zZz3om5YG{b8AS*hhk%q3=@zB3AplXr9J_F>y&q@!PMt<}45FcV-1 zK})juU>ZKjQerk@*;_apLE2aZF!83!76Q|>#44mJI5b9Pz?NIoZyUnL*59QwG zyg%v(`GY-56jP*RAt@iM6iJ&pckxG$)UCofP?xm>5C@8WP z8c!6*F4Y1Q~RL$BpwwaQE54(h3Isn{LtF^3NtO`jz)ZH zHef;_IFS-k0hmToU&^sOm}>yaDhIU*NLz+ktk^z4fxcZXAdtm}Gxo0Gf0TFWJw7v{3NSWWL%G;3Mj^(cL`?p|tr z8AflVm5L&&_Dc(Krkt@A&!oATS=o@a@Tz*lsB>K>N~xqo;Q*2n+BFaN+`B^#_H^+A zDqD;<>qMn=Ej3+MtXc_PD=U`JTIo3#sxWVEO|7ku22hHWQh>h2S&cWsS?a^&(d~Xd zJ^%c5edyztFKFPssnN(Z{H3-6-mZT5y&cCo`>135SXF-2*#;N$;$F?Q07RK}fE1YS z-fQ*lFn^Y^%`v=ieeWUwEoVs&5^HgxzmE>bF`xqkk8m56%I5v6E|J#G+D3k^tq!lT zk8UnK&e@MLrB9LC=csFSf18NCS??{<+EYw9%{hq>-&T8let-Y_-_wV={;7gnDM>0ge?*LA=I4qoALbSj(IfBjM&eE zQ+b|8KhM>EoXm6ioFmB|g;^JHc|mQ9MKkn`>CFWH>T)KGDRt|zjh$QKS{&A@|Y zQ5vhPM1go1-kqR@Y=(i2jB)-90fn?m$hsSA#TZlB0k#ggjpGAd5mBGXuB&UPs_xl4 zX?yv!)xRUu#v%aJiUFGx=z}@Iotw4=uuNh#alw%Zr6=rJ3s3I~OkD#_%cVlDwPZyR z0ZAB^573v$OmfCkf&{X@hV-=zZ9Mz0gc1hXwn+k067&ZDG!qh!3M3-=;vMz zFVUjv*eEy%fGb_8X?iOS={d3DM^oS^u@+u%{%C^WoJd@+?+L-W9>l^!Jm0*_7m9CXY&1oy8E-A=9NthvBTY6@7Lz8QtX0mwj%s|XgEj*& zDWycL>Z)$r!7JO0(0D1OMno+e{~F-2);6y%%{Wr32^p)>4#HHezF5w zOy=BPy!iV4xJdctN*6ktg2ZuZ$JxDc!SpuX;%e`-fHiMv^3(jKc=#4dNL-^e);gPU z#~lVS`>6xd&5mSjcqc0x^VAzv>YD`6b)jv6-bbM#!TS3Y`*oclLLXdA?1s(sE7Kia#MdYaM~F9~Y&@F%N@o-w1TMS?J$vg`ejJ1$gjW%)Cu04MYAv zol50=Ph}fEq@1=iH)Y*yz@^#u(>%G=PM&7xP!{$AQQ1;L`#G!p9#7ItaukJKOL6qx^qpo0df<4G@|@2%vJ0 z#?9Gg%ZavBVXON2gstPAdT8yyS&W+r7fix*#vMsq+t}{b>v*+}d880E@3P3XxP1#@ zKaJnM;NuV>E+awvU*b%#-?$f_CI0LF}q{H)4_6QdS1vu}}p6^6kAJj`- zNCWMgTi0du#hiQn#1;*BJQq@ws4lQPr}+oDX{mchZI&W#~%TkOuVd8b? zxYAxsj21#0)SmIkj*{8c+uK&y&}-0|hqlQUx_#04qh06^czKs^R5aGAN#oI2yQQhl{yKbbFM)%Pf`F(+(&M#2=oznj`vEq!mR=aYrmo5ytz8!2PQ{t83Dg9>>^xBrFN zQC_aAz2itS@AJ%#()Jkok&NHN)i=`C@!Cctc$|P~BDh9@ZXUqx9{TM#++?goQ(&uT zZP|rGo=YjrR9sK7&UKu=r)e|sTqb<3QAh*GR%_`gp!1uBZTdBuJJCwLg|tl~SKJ)- zrgukaK)Z32Ca|kVY4Nh|C~X$p&Il@$I z|XzyHsCAiKOD6=QiZD)vRioLDNC9(hY#2X`9%#h;j2~zBVR2s=9%B^=`7USz@fl1TzL#+-h|0UfD z6pbb=!DM{-@fRY9lw7DV;Us(nh!7}Bv{*6X*s$Y*fyR|J2UL!n&{?rW!NTUo9+NX$ z9G={H0Kg$(A)uH+!@x0N43EHoq17VY(&8q8HA>VeP^?gnHzq8~Rz$59nT1~ZbewU_ zsG~-l1=GxwH!oa#+WJ6EgIM9dd?}$786&2crMW2871zx>@1P`?U2w@Y|GR3=j6>4h zupq;02k6;juXr!Ka>QY}6cU&tdFicpR%!rdgor0mqox3BcRV1mjoa?Y3j@_^L(_vlyB~9e0dbwE<-1~xw$ek zCuO*vDlgOCo@cLpUNF%;R|q*aP4m5OM@I*CJj|ZuXtPuvpA9_+?6$)SHH1z_KA$QD zdWl6v`6UG@qX#@R%ZUNpX9y2ds|Fe`>;JcR_E*M&xvT%JJF>}xrqllPZ?AG5&Q7;w z_uN()T6w{9EZ)k0d2O~yRtugi%PJnm{=<*iD>M0nuk@?$(Nc+4=(p4ln?+gpj=wk0 zW&A?AzX^xDD-QLUBmON3oy@MHUwZA2$FjfJkzR+|wc<~fWf^ytOFyKt{MOE5Ppy=t r$|JW&-Ntr0t+WSoy$Iv_6k8c%9JrR={P%z54?Fn?h9Ntv01n9wT-eOF literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 b/website/static/odoc/next/odoc.support/fonts/noticia-text-v15-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9b83b0712894271751c61c2129c16baa44222e3a GIT binary patch literal 17356 zcmV(@K-Rx^Pew8T0RR9107J|G4*&oF0Fx*H07Gy90RR9100000000000000000000 z00006U>1vD0E9jWL33OHj-{5+&4h z*Wbc3W9)y zgd&P!qJo)kVb;H5H0J;Np}t~1`u}qMd%*)CA?h>!Jl|ASZO^`!Q_YZdiK6)Q_It~Y zvvvoX3!nf}Sbz)pE5`Ke>o13qB)8g}Zt&>-W3HCDgh!a~)WhKo1LL&yhw=(~(#cu6 z>8sYSA3xhUCV-JbkVa8NMTf$kMYT;)xL&yf01y%u!2iHJOAaG=X#e}1rrh%Tl9jNg z$`T)YBfPis{(s+=HwrshLRr7$>CI_Q;jsf_UIHgs09K-fTdTpgs8KS!RK>_)fF+flgh54Z{cNyETu>deL7FMe@%d zTJfq%SG$xcx<<_ZQcc_UNE~J&`_RQdJwipIhB{99ZS&axDr97Ox~*+1lckHLFPgJ9eVrpoXH4|L&D*Y&DBsf3#Q3 zi4r0#h{{Lw{czU5^u)U-|7T5V5Fkj988Q=T_d&HF7I6R>9}NyjoSgmCzX}rqksQhq z0@+~yGRWB=p0#(p>F(*QW`lYf0lH%Ut{~l(>QmT!$e#N0Aq82;2sT#;(wF^&K*8oL z7&wAM6ahK^hlGNHE*dbu!@vUIV1dQK&u>5kc+MqonO`|`<-(0C_qrj@FWiw3kxN3E zpLw7n^F-lQD%$+S6P*`EX_#{c9SZ}yOy2V&79VVWy!qEh!2G~hAU{F%7d-zHAVeUJ zAfXKwHs1>ojw7O>xbvMbk-|lb5L2$$`BtPjQQ{koH~$rbFP1=@gvJxjfAI95NIP*m zNKQIQbxG1q)*i`6z2y2R+D~~fKxL4+Lo|ECv_|NR(sxYC&N!n9rcO%Tnv!N(x)~Xr zmANq|%e?F^$XQ#IYe}AE`CU=CvdU~tQP)|P0Ez*X0I?RVbOE9aRC!@4=HMzJR6(jK zO6?3<9gO;JXqej6XiHPK&6(KIY*&jtbGxr~>_D4C?LE>la;(#d`A&89O!v^a9v6Ch zi8g>mhr@u!ECH*Jh=YV%GF}e_AC&-&uymq|L5xXK7HPpI!y(6|D33DnsR?K*qzxiE zV){xL{z)0hn8=x{VELnDrDCg^{g;N5mWz(NdY&H!UPiu}_`jJ2SOi&xY7_oq7vT`C zQ~Z-lf?JYDs$S_2J{f-52ILBY@B}04#MlDXu zAm~U&DP|hY!mzR2a=a9tPY_fTCP^Z)m?EhvP0(a?c@0IJsbs0ynmXDTSI5)WH$(+S zp-E(JY>7y%GFx+dSm98*wQ>)sJv5$LuXf%+y^q1SqhG+}GW%Ns9+18bo1aI#W9L2l z{>S0xVIMg9$jJ<7KY{)H#b;Z=ON#qe24ZwOlM)|K|kR9Oi>^Nby64l2w-hS zI{WllzAi##&sCsEJgMgTnNCBS$MSqW$VaE(sqR!V)r-oca;Q;MVf|wL`QYU_Gz^b8 zFT&5C2E-|XMBz&__Nu5Rk5&e$u2j;=hfpIuj{}+iK@iNq#xCvbli4e?>C@9|ET(DW zw0`>Nw0N379XpMDdh2QPlfRz4c{1?CLO(XRAZ`QkfN_v`NcwY0iN&X*XOJR}kx8ln zk)lLPlP<%cg%*h+kSR;HA&Z4WZ~y}Z=MLZ~43;w|_Fj1j1qlO$gN8@o%7vSwbQ%V* z1W>%Bd`p3ifLKrL56W_Aqx59t@CaJ1ykZKnDW#Kvair=+# z)m>jUgLg;#oWJUUp+d9oM!9=ITtF0Fig-wn7a-1KL0v!<>db0trBg)V>T8{=qUY&~ zJ~K1icIOuFZV=4u)n%O<<0?;<-Z%HApsR>#A>IvEdP_&W4YG#67#H-qU1yDLVt82- zT%{s_nF78U+oEW~1C;!N&#)zaUUj5kO<2w&Ze5w071UKSoyT{n)ROUXQ8$UF`}W~{ zbC$m_ILuY4s53(;zdUAAFRx6JK!T;<$-KB#uyH|eWk3Duk)d zW@6ea^}Sgf`|X-Z>>*_qS`m3(Re7K+8C{9J8zDqy3ZLRNd$#DVSPpj~OYRR^TI|=b?9RhQBze zG#;$p@Nx@k6$a6^7RP~>2qoU2sL*owY)|$Mhqu`&-oSDB`;}CxFLZrj^V}*Z)aYTV z8}c=hgVoD`hX@JEfFu}~Rd*ACN1~Mws_OS*ib7mtEMrUzq80@d!(olUg)yR!`L~Qw z_Un4_)&K#N0jz7ABVv(Y?PKnxq8d{TDy2L>wY}f;w?`XMxS>!P$R~snL>xm^3?eu~ zf@7J$RS}&~FsRNnPBy35LJf5S$!;S{x}p=fBI8XVV_LXT04jsy;=8tRl{&%;G$csw zoT^|6>N*M|sPW5TTeeg=1%I2KSeZXTDWXX6&m`8`+({_LKUAi z>b^}xfXEPtWisOmf|S@Bh!QnYeJhlgth;NhiWgN-vC1A98&@*U1ilytVJKUf*EMyl zO4-7CTw)eI0jC^FIBA`d>}7@%e+F95W$QW#tcwP$)C7Ke|GekSjA4<($MdQV8LmGt+5>Qh5B%4$JE1q z#f$>U!`xy*7KM0^=EVd9E;w*T@v}geV`5OYgS`bFs?@W@a&i-Wk=(2qGugGGwYBBi zjl^c-rwAP#~}k=Ku2&IJIv@Tho>>Q{#HDrFv1puFgMqX!IQzy zP~h+_iWMZ2ff7u`_YcJ8p3oz2-&Sgmu_Un%uPE@NZiHIQ7~$P%TmAdTh1>6^kdK9b)xG8-F{{NTVs(#4i@2>{n-{ z9Yba|UlA^y1U%{ULZrbC(5o{IG+ zT|2BTi*3qhxDQCUrP3Nf-3JDVv?QW$ZJd>hW`ddF#ofZmsK!(w^MaE2Ovf~Kdw@r< zWDsu&Ponm_h%#yT$ukGOLaJ_57 z14^@a-m14Caae(Y;4#$qTHxEPS0|=`3^&t$rg6O@Gh}zL&A#lVng)F~#QjX5SCA78 z@zhlc4i}nZ4vs|D(b6l=wSb~E47-*X{7EGV4%=A|5@BJIYe8G@=zmn%A9Ra!?JX*Vc@+LdTM4Eb2A$O0eElxrgBM5QpSX^kne4Z6d6uu2o!cq7Vbsj*;ZF3@G!ph{(!VWm@AfdD|;s&Y= zfaO*Tu=@}D)+CwLW5q0rudtMq{dafcj&3_?$8FZTvZu>-J_Crg^|I6IU1n4bJ0bqdh)8+(+DzS_8xglpZ0{S0`ByBZgzGQLF=25TpGdGN^3-w42H} z=^~ASDrO=SWlL*lW|Tmnrj)^BnVC}93~QRkC1q$Zm_ZcCR03fwP zszhKclYFPLsg9~ZG@7$j0RF^g{-%xYa5$_{ECp_woH+&w%I%r?DJSi3cpR^$Sp|@# z(p4|kQc806n}4_dJ$OH=UN1zN`pL?DG*ed+Mh=x9d1hm6_pTrurmH8(BNx+VqhrhU{=D92< z=Uc3y1sjuFHWg(a_c_fqPuS$9ES!ozP{|A^R=Ln7(!!%zaP==Dj7e5j)(!1<;?(w!`Qaekh)xjIYE~1$KgXwhE zI`jp8OJ@`00@}E0M#;N|D)VURXSf48U<8q?Ix2%D z4sJg|Txwt7W&zLd_Jz#K+|Zm46c9U1B5Wt96D!D(?{32_qsQX#vR^)UW30{pjvxLT z@&8KuXh{7}x%Fy&@*enmq+-5>F8tqC<9V~YFQ2anDtY>P{E&B}RCj)1PJiLkT?AE>v%7{^+8 zm;Go#n>y8VE-uU;uRTP%>2{R%70 z&`RPfpJeV4phl;8MNsP;;vlOz$#{NgMpwbpJp|&*7Y*)HlD$`t{QTa26C$t2y6a4v?I2_;X{+_f%=n0v3;SThN7|1 zw8_m+DbJDVbOaD{dEL;^?~eWn$yaa{RaU!DUlsm8uB)LDl`p8&(B*EyGj?}J-gs%q zGEsS)c=aUh0QhIU`-#AVdAbAZWX-ywrxqYEqFBusKJN&=Rq-vO z4^+k(I?i=vZ>%{=y6$$A_KDzgJ>`bKmV$Vt49g5SfUa)y_$_igUA}X`xKM9-YX*XX zO5A>D3j}AeHEQToZ2jGIpHw$rTA07B>=fzZr)RYPUFcUrtY~H0uKEx8~3 zvz~Z5XkV`8;2L?G-dt+IMVzd4ck$s}02-~qow4my3<|F5x!cjyre}kd^DTY&;p{#Y z{kmI=eHtXD3nQj>T^?hvM%YVD0O{Ab?#(0VJ}T1rh`%j}9r;TzF(ca*<1$b4s)Jgm z4J8XFo%yNG_f4qE#A$klUx8n#X+Aqpu(RX>@wD4fuNi0G>-sCcCQqjqoh%C3`(DNo z@4v9sD(@?(_AOU+4zi^L$KjR`3w(qLH_+xJc-^1iu+C8Oovo)=$IT(G_bW?sS?C^d z*|!5}goXO_gZoB9*>Vq#g6$FEokWUAV#hj$#_lFvKdE7Ra^Tv~)P7t~*r3A4>a)U- z)6Pm*S+vJ>PuhxI$;A5ICFbR*JaECg(Y@Mb%mA0S8uD3q8X_bp19*eKW`v346&ngy zWTo{Wjkv~#t9Gk~X%yFYYU=r4v~XX)6kw}pLV=K}GUGy^8>V_dKzD_pk~`g+E66K< zsCyVb1y5^K?0CPl%mad>rX%@#iZ_G^<#rV=w3~3EUF~{{2vF@o;eZ_k$6HYRFnPmk z(bZz7PWSp($VVS5cyb11UmG5VdC8s&Q`^iHm6x;#KsQV<=j?;ZEjG6nB?f){+K)3s zr()Z=@3?M8hb#qhnw{0F%T=8*FFM&|lFxn90j7jZ?JHru-V>_IL7EwXmHv`=rQD!37&J>SZ(jfcI)Oa9YQ}eEkLIC< zllh0d+|tz4a`4uPK3tFgnSVB@cNDq>zxY`-e%ck=*H*BW$??#|-hpfH!tk!78yhc8 z#5B20`IU7nA;-T7>_%n7gq-7W?Fr_~qo3CWX1mt1%3d~maLWb1V5+q7yDjA)pj+pp z>j&d`k5=*eD5w+4z|}u_!)I~@LIbo8_V+KBdr$XA%mFpwtj1GCT$ zLgo_zl+o|<%6VwHa&-WY9hqgY!!N;hlBX|zzLd}ClT!a0ha>Rtxk_T4D#iT{a*^|lqdr3#;+xaKfMmA=jIqF?Ph0|9Q z4T6;6jg^bN^AD0FzKq|+{b5Nzd=htPe8denxM9W=9lA)s=*& z6*IzOK2bHfQWTsD5rTQ~wIF?3%o*uABgOVo47FS2vg5>|v8Y<&9~e7>|CJ9+H&^M3 zNX7zWs?)ymNih71q=#00t}4aqfn2Xt@cZ=KrBUGVrM&slWMJrwWuZ)A@Oay|f^d3^ zrF2S#NE#i;zpFcdDIDO1$8D%Q5H>CWSW~+#;6eijJh?g~BIzL09brFBAq!74(v(Rs zNE5Y{1E-+9^r;=9$eDTkc&*HkUozX$y(RnfIv6cNk?d&?5TJjO7OWf+$UDQ*MoFSVN zS(wYp*_2=8D@DL0H`-$(`S0qvT`oJY&5Mr~`BdG5H-do9?uYq+8s6HagG ziwfiHM>zsH$0@Iu{j*K6*ayfITtt}*?u=A}11Y%Aa;4frXK#O_IaofbTtF@qPG5v% z$)7#})J$K%DmyH9bW*7Fy{oqJ_jJ>ed(7_)0RvC0_Z}qzYDgk7>>M6oGsoDgYokcr7$>bf`}>UEHj4} zv2%hAY?}8CINt~>Ll?}cDF`lQmjvgq={WWw6Hf)BmMEy-jz<$%3YTp?U-wmb#yIDP zXJ%wd!g$HqiK;Sh{7k{sJ?Q-_4&WCbfSbg$CxZw){og;=gY?I%-SPCt_s8&*8F7SA zla#*QkHift$bpz@7=My$fgWec?cPF$t$z@UnA!7aB?-BJGlTiKaZIz zFl3o{p;TIMjaCuTBAGY$ungXA^3581>! zW*V^Ol*d}hHy5Kk5N(j4^b@-o}sO`f$C-V-YpkA^e1jaAUjR9$}p??ZW+cGG|k+M+eEv5%$ylU|_%$ z9Me={U?qLee-tV<`h-yq5WTY!ujR+k~#9x>{)VXB&^3AIZD(_3yDHT$z z^{HOD7(RR9N#g}h8bR7ZdX{&YZewu0`H+2Aj`WKypvXm>GMECUbgha@%<_s&!{%lL z89ar;z(Qz3tE*8jcL`t$VH2NzQQp+j5q4u9ozAk!?Gw(cq5NR8KrRc5zoy`Z>0PQ| z5>&o!w6kzmXk_vUC*1;&`pJEhU-h1yKKq&@E#ZBW5q)(|x_;2}-2liNBsYW0xpvA{z0B%kH8lzk1UqbaIrk`?*|6Axp%U|zf z%?ezGE1%i;I`(@9X znwm#~;V&L#a;!P=J_q1iyleJF(%Hy_Z!n2?UUl~B$XxAQno2^o!V>$qg=&4SfXVkL zkjAIGR>33)wW7bha9?D3`T#p!#cD#RV1no>V|uCN;5R8hKm!zpW&*8+{npqVx+Km| zug(Ju9H}vm?|w5x6dEb4!IJUS z;R+oq%wLajZ;FQ-(3Q4(yc_lL3H%Iio|0AJn9rikbeWZe{9QoUTL>jKYV+u(B2l`i(llmBG|U*nNec`Io; zzc(JmZ~ETOl8S$(@>kOI{uDwzJ5kT?sF?sW!=r3nMy^uGg$pi4hdh{Xkqu)>H(Q8T zvTY3LY|PbZBchq`Wa@kvd|!Hrcoc9y(c*R_*;WEKprAK;5G(l}q8b;#uXuYGEPa?1 z6@L+etG`~!_B)jCD36NXtZq{~NO#c^8DZ-%+MFd1@Jh4Pbpd={aX_M)S~@ToZ}m&p z2k`h)Yh4?s0%W>kD)lnnOQup`WZDuc^$JLnG4>@7#LGoV56x3iVlWsj2B5sQuU1K? zosj97TjZh_P23oN8SJ3rs4f3yCNd3-RIiDbb2GVr#CH{qd08X@WpJ4XOen0*$*EJ0 z?efVarNC7JdcUZqE_EWJ$k61SB=ShjrVL7p>vGp-XNIa8*4D@I&YqL7jwB4;=yBTaA!OS6(?*$m-6P+H)$>#2MUo{C$UZ=Cn$S?XD<$%0GGKGO3cNA6Ftd+$+rlF zTbhGQ}$ktU_WB>Z_bxm%;EH7#zt zuwn*Y$^1}wdr6X0ke?iR!S(X}-P`eUHCzQ*4x0Vg{9z}aL;2`VYQYD$pi_50vTCVU7bdsbsn5?bQZb#$6;;%&RwZL%K`joBQzd{rv0eGj-UAA5SgYN$! zUQK}Al-#dLr%LxKh6#|mqB@yh8aWrr2U=e@pVhbHA7|!8*`?mEv)`|D;Dl)4zjGg~ zZY@3Kl|mJ%6Fb#e91)`=Nu(p@Ekx>zTBLy=-SrK5VcA8}^}e;L2K=fYUeR`G_Y2N+ z2pxSm8u)paEdztizXHb932{~8k{1&1TH)!nA&P3FyFeIUCYJl{&5xeD-Y2P61$Ljdh`4e;J<;C-C23Y{Xmot3 zTN-334%!Mdp$d$vx{9`i<$S!MFrl3>*be2M3hROZc}y0{wdrq+`X2MP66(*hg?i zh9|;mILA{mJA$DSaebL?Nnpyorr#&fX7|CE6b;KeB#lUIml}LtR927@+eR}fsojeB z;>b>xGA7Sc5Km5DfY7DRAJ6z0vKdnfS2)%NC`?Q#wKI1(*YtY|%YBfzr4|r%>=ZC% z0?D{IW6khjVnYNGD4PQ5kx!Z`+n$rFq#uMfKCH& zLnq0!Z4nLb6D#T{VkbU2MN{KR$>KIyUR5c_`_7H)8HMX<@76O8`QGeI;C1R5kJ`%H z7`Wrhli40ilG*TvszOfBThEvAxUB+M{WQRZ)p;B2z6~d3P6ebibh8(3+s{)PzbAt9 zB!bj*iL{@5qPZXktl#`X@cEgs2F7%J6iSK-G|niOPWMaG+MY(R5*v z8Jx?#M@}Mnw`~Vt^<6mpu%)ZeT@CYE9=f;r?P`-pXU#>AG_vS*?%09$xr_kmIjMz~ zI1|==(0kZ@@L!xvP!Vml?SyN}DmE(>c(+mXF%23kDs!)R&R(@#71RsrQ$3W)Bo-+) z+C#}^V%z-p7nBc$=w!VV?Hwyxwl9(R`(|c-$uA-E=0sk@uWVdRQud*ht1>(~V+EpG z0GxB?OcQ(ZpRNBY(@D1EHMKJx8lz*WLHxq`8ZdgQRD)kFj8a&n67uiq7RHn zo$=x+`#Zj+QhUP6w`t#W*q}fe-YqjVGdkN;P*Hr|es6?D1ZQ6O4X##-dKwDMu|^h> z9_%ebEc;`n^SIOjZn(!gimR<4xXHF*3bwwuXz1}UmK)M3d?c}!`MH=mJ}~gT7Hg`g77Y$!xBKKc77!0 zyxjU28SFNs=RsuEgfnN^`TzU-05=}jU7K%TTII3{Y0@s3ld&R5caDLY1d*MgYWR7l zEpL83>YS8bh)a)5$Y;vtiT+E1JKO(FP{~s}iz(59I29+&lapM^;-vv2=yJEC=yLV> z_TjyTif{}1o4>ptgz1jLbORu!@YPdxa}$+kGe|UT3Gz`g5+mb;Ki_TiMZKRUBrrc8 zIr@_O;|60Oa{!rME^nWCkT+eS2)Onjv8v10k5_+2(2l(y%BKPhqEAcj83udq$tS<( zo!)+WQ9kD}vkB9cN1hbvman~WW%o1cG%B5iW<}n;uB-aE8QZhwNwimpA;D6&V>xH$ zaB_+H!AbJlKn+mma-i;HpqBN9MS;!N&OXt0wkG3g)ME}z)d5Lv?*IlCu5deA zPT6|;kGv(7TEc&$nV#twXLeVe<|0WlH(tnYlm*)fw6YFoHuOZQ;!|DJuyN6;Dvxr; zt^094!#;7t$HPnN^T`f=R!8nr65vXFKbf)ihSzE@YY~9`Z9lnRiHF~cedK6Bwil6U zpIve_s{%p+hbz_*XVV+xA|xDm-BkyH&eXx`>0G-0YYK@&H-Z_Y3{MS-4}zfL8i`y3 z3k>tr9nn%ks75e{l<#RIi9j6Qe49YF!aPn-_HWMesp7{nOZ^v&w-)z~k7T)oaxz_( z_HJmi3d)~zkKy}PmoMDH5A*O&H7heH1*{s{QT&zbsU202{QTskQCoo<;i(&i9;Wco zaZvGfCYzvH)?jYhWjWr9!Jm5G6Ch=v;O8Dkl=CeBjau{KiNUU5pqb< z=`IgCAGQ4ccHM5|Wd$}UwvZy_dFP4Fq~uArx3z7T=H(SotEJmR(A`>)+nW7!V&Z95 zYb!!jXFX-I$fIv|tA3Slx3auk+3mY3cQTBNUcspl-uEu#x84&?p4rYrg zB_UdU#Bt7b394(=3Rv`65xVPRmk8Z>_axUDzxUR-cZ|Cn$27zzIlgiWV`Yd$8LY6d z1#W6qMhLpEZK3pV#!VveCL^4_xFD7>6&o+z1U_s%Fnqut=-55;X%x-om7YYg^kyK@I3b-KkpYBG9Qm>J-qGQqJo}Zx z!AT5=AF}%Q^*q8sn2QWRY>r}Q^};UW_jBYK09(M$irTPt#ev}i@P`AGyS-4HXG>2d zNVaN_`c}CD?nY1OY7!7HMVmzBynqz<2sR(pbGf-}!DjO|3jV{oy~DED=u$v*O$c%% zy)#DJF%A8C!_6cQf(u+CvwxrRVWM`0v@UB@V9~(qZu)HSMrv z#Q^fvswV#wex#D*!{mb(mFWY%Mjlt`?#mK@mq1>%4954DvVi>?_DxvTisQ*}zPHpL zRWQ6^d_iT|-`L0aZzD#x*aDWyp*!_fkD#O(`m*N)jI+v9es2EI6A@!+zNm z$xDS%9h|-Le3Z9kL~r_U`?;bzZ`B!@n>XY6ctoiv|0*4Od&9nsQL)jLjDkmW?7kms<2Nm-bd=Z@<`eCjN~T!=Y8BmVA2!Nqi>Gi zJ)9G?7?p<=Aya`itIIHdDUqFkS^l8^pJUa5OHtWE#6K@Z@1OW&!Y-|@Cdv7QAL$9u z2VDI5Uv%kP8L5Cn@H}%yzM~7&9P%pW4qZCDBrzopAC;d=tZ%ml-_|;;F#p0jJI6m%@2G_6sNyO-gpZ6O@7&+pl?G)~IER{PYa z)?+NC@WgPdT$)1<4^_Ala4B=MnuCkv$@#vG;yfooSDCXjYyZoQXSa^v6G|48tsTiB zxH#{h+H~sh2%eu#-A}j8ix5n+6 zUBWiI_zZF1VV3yL*x|e4f8QNveNP;#y>TuSef$)KU83+q6wY_rzu2*}^(Y*cy@~Jg zx^~+MyY^%!-o7L1d}lI!SJwLOjIBKxmOu@(E07QcGEad>!|@CcUYPcZpY)AG)_*7e z{4r;8xoW;?N5`%V6M)FQYE;u6pjs2ZgT>auiX`TZA1YRdyQ)!(VjSs99H9dOFo-$n z1DPg!zz}Hmhi)^}gjttaYFS7XFVij3grx^35C||p#moZ{t-%3u`DQ0bKf8Q^2ov<4 zYqrVHEw_kmsg~3*J_HUNq%MOsi^*_-pIL8DkQe9BEH@0wGAo3k+ld=> zYF2{GYzZjadqdlNN69xh(99Z>;D!_+7Yb!k0Wk%^e7#|I_w*ffDuDnX{z6b3Qa6R? znhUEda9V1i6;h`-3|EFX|1eWuw;tlAWEPoc7wEhqNYfI+nb8Yujx{&aPCBwC4mN1A zoQm`mpLv`!VDOHnWhu543`Q~XncXiM8sAvo%VPHTNAi%-J?7qI$Jk(GqPgdQAAps( z5F#5q5)S~IlIYg(@Lc;HSsEXh@_nc)M-t{C9_DUPjNgHUxcKP7IKJFRLhDm^)9R0XKUKnZ^dhJjSoLQ=25+|(V zn$AK8h+cc})`#FGLQ8@H4h0;efW$@8=4n=cOxBM1$2#5E#$GJKk)inw`Z~l6ryS0u zgX81uB~~auEJGK8A*{Et5fXPh(I~22256?paP|bCAX-UF3LQCg;aQvTnr~~1Jm!RX zz~*F}=wJ&VvP?E269e3BA+$Po*|ZvvSGZuZR%mWy3KJC4tCYh;-YGeCtm&?DSKU#N za1FQ(Y!?Get=Lk*&HYYOSY|;Asqm#`2tX1Jdy+09 ztheHpg`_FGOda&75Qi9G6lE-#G5Z9g5{dVTAgpviB;i}r(jtoz=75<>TVmjF!=Z?O<%P%l?ZNGO9?MBg{_>&TpUmo5KbUm zf>?mnx`(AuFV-S8NSaCk`OL;8$15WV+QsQ0Q>1w`NVKsfECzTXouy%bZ4?A7)+!v+ z?9lktVXQ1@8B7GS-Ju`jJSeVr{dM89P3&s%P4aP` zyP3ukj0)gv^zAr4-FSKk=hlp;8@DwS!#c0m>t-gK-ql}Fty;6Zwcl?m8kmt|(C_r; zk6xaX?w!v(>KrZHlUd!r-7~uCT~l^FGgaA_S&OUXdk~JycS4WiI@UEbX2uh z)v>L>I@}scM4{T{uVWRK`EPO7smivynJ$TWT7Oy(ZqAX73?ic7G+&5@U9A8?y$01* z;krJ$#zBGjj2Z+I|5dZo>Q3*Q$uj+Qh@sPBE=S8FdM7BrU4 zV-Uh3frBZ_t4t2)Q2?RN2(E73qwJQt9SaNB0*8(`P@|-_cHT}(8Z;!<4ncm8@2CG1 zhU~!GvgX#fe2Hm2Yh{H=IeiIjCCK$ngaPZ^% z9)g?mrLV+Hkn$?u*jtZq%ibY}<}NUr$BM)JGvE^b5tZ6a-JX{EiO;PEt-qlrNmCHu zStbXhf_Qz<6u|EH7b5|C`0}=BxUs_him5W7OJJ$XmhnMCc{(dJz^vLkQk={*51K?@j&X9?g1`@rrXcHS{N4%F`;?0Hh8XeuD8K_vb0<%^q5}?`$25r z%qh%S!};<8(-Rw`+o>KN`~Aqr5ZZ8173-NI_8qxV7O(G@*;b2O^^ zrz?lN)BGmr^P3N}GeYlBJtCpt$46DxS8Lq6G`%rL1Z-%ij8xnwL=y5*NGAwuz4+Ojt-mEVNQrDBG-bpnk81O zVx3bnDY$6HPpwbrvqPL(w}dSpG2xT>D}b4Q9l#s$4c@~&ZzQY)_nRgE7>{51*J$r< zeBpHJVjU^-ha4nc;vW7VmhxkG2@N|+F%!TpfdHgG|?scuQN)e`@v-l}p>I;{+fW2TFu4SXa zO|;9myqe(SafgiA<0CXubU^pQabyTo+g@j=rt0HFTzUy-Dvfg+vcb`mkpo6d(fS3o z^I2%UwN@UFj<*IZGrV~0v5Pab8wK(U9Y2EZY^XrKpbzF%E(nM=L6h`M&?Jf5PHrP} z=>Ut4!53OTIU3dt4n1i%oX>s6oKKfgD!HJoIaYgO@fU8NZ*vPy)&?K(ku;a>k*yvv zjmguv?Yyu7<*#}3ra$}I=$)Sq=%fF-j?cQd7FtZ(QL%=S#TKfw#(=O1pTnh^SLYIH zCX>~94Ad4WmjfbhGkSU5uH0%5Yed7$I5D>_qJVBG0QB%TcyfQ`j%{_Xr!l?4--nUm^T)891#z5>R`w3Xfm((znZB zCQ^RqSu7t;a@2>S-Xc_a>)0U2Ak$`h8bYVf5Ep(X5-FqhDPhFH@ip?Cp%n4G389xt z7KCeeN6#q^V(B17(hOZKHUjLirM8d$Rwv0Bb}2&FdOf?iA_wDL*Jt++ayw~2XBXZt z&1ptwc9Wj#N_L=iRd1t_8yI^gG^V1Q&-ko#ceH@^B#aK8>5kE*uk5g%jKSSEKa8+o z!_md7rf%7p;Kc7ZET>@qNM&^0+fYxOx>qHoVHps4?0GlLESZb_2ED1Wqfog$?f|J(+ULKk;Q7I56RY(YUboH+ zDWq>pIs=ygrqjC19<4*;##JEg{zPA+>b%8-i#Qw}!l)B1v(}WS+LEiFO|pxi5iW@k z3JJrBtx`aQo>+<)?8nSidG1*FC2_j5{&`^k$B!>uPx_~S?SHJtHbWrzZMBVpK=}Po z=P&=S_wRc7dL3IZwjct)!{LD2oS58+7)5ne`p+dNAkg zIq-&iXZAYK?&CQkwu%F68v*0}qm6CsvxR*%q4yW4@GHl)WO004HWmTj)_{&=?A`;~ zE~t%$Fh`M&z9DMuZ|r_G&vqR9u7l1Ni}SgQmFQwu8p&3v^~qRfNbP9*vqVFT5@#u1 zyNb$ZM%EI-G8B~L|btr=IaX8UYz+nnIQcZg%9I9qO8tK z>VFBkN_(F^FewhTIYz3(7`Qhy7Jlu6D4Bl7RH-FvfiYcb^&MQ}QT(YPUzVs4BM{X2 z*Z@6d4+jXmFL2Blh}A-hNu(5kYAG1B&sk-8?R5FomN1Ty{*lt`u=^}M4NubJC`wI<2g!fqeI|v^jQ2C9z}*xyi7ymhct96WV|O6yycDfAoWDOReQNe8^5ttIVO)?Ck`MiH$MY;_>$ zI;8VUome?r;}M+$NMEaY;mhtNfGzXOa1Y}0@z1;z z1}3Q#(xu5Dg)ejrOe}2PeE9O?FF>Hzy$`_=DonTt+)tYQ4JJmcWC;e`hXKIyVh?VE z^&HR?v#3R7J6dVs^apLi0$__iod?UJahCQT5uQ6M~ z0kYLz`y6!0S^FJuPIoxkI6)?z2&fIr25y6}K|+ps-+z5*rjLErlQ z&C}*@N9>U6k_&dqlkbYl3S4xQ^k`y8k zZ1pE$H)IRh8v$&6ZT4dAiUA+O#)NqjF_3LJgv-z*1i2NRPlZe%W`qGGaq#i7oO>su+!6O6d z?tmV`lSsh8^pI*nD8o$;MRLKRpn7OmJb-Z0!_Yij0C-IR7L9;9m2gmwsI34&x12nvFqSb~613xiGo5~*MTHUcCAhZqDP1%q4%g&_=r zX&d>fSH#_SisW_xhE$bp7>Nir4oJX|jgbgp;{cHDzo6{@|NoPc${5-NND4X}s{0Kw zJ4~{Nak$6U_s_ttnI;2vgDs6r(sjVsp`zYWFIZ=tY~l*jdBZblGKWg8uOW*>xAG@; zCjRKx$c{^ey9)nMsG848qS7bC{tvV5HdCnJlyRL`d=?muLLK0xNOZwlaf|G53yi11 zY_Q2yZ~IZj4I*zX)lBAg9cHuL46}7K+auXKsoFb2W1pm7^3eZ&|GH<+-1{Iz5&%_F zL|h(0bw$M&B`P3QTlJ0X8GyMtN*K9F7%R3h#>f#hV9BV#lBkX75jj$%LTN!U5yeQr zK&3>FeFY2*42uNqPH(!$`;4+|LCZU|bTqES{d0wO8GLX7(&L zL}#*4IE%9A(}JXM+?H=Y9m@#r!bq-mdGv3Y>xa37uO2w{aCp-}w$;Xhm`F-Ul%Ak{ zSlk))RiR5n+ug?)kOa1~wB2w1e zPMeWL+ZA9ZhFtBR*Y(G1R}1LQxOCEr#D0+TlP^E8omSjhr(7GDXKbT%LYRjj5|iw| zb`Q97$N7RtT+*t6d`|ZKH(R7)VoR;MGV}+My%QzbnYb2p84i2I`$R0{do@WPw28@Z z)oWXVBohIudp@XZC3jnaO})iTA}=P>(`i9XBACD5=X`y3c7TNiy+H~2X;uMY8{3F= z3O}UKx%)-+i`spEPd{kkJ>q~dz5TtZX8RX}tp(-LfR`e55yU0RsZMn)YP%@Y|L-q| z9~R_dL7jjFI9dc9^BGt`9uTBF1TT@7awL>8c!{DTNk>|aAvLX=+FhGcQFrc4fh<#6 zDjgSqI$Z#5K+VWKbE~W(JE2`XgoUxd)=+pQ5C@+BSG8>KBS88?8l6LGbZptV46$;( zo8^$ZhWsBC!UH%QfRo4x616F6oPt2^>=A*{Y)D$CTyIhBaTQBf?!1jD|CeA9Tmx-1 zMUdc|e~o*8u3m`BZqJq~93n(ADGZZB^Xh*+WomNLA1nWo1l<{Jldv3Yu<^R{!0>&{ z0>B&=oyMbg6=VVQXaleuSdZM7SJeR}5|)}bik_rMRlC$*?=87x!mwVAie!qNW8wHP zImXOj;8`G{pt3?^&4xV(4BCi&%>op1jM@P)r@lvO)p5=8>W%C=E*mHH(QT&|4A`A= zNNMcEbb$4n+s~YF#C2dmW3#MLu~!&U%K*0q#GobRmb_JeY&!0&XqH`f(t_h@(+QS0@!xskwAlAS6w0|TgpeyOL@wKt`n*iGZJfev)UwM;Q0`P@@ z2iM#1bP!crs>5FlM>WDUNRq3^eU00G$l0McLSGpGT>{+l5qMvQ9= z)L%@1fk1#k3jym-P;fAa!Xf(u0tyluifPfz`kg5ZGuUF_`i(g}ECL*2@htik0SOVg z7AXCK#1a{`6juGr5)Bod6`Ru7_7iJ%=fFYJ8b;6PH6auv(ts@DKj9-Oc2P%J>0J^{$g4#0$vj}SoX~z-DC8|f(wbYOTV>c} zcBg9QkmZ!!OHNa_T#r021$`?ld=&XA?vJ|UPYmT{_3<{p5RihZA>A(w5u;JFPs|dx zC7dSRUMWx7Z$_<0R$Wd*Ub6+QZbg6+uw_t}3Ro4Q25lYI(tv9s+Cp|}qX1|irVzFR zjDz5d5}Gg~oK%9`KvGatG_4H1j%DaD%du*BHi1LrR?@4I^(h8b4J$Mwx-r9~rfHdF zrfXi?vc$3CTI<=gZ(B65Gqmr>p-*E+6DL#W&RqI1ceQZq(xZ1PPiwDkynD0tvGcX} z>%qUh)5ICq&6@973k}X$^q(8%-0FF^>s_$qqC36hZk@~Sx#GU7mixa4wXS*Sx<{S& zxWToCU|h=h)$D}@l@|Na58!B+8-I8QD^@hCiI zdq=$cdvqkg|L^m*r?W;cb>es^1$SaWs{vYix7^=5)lO!9+^2)c5IlT zBd}nFgvJ&Ijx~FZ7#yTXmTH$Y{w})YGO$%Z4CvAW0i#ccHXuVrjG2JqfkQw+Lffdv zfMI)O*lmyf_UV-eQ>ypwSkknpA4mqSb^a+N`$LI_AM@@DOz7@NIw!4@pPR#6zQV1eF}ktfTzh@V)5v{Vd|w`38;rHoAPn{TmM$=Jvh5 zys&~Zl|G-mtF}Cpib-uq9PpAqCr^Gx#fIF&K<|H9qfG47B4Y?=8YK}9vHCg8L-UfT zdKldsZCCNT>gd?yWTd%+Y3H4}e)dNK{ko+)NARY8pzmfaZ}G!x{{h%;^1Xvf4$JeZ zN$pP6vPXPyL;3ScqQ=9F-k;mhkcfIY0%*|a|G)!afzQS7KORc~);$LRHhlwt{1PC( z2RP$9&>^Bpyi_x{FS%Ae(x}|Z!!=D>{5CXYtJP4hSrgc?x-Krl@DV}#nhVQSxQ^C> z<~!L%h^Xpry@p|Qjy9|SoU;xuhjf|4)6=3|&22--mm&K`En1n@!zJ`qYaeDyVf)|mSC!&xvUkZ76->+)&pVXMyRmpVcB=Da$$ z!U_QEwy}AACx;bJisT<;Ob7xL=mx*U1@^!He({pukQ4dvL8;nW+Lr(CICNDRLe&0@zum6z3u)M3HspFn4EYMRLJN$nfho1w9M6BZ zKq-Ccx1aL61Sie%Pb_Qpw$4gDin289+%$gMO=a~pTTxQTGsP7UAD+r>1Kb{s$zT?xB9MF@wOT}xtB}ix z^d5+$oko#?X!(BG0igBhrA8zZIm&=07SjvZrN-`-6>}VH^3zWl$c$3}(49HCT5ndR=$27&_srh61uq$_3uR?DfbXyOzyiaCnyntRy-V5NAr z+p);lFrcW@D@Kg&fbKg4^B)xY%CZ~D)#YbAZA3>9i%G|_QcPo7MPX>R4&b`|#cW?F zoeThNC~4p?gUa{Sn2~41jlESv)LPGwAgfJ9qs5lCMkEZ%@Wha3bY7*A8-dwAF;ADF zCRf52^+p<37VM0=`X)tMm~xk97D*q7*;H<{Je*WRw2rV=E3X&roqa*l4sp@gP-u%& z6PhB5B}lAY_YJ|7GL%uB8EQFL5qVttH-SA1VmMaD2t>`x@nwYGaCRlEO1FAKq_?KD zd%z^hZ@9vlvgs-0=?w`z9SXJ9BU4ux3o;e{A=`tFgiQmxgq|k1OC%ruH*4cK9=eO? z<{20z$-f?q*Jh3h1&{6x(0Z3rEwR@|L8&iqjG#hXYCg%34|bV!Jog#PTkGGStT}w* z6xJ1kfjHKsrsIW<=n(_Mq|w7x7^WdKr9ZM!DTU67(l;6#ttgVHBwA}K^5w)4m3wyt z$!n!{*j)PAQo+iuoeEJnGc~g2?I6YSy>xPsrsM9HfusuYB!fL^gTWMmTb*!-Q5vw; z$b;Ki&2*f(uAY#1ft;su4vu>|nf`Z*kVLg>*t@E|)P2J=IH8C0MDLVfMZ$ldAWcz7 zH=A1P>3E4WHCvZxAa${KDyf!ZHA?!Ldtw~9J;w%UJqoTgcxh~>Mj-;ksHJ|+Le;Jy zrr>)Fh9^Ssom!5SRFeScq@j}fn8^?s4M7c$Y{WwxMS||~60GK}z>p!S6$z?Tp}?UC znTuzcIvA8iAKP1^b0}PxA2KV2rXL(bs?rsx3_wOQ458S90{v=S*kMpy(dj!7IXOgC z#!uk2)}hQ>DPQ%RD+AbQhT|^zA4V62bUxQ;%DSUYIB> znB8jkisCN0zjGf99PGrs4BVkkpi@Y&&^1EAlCoE1yH@v_TdBBk@U*=wYi19T0$8YI z1Y~*%w222Rx|p7Rjvfu(xxeeGAK=U?5G!(VkRk)eXKx&FFhgC)*-;rVd0K^*_o9s# zQm)U~ox&ciN7lW)j9j+J=K6sCqq!4D9D*yenVaV5Zb69zXhG0!Ng+m_U5&w%3q3X; zxH+HGJ9@3AvOsvZSG;&(L~sHwXZzPv+Z|5)w@}CTb^VD=%|IbWc1X&yiI!e8!OP!{ zHYxA&__iu-M(eQZs6}T%C`F`Tn4c8Rm|Icb6p_D75W?a~_pEug3YgdI5k&G9qykO} zM=w^@_n&c{f<@2|o8sI3+_S}s)NU2K zJi3+>tkx?X52A8qOZ+TM92nx{pr}u4vz|r{RfbN(gmaFp zUZtpE0LmjESR~NF5jJJwX}4rqv_z4D)iwp;-Kvs%jw%YsGEq88k;FQSmazKnX9G4; zsDpYCk9I5$wVL74kJdw74VsDXwxl+RSY9HZRws@{z9?Y9S>YHzt~bpvu?CBkBWhd} zv*yV`&ELg62c4gBrRpA^5x18TCM8QJ%URhSJx0(ZNayaLNg?(nPJxgp!359OleFy+ zdTKT)th$x744WGx&^Ert56Mq}aeQwdDCB_>dpCH{FbH&VE>2Q(C)PO<64^=+?Y|C5 zloW2lEg*v69lVXyh9p%D5mpb1F7s8AQi7o4%8r?c4LZ?iwn2kb&467NDg*!}Ov1LO zc28Z185chso>Ln*RK2DkPRjQoiMnI8uH|JmZ8PKZlH|0|DI0JIjxMjhZLgzZ(5ZGt zqu{x};M6K%5Oy;g68(zjh4;KSUbr%CH0saYL-KpXD*er9!LYJBlC+qtbqzm zd~{%B63D%8fp2JV!L_2;QK4sC8DUVbtzB&&`Nq2=BX(k7Hga;Lh|1)%(tMM>_YOM0 zN(u4Q$uk`dZ;FmY^A}$vsQY)>i&9ts!Y%&4>eur+RNV&G*dq`cNY+nl7``V;x<)e zAC9Z)Y&0-p-*C1ZoN1QHxj^t)t5_Jxaww~J8vkd5^ODjB46PiO?@*JcvhhF63PVU5 zNAc+L;LK>ZY#*`tLly7LJMB9)$n5!b&ADkes~dWy9IPD|5y6Gm;>%+FuA0VE8Bl@?^O})DYId$^Gb`G)X^a+F1o2@&~CT&$8-uF8f`C`LBkr z^?I=G4I12G5?r6nxit%(Y7Q7X$y^zPZ^cg`BZ(kM5>J8Ot}WGP2w>?{m?&7xp>S%f~S!$RPu?SnwgCB^ovAc z)|?sG6M>a$`jdqbD&i7Dmu^?6)2dEXbHn!N!U#S>^Dz6fLy|l4OE0g{27*lA;A}oK@hvVMCMd8% zQTn%+Jh8N<8f$K7y%*;!jv@^mpwa z;F~%2w`SdS2lbc_SoMfls*cR%beIT4dG zvU_|+OtKQ5fQFYv>5pH(hSSO7dEdA_MMp~OZ>67XA}XyJUN=Wt-v$aB1Ek0Bm8Ecnj1W2kty6IPdYMua$4gu?6;&h6bEgPWzB3d z>p_eYk}X${kEZ$gi<^ho(mmAOYTJq;OE-~w1`)pW{Q3Veu;1SQFMWKz6bt<2?N_sR zU}Bx7tBUBhfp9XjczEAvS9s9zdPfg|dlJ?Ytv>ztU<7qisc?Q#?qv9Yxuu7TX6IzcoQ*vBnJY zPk5u6fQbEJ3CB*a+>bT+;omEWQj|@hSC#yHw z{@-?f$VCO6vZ$VHN4dh`l_4faGcHXIe?*R+UzI2;CnhxB8CRF?ovOeGLpx*d6%oB! zE7o=I+lqt6w+Tq;P;kB^ZL{tz?rV>N0ApLH9FokH|E(LQ?nLOiHO8^DhA|H3PAmk@ zn7a*6n2Sw9c{x>3Z~_N3;~k%><+iFAcVfVh{PPPS3onq#h}Qy)F&8I7`CG9X3euv2 zKxZ}|14B21jJv3HP^gl>-@cp4gDMpegydYr_XF3OJ&VmlEvgf`u$%}%JSGHPz*870 zE{8z!xgbalS5>_esf;oS+Q;21Gl42&p~`6E7Y?Au_Aw0E<%XGXH;PY16(Z@d?-vf} zEho-+os5esD#qy)eF8a-3{8w`-!H{jLhj0mk{iR$_K*E%GwTVg^&j}-Y%#`8hf2Aj z;;9rk%G&vIOe*uyIXZK9yq+<^!-$~N^WJUEl@fFJBh)~dlQ}2XA58TVSp6Sxw@@cX z$H21AY_HaQD4t3|AZca6>ejIvX`Kwen9%HO5}_m>DvXB`O82J_mQUUs3Td)wGq*mN zc&d%)RkVsBi$4(EAAi2lG; zIJv9vMj8>N9-UV4)8>5B{!EW(DzezbJ8ZyKZ4>SEwV`hQ!?WE^NzkileFSL6f6$Ee zgbd>XnwEyKb+9!TdOPPp8MHi1gB7mdys!mzj2R?(RTKN+ss5u}W2w~G?k(KiuqiKh ztJn&c1#9aon11=-GD!aQdiuworsyW*@SI5ot8iOYOTYj58etYHW)YRb%3Pb=(xI!& zz?juu=rLWmu;YfUv3*u!Vi2$55Ube|;c7(Zw3~iSTvq&Y|K-jjLs}NC z=IvJh5=i_<<0QMHO-=oYHL$h3{{PPKf$E~EWIHkJSx0Q7CE>>wqp+#VILf>$!3+Dq zX%5AG4Lw`Xq^I2&_-7~xz5?B2(D;mL6f@J63zKHr7t+m6^Ly(+@6BE_E(Bysf{cxx zRk?t$v*T&Fm2r?uESU>_@fe&M#WssLZxsw0pZ;o8LO68pKXnH&@AHMq{YSamt#dT} z$4S+`qvb<@y;7ee?S^Rm6(( zno5Qvtw$^9qs(A!(M*w5ZZLZx-%P+dY;mEPekVwyqZmUX;j%c+sMMnOqmRmALDrG8_T%`?qi~<6a+%z)6uZ@*{9)aafjtQl~aTXcZ7_@I6PyKU+!O#HIY?| zOxQ>`u|6dKRTfF?%6g_N9WvYtHY-vcwdvMZB%8q)@#f0iX&g|ES#Pn-gt3w z{6>&X_*zAdx-ui9y*@R#sNCgovRajG$t4HX#>Yk_heu|XBrU;XFS)Sr8hN^2(@R+p zX2FiZrka6{df#F&7ZoQbW}n|9KzGknqCA#9otyd(^(QLDQ<*)jZ4;>9T;QwYh?&sh zKJ990brl_5xY}oa_T&9C3oGF7hqBApc9gL4%wh7gJ-2c*%GQ;Hg3s(PYUovYm19>4 zZmxM=o}1m%qFFO<8*La-@YzqBepQ?Lw(Iytrey2QiyO_)Km2&<`W_xac@9LK*HSkG>au9SnxI1`^tp!Diz^A6YkG-3=Dx|C#p{nyM|WDm?tB*<(55isgavHX7-3ti)I(n$AE04AQgzp>l{#Z*9zJ=rMJHMX}2Bs?; z!)5|44OgTa?MjjaTXJ*QyNXqVE=tV>;myKJWo}7St#Rf0DvhY6uXE=3Po#Pb`#_wN z08=32v_2Let@&nKch)$;2%_{?A&?+o9{@g2M;X?oqVH9If|%aZ!$Z(_^FC~p-8%4v z_6bZowq`rB!{=Y+z^Pv+e#HXu&kJgE|JRKAULU^6YM4#tlYhAK4sLbzxgzM5ZNOVB ztH&z}`L^Un!|0)TK2?enn9k61RI_Ho-i=9dos5}^^}dG1kN1pSul&ks9M+8(8;pC} zT1Gz=*rrsbG1IU!9Y&$S=+lu`?@ahH!~|PbG}%oIsxgQ$h&Ij+oGEVKAx>cyql|L7 zx>^`Q5IoR^8{m|S9Z0KYU1(~#?$?n%vO(}0hwav)Bjfu>DSpl=9CvsWLoSVafrdIH_O!&^;@@-&qf z;<;h0Ys|#DWYuCLI_*VJ*bouelmWjjSuqLlwNEON9na3~?<3vwrD3}vcw{-=fF}IH zEZkW$v9rw%edcYnl^?AmADtPOw6e{~bT$MFL-nJuum?K=18O|~WdF_f46F&vgOwk{ zTK*$za35*I-E7i>5GopTq1d+y#eW3km;`>*4fomN$@QfdJGj^gf#(qC72AcsBcWcR zL2s#>-0hxsed(Cr$pf8j^9Z~Wrh>0Uv_he@ZrC`s9d+^0CtiF$BpzC%BU`pY zO#<1^esIXsM_H05%7JetpH9XC@un8FKoFX$$9wOlLn^OeV^xW9f$iY=ic9Gl5ukW* za8Ph=$VrRs_;XX`u?j&yXsY5QSAz$X8vGo%qigGZ2WSHa=tV5ogX1ps*nimIvx2Q3 zFck0QM0m9x>BQ%yF)!O8Ls)NzO+JXj*1%elEko?ADi$F~hw@HI*%_@-)?$fqdc5w9P%I7s5Fc*fNiW z!hu7Pg}KAboP5`9NiiL~d!@a@K?yc-X#a}9V)U=#@6=4^Hn}Jr?`-1_+3-6@dv+hB zCcHS7Q7@CFTe{H%kUhV*YE18etd3k~UR#y}fHoAiNxXJ(-@HYW_YPQ^!$z2;`JJYB ztZVO@G_4(3f{Mldj?Ondy|A7({X8ChxD%_V3Om@-p*{l2u}3ZWO^1e_H1DimKng&##51aClgRZ3%(v zhrn8~?$<`Ktvj|ccndbvt#A+i(hv9^24=&Gu(#KLsYSR+_^0Q{Ek#RU{^R@5FBe}Y zt|5M&_ewGr>|y5PIlFDPr^FVyp3JG)%PSa&(tJrh!;8xU!*T3&Im#Xf>EwzpJ)Xzb z=X#x_`Zq1d)tTWyUy>76&Shp1Lsx5ss04rxW4%`|KJ09$ZIZdSw8>GSa^9_ut@XND z(6>jd@>Uy-M?0s@i9|@Hw(z7e7EVqvRKLBFdrs<`zS>x4DP)O$=-1H$;PQZG5aUFe z@FUMRj?tHvzRf)=u$B-X=w2EjAQm!{WzqD5GgTK}1PP^1;b?_N2%|hkR%H|9p9gFE z%XpRrwAuAF(W#I^>8HqF#ISs_@MMs`b#Q>Joym8c(YeMt8=2&lVxHkyq{>Wl^fzw2 z5SZ>_ucPqIcE>sTCLJBLvt>uswNi85_{yj8Z!$5!R-W1Fd}Y(*v?HM7^7hV&hfW3lo97(shJOKNzR z*_Gt^+u?K<&AY3}b=q>3xQUpl|Lelz>a`Uam#{4cLVbNlda+AILQexUX zZ)LCF9Hun*RrHOcnF)=&g#8!o?Is>WKi-&DAI?H-GTyG>KU|lE@;|GadltXQ9GErRzVM5AjuZh;b=oQ)!KdJptPC>Qtd z8ZZ4@Doh?cU9}neo4&)hvg{P$x7DUqrr1&vMR@&`Sgf|Fvbc48qIEcqmd9dJR5r~! zR;M@Z=#4`~*`to85IlWEpE82F>f(pZ>#*An6xk==5Mr z|GVDJl_2fMOcDMClLl#yxb|2YQ&E2_uuGmnCAKHrS3(-E7z_a%w zfoBIthR_&OTbP4h&Dh|X9TZbE4hyO|^yTXiPDxq#m(}y-3xS`muVGs@$hu^F5oTI; z7Hp2;2ZPO~WQ$;PLtc>aVX-TB%s&mrbasY|+mIKSlKid-`m|@PYfOg8U$3-k4~|pW zap^pR`nfcNDUOkKXqCpUF4VSwT8t2A6^He^75uVj1<_-X}d|ctHrZXC~wP zeXSCBXTlQv_f=Kx^G`^q@P?0LOL#q6bNp(>^3c$7-0IZ|D>ZIe#ARQxPi* z?2rcQfiT^gv5%aQW@$rjQ(P|(RIihg78=I!6pgPcyW(e5Kd=GlImAF1b17 zhJYQJ-(lrt8VsSxeFpT-XjJ^)#e9j|5+ba|B}pR?)cfO{fzE`%pI+i{%l~$jSLxgd zRy+~v=<-4QJACzYzkj{CAYd~!&ckrn)?nCUznLarAn2cm-N$C_-cQA3w?luQHt{%A zyN>`>{)M|A3XVN2N^RZKQhbav?ibgaS>K2k>ry=Dl|Zx6L-@$cbEA_Z-+G@>rcRpp zQ6;LFh`^2ji()u*WYJUDE6>T8!F*&{aViaI5M%yug*ulRS z!e1p>AWrS5zk}3MxGN+zt=V0YPuyRit_(_Wua%3Ei8h`o(3UsVirw)Ks!WC6DnyKZ zKtQb?lN-aVvX-$_gisbeE+^1EffD41SHlEx{$)GhHj~gCDXRu=k7N6DphOOHYIip{ zMVoV44y&@21<~AS97yw}J%)AuJ85g%Q?L(_fblZUVZEOjdvz%c?XyUVBL6^J`F#;1 zg}}Dqf;_zU_t?K1fdfb@qc$`ZjW6`#$V{EwV=0zpTFIaP2h^xds!jqu%N35fu|pC; zK(0FzS>%k-IhTfjQ5HVmFjEC+4_x(pDFWNu31KB~t?lTFz@+$eKI{lJ%}-zdzw2Ti zuUH+HVjs>i;W}9H4UXyU9TMoE({4Z?%Mi%T1~hY`kNF!6U25w@Ww1^D5%Yun88x!U`Z&(^Z_ zXxU|wTu3qxJ0>pO zM;J?IvFs|PCMd{{9XEEZ3zM`^JZTw8A56iw#ukrPCb9ddw6y1}n}1|THO`;IltcIb zC>EUu*>r{-*o~dO*A+Bg_`af*vA)3jVFgi_=WrE#brz-r0I!`>$@5&PqCcr};oM4o zS<$9^(_@z|@!4*$(%|lLv-gDZ_!XP)Wd8@K3tlIrm8{;j`r!OJZ%tSQ;7WPB-n%V} z6PoKH$#04hcH}=vh;R=iYrX=;e{}I~egQRmPET3ayYJ=Q=V0(9`70BCUKl&|+hl}% z#hH$m(I3?U~zN<6b{>9b?AK7}sM;<%>{WZzaY}JNKcH8|%Ne@_)Jg$V3XG`LzQeT}dj+!>s zOBYkd^cL2(@Wyf+Ilg@TRds}uVcmC){KldXpDr{*w$$M>Jj-(zQ^sRo|K6cK@Uo&^ z^z;hDXm`7%j^-f+-kP?BSL@@}!?lg`M%y^=K+fo+pEIP~yW?Fvd)O|Ica^JpI~>Ei z4zBTub~0&Rw#f*c_V25=XSqFAfWI^He|fWmd(#fdc`xHHqiky=5#g2k@Fpa8x#&i~ z0l>fB`oBJQM*pq)r2YSWGv%N3KLC06@D!ylXKF+7p*?=qAAL=xnedP6bzfBCL(+%v z)MRWwXP`a?0mz5Ky82*|e%$cOx!C7&{dzV@5Xu<{g8U*$mLzuokU6|VGPyKKbWLY( zNX}fEgAl;;c^vr=S$saPL<^fv`J>d;|K#oVS^#v!T+=@~o}TgvMRgDaim6XfU<}TPFlvy0 z%h>^Z{R1Ft0^7ZxJ3#@OmB=c6K>&FoECnjx^}(j8mfIOwYxpEU0Wc6Ub#yeE>Q(Z{ zkcb=NB4k7g5^MyMs4eve0wE9taRxE!dOe7SXe=g(J@$?sYzAuC0i?a{7$Y(FuE37l zhFB9uD;@wtjFX+)C(1}E$arHsN!H24YFVpe%dy175*tN)G7|eLEksi=V;!RD0?j|q zc-nV6Slc{+qKSQ;Ix2cc7iQSh&oVsz`(Q$tg)S7bD)oZ(t?Js~ZBwYDV5nYM^X*h@ zM?rfNsUu0)2}NsZt6{&5`ZW$RLI9@B$2&?1@HW!0YwcMY~^N*4?r@ z7OHzw_y3C_`q}MRx^X%@5(3wvBZ!fl^!^w|#)R1C$a?`a1*W{(Glf>hAo&x`(%tAT zG8_#HVsF^9Y|VChH`1IWL?OXwfzPy75VB)pz1H+$3d3nZbrs6v>pV4qCE=aeA?%mo?~l9WgzOAQ}|i(Lz?qtitSO z51*j(gR*1@bOy4L7p&^bC?hw{(HP>a&H#(iz~7N4$+Sy>o4Z8w;$|-Pqo}A1-A*Hb zJUX=ze%`nRFztkMX#?bdBD$Uc)KBs|n$x>GV=8 zsB1jLxy;S;9O;7UPeu{`ONPL#6aMb5$(}))KjgIl8Utf3B02&(^=2nF)yfx7w}?8X zh0+AWvq_A+Qx~bXs-@gf9rCuNS1dY)?3TpF*ka@`-OUl#J?o-xx>!p)R*y75PL!aj zC;$ifRK4U*7PN{)X=OEft*KvSgKir$c4SQ)yq#j=?^+I7B(8)GEXIxrckn?{H|qG4 z&8A;^r%Otc_31I!u67525{VL%B_W_|C0(iRBW6fxho>8z>ECC}ma962P1U3rwf)*v zd11n;5>l0e3D+H1MoYx5T;kNyan@?sX>Sn1rujl>TaE)r1SkwlOE@ESREdPw9TqX2 zs9lp#+i(kRoC7DxQMGim*R<~8GzK3UZRF5l+Gad-h$~u|`*&U+0yA*?AkYCp&B%NT zhda^BN1C7vrn3)1GP0blpu*{fng+}O0z(i(t+R)8lB-dQ8gGF12cbEfE$*cvkyR|P z97#$^%cd*Yo|?!y{s^kfNGTlan|iOIB8+*(?LC;Vy}qzo8f2|-tluKAFWd@Q(=cmj ztqx+EY-{W?O-g8ur;H~aL#ukuZGAFsjH^hI6Qdr;##`|v66GpRGk_uWaa%hUgKG5k zibfw*_a%*pdWa;^6EzKWl@=3tjAW~}JEafkK?s*A{zNQUS+VwF6DQVUzoyWpJg?N>$yif^h)sP76QfVwYpK3htLexmTkZE;-yjHlnh5RM#i6-zu z7%Wp*>P)(WhF6(V;07P8C}?5OQ5_s1NkIj)Y>S3BS0-_5uVP-+thgXzvhx!RVenfT z&}eWA6OKkr7_cHPi*6H?SBnWAaA+Jrj3(fybdW9w`9_mW_dZFMJPT7>c0k31Ov!qg zFT4>yuq^{4OlhHFhbNE-nn_%Mq1{9_%dr%a5nc!j2@P0ARVWj~ms{X=&W8maOhf8H z;vo56NdqMZVHNsTpvacfiM=FfbjS*%u?d`r8o{Ls|Bfmn#?V28hEf!x@dJ512Ed_Q zS&(5WdG~u0Tu@!@szv8m$S65Ahc{Hom%7*0C!s+O*Gu!feD+muq!C18$>`huqpIou z=1uRQx~WxCAR8oSQ2eu-@6+`I_ZELbzH^BR@pbPeyILWM&xQ-T-i!Q=RE0vY;K84K zK-u^j93N=9YwJR-=PnnndS`6cYgQT_uwzGqiG??;?0wNRF4{K)O98XPdfISKCZpU~ zsP8n%R(ck_3B9?clfBxPSR3OokA9$~S({B>Vq)7Ww!1%*y&CHfeu6<&+=JFL41W&1K}tZG#j32(GTzv@_l?TGYh(ji)i+;vt=rg}68bMT@1eZG7i z)3nfXFBK!<&D>^Jb*b39TJj~*i&hn9*dr#CjIU8j3trz+khE<9Oxp-2!S+$T6byT_ zyQ6u%aYaT|n<+E%QAx0a->WfX76i#~39H)GNFtbD;vRdr*VU)HkkmVOdkY|>Z!r=8 zq8&p6DW$d;;?NBdvywpRl$QpI;qF|+31eQuv&Gw?_dT-9Y49ha|tIfo1FCV)@ zzs|SS0DSSNh-y|gTKsXpC7ZFvzbdPNA>`$;A-z$fk&>l?1Ii-t=Zx1IHBhyWjjN9- zVkA%&{4yb_X+cJl_<^T36q!*~iM4ZW90saHQVR>?pp0vgPi#LBua~q-g+#U#V%(Z^^}q8kDf%L|6`^#gJ6dOg=Q!dLx2n5$- z)53U@>?9PqTZnE%r{&xcR#Brx+p4#wS|9TB-{l6>>ckX#mD=par6X-BFb!(4LCPwB z-9sTE5o(GxXI^Y9Oqblrl8auLW1qzPRwMIuQ@pLD8)b1%!NT z!bSq3QfTOv#gA`XBEgYauA=61DfMdvi-Vbp#HLv& zrZXBbm+O-kob)%jKj=aD~KQTGy<71@q zZU%(1vC?stl$|@32}_Jfo;{&tWZB}DBnFO!8$VzWUt!>uDP;vj*7(9QW(tUQlvWgc zzt4AWD6m!l*4wX5iNs^pJb7-6dwGcXVRqt=3|qtOgbcZdI$)3E5c+YQxYnLpx@lpEzHcjV5TjtAnTTwa1QJjQa zlL^&z+pH)Uatz>SVoct0uy{cy-ao_uRq3(OLL4och|XcI3*`Q*59fVxGFMMpoBaw#c#Jc z!9EUf4GytRi`3_QijNe-)BqJ8xuDL&V;uP|4)k`nvtyMXU8n)BaP@w6&kYKkL#DaI>o4tS~QAhOzl z0-Ty60aX={BP#P?sfY7=VGfc|;}71!H0~vhQR9X99bbYhfT)DOV_aIy`GIok`68@K zoX8IIl1BMH@dp4`M3o#E{`nPVp)uNOftJRzn950n5_6b(c+ft)ys}Mu6|dQg^hRh^ zX(x#dWN3mN%m{=>I4fucH%rj0H!;8sZPlGbfTIcrJKT!{L~b3wIoZ^GaQkofLRa@< zU@A1*OQcV$*v7|S6<8ptCmZZlJ3_QK5Tpjg88eDwNRTD1O}$$S^M5$C7OBvHp3I}H zN@bONrF65R*afJzI!INysTfcxdGVOYK7~tKKr`4y!uu^^-E5-t0Q93a>`4dH2QhP*uCVdLJvWOpv&Tpmpm~?zL^3Wj*?4>Tg$N_zg=F>FS_~DSXiQ5$d2wD*hPNQkmLNXw9_swqxv(u*x!X6GP|B z4v1VYXIB)i1`x8FPEzqf)$cUac@rNONSvtO%`QaMU@@BJ>PLV|tq7#yET8Xq8Ou__ zyl)0UiHF$~(l~K;$V7y=YPD7r0jhwQ0)8s2#l9T~XALbX8T=3l>=Q2KWL0855Nsiw zLJG?sp&(+jv!w_QLL@Xx2%NxmTx|-KwIw>g@Q#cU_evO)V-ygDqG#0!4ZOkz6Jd?R z1cl%e;4DzDK?-~fWw901sSV4fYWBlUj^q7VkoQTtM#E8>%B7}r5q#R^7P;jlZYi<;!`G<_AHxgttwP-(dJ!p*=N+ztHt>}wf3v*?C6UAEN}C#c;x0YemW0%$3^S$Twlnmn3q|)SQaqAQXi%#!a$wMa!XrN9smS@K@2&> zw@u@6A%cJokTvT?%3m-sRr^IJ@*j7J1M#sOv_=gtX3D^~_b9b3K<5L(EH+g0R2M$o!zv_t0z=3yphQ9xPB zcSsVEwpf~X?JDCjz}gcqCv94{acZqh*W@|wAj#jZ>`>^K#wGJ3AP4L+9zWHH0;n8- zkv*zoiPLrR(!{AWqb%{;mg=j4GEK=ko`Fu~EZ*;I*ypD)6sP0JVRT4g;*8tuIK=CI zzUke&Fgl&4DXrt2Xoq=BvvMqpZOf3rNd(G?jB;JYq}p4-)&Mnw14Ydq${3OOzQxzr#fj)v zamTwuFR)VMfeTWaag-obx0^Tq$lb za?#NWbU#Ia4NHDASx`#XPm-7A{++vA`?l8#P&A~OF^tNY;nL?l$#o^>tb)1gO;~sn z2L(5#mbxC4J3gdy#-g{S+9{7IlP*iysn_V)-q~H5F?X?rk_-4FFv*!U!GfJ;3ANST zC3~PX@cL>p633=i8Y)x17h8V`or6xKpfY0?l;293TETk6u$40N!I}r|yWCE1o35J= zgG5-|G>84AHDHp)OQlaCUSJhi#7Jrh(Fb~FH+Bbf{LCd4Q!ZID^X9sGr*3OMr_>%6 zY`O(Vv~TK*)bmdatjdg+ohNg=WR0w@b`g!lAi&_#eea#La42$QZ+AD6X9+aj%NZ+e z=E@q`4QNFJoJUbL7!~P-tt05KL|#auEq6?=?T0HpJ7r_ev22eA>6_)=srV1+}3qan{m! zA^v-2gok9zYB#*X!UW{~7NmKb&85v2HTFWz7W_X%)-;0flMb)al3WGDM-!lR_+KaJ z^=iJMiqwY7MJK@JfE)Q!9{D0lvUJ_sy)MFj>$Dj!`&BpB4~Mz)pVQ%f*fC$D_{A5m zL8mAYdK91Wod2(1ypAWyDETGFjpHO$S~0A5pFKROlbBGbvf-=vC(M^`zgvutINh{T zn(Iu?=iNv*pcYHQE0MhuMZ;aHd(j6Mc?k|ZLsH>#6YOs=STZRDBL`BGYgaHR=)3urww|Ex3qK)M7Q_?5_$C7jN-QuV0Pd6YVsmhr; z>|@F7p6F}(V|>X5xf-V#7?Or%_UF0yzUy3P8tBM+WCz03J{rQn0AIM1|9N ztEaVGw^Upal)xTwZRUfPH_Edx7Fx|hJLe9d7>>)_)Kh^%IsBz;pN^C5%XcxWmgK)j z(J|F|P#1xyUt}TTS?Xg{16fh(l}~8CHW3kUDUnPoNnD(>Fz{+@jeQ&`reJ?4K>=J91KfE*}|Hj85w|46pxEkUz5 z|0LAsRjBuiVOS5=&R{L{_6uUWaE*S*i9|RHuQWxelNiek=H2SG$Fx3gdMM3IESPeQ)_GuzZq(n*`3DT@RgRBIfGnF7qJh1&T zdE&y9#ZbCvOZHV_$@!*P z5v>u+Nz0f?0oHH@)IKKFCWtZI{YjZiwNkBS$9l>|O}#@QiB3?W?8Q2kf44j-QXz0#0Cet+X9u!jfwtO)3MuLN}1nJa0g&OzkV@#Bg<78QNcRET!l3z;IObNi)7S z@8iw*WCpM%nm3An0uh8wu9=OKOd}^9$}$uquT?#5B`3N-yqdie+`6~L0Z)RNAh<`^ z2oWy-^N{w~!GYu*hUfz8;{yc#5oY4u=p8cFN!-ZH7n|8~skk@!`w8@7e8y~(H_ser z<{Rs0(;}K?9)QGlf(!y6MF@S4LRT|WB{g`lVoB$H-Koo8tYrElFCfNUGGij(Yv4eD z*ZT9uw?UdysKc&5`M#N73C=H+LwVa8kUC%G&~s*U=bY7zXZCN2e?!uAxu&fmKm}mr zYrr4Igyw(YyGa^^l0$jKqAtr-vSeJ5J6~X7NCNe z=P{-Lg!LHX@z17hr%$*iL~Km#bYO2A3Ystp8MDDHD~Ue);0E21EZTx}W{xDoI+D&6 zr+V(hvb6URq^q9QPwL+s~OmprHJ+JkJ^+1zG^|?-S;n30zY*sE-sZdtbw-7Ig zoN2&>wu*owYPB8Rt_dW$e!&V+((cJ~O!zL*s)UHlU4ja7=H$c5!b?3^ zwgraKNh#qZhF6^G=_sLllec6zx1S!aq1>u&j1A9WeLi=|dULs4Dyj-iFFhihwR`cX z2Ser7R_|tf)KVZp1_-$)<*GdCRe{S~G=>*(O&b=OQJHgU=FH!bsOMz^J1^UN)qong z(rDQ#P?fko>P%_s>iJC_ikW&fL&WeE2R&=7RouJyS`iX%KVea40osqD@rdf_a#`55fN-zb8^i3lRFZEETqZB5Z;KtS^-8JH5VA41ZW0>5MG4SrE zx8m#UY(?)2RpE7Me}6wP&WSvaQE^9`2M+nnfar$c=2#S>(siv+>kAf*!7ADq+NQC&td%K!=ow|W(WvlrPya@ zVJ)K+VF4lZ(Y55XrqRm6;uK%c)bdeN@%Bc-_v(@7-cg{eOtep$cQ-4=zhg2-OpBQx zbMNZpBh*^Z7%}4nK4LUxxAW}!FkX#zz=A{q%n&(qks?Rpzhiky=7 z)dj9XntXfoy_6$;c*+gb)GfPL>jLCNh6OBAIYUD&rJsr%I*-VO^66*2>e_ zVk8CMZ!QK15@&#mfQ)~u-ojGPp=MxkSSU+rylKkbK-ypGpNlFC>6Cz zV#XYTytQUAsiRi4$DPhz6$+aNJ5x84RM)^`qYHs|(*Zqni*6(x`EVDO3ifY#Mb_o^z!FYF`(r(2Q7Z&P>2{ zb+$S%=6wb?xkjd>;V4{&#xZNHHrXzb9}d-x=t1XpzeoS>-S&>qJB-XQW%UT$)!eG1 z){>!FT~fsoMY2v?cZ(?Aj5oHEqeMid>bhy#Rt0UDKo$_uYAr2I@QU&wZnQ1KFjyfN zGfmw$3m?FqFSR&eagI@Ph$)0pCF6`zZEN0{n6+h=wDHYB8SPNlCRo71)*)D8%mBl^ zk5lXF@Jd44z|JnI=Mpxvetn(h; zDkX0zg*koBL4J!%OoLIzTGuLfUEjMk5C_XwFG?|X%+UltTJs2%^&Ma$0M29EPVHWR zN$=h>alms*T`385?lP{JqW66tzQ+tev<-3XUVIF*4Ggl$xQWT|KH#7(?2?jMWj3%4~5H;zRa^9Xt|anz2?*L zaLU`cLL4$Ha$4OhZOG-j4|JQ?3>w22kL;oo)bBS}e?29MN-ENmpaRMI$ zF(0<+b}RA60WmNBea;JmUClc_@YCh;?C0t0x8>CJ0MGys&VKkgdDmY5^vrGm0DgTG zD*(W6&$^4>z(0=fdb^+~Us2R{@#)^a^%Q2dkrt(&&$GQo+)utY)c#L& z))2Ix0xF;J@D)Mr5;O>b21+peCa6A%155G{x+$>AV!~<^R5N`>_=Jz$cMf#ns+KCK zVj5M8!k=96-)fUiTtAQ|zF(R?d3lTTzE9RRbKEy@OA~7UBrT|{GLu?Fu}RT7H;hcF zz7^HC1dZ2C>pY2NBEPSRz^=6TIE_Ia}jVUTx!b6Y7URt*y zle{qJ*djPrxYNHaD zAb9#gzL5(utxFRFx@ouEAUS2J7x&t;I%5nev&P9M`t=5n$*<#zZsoFVEeqeS*3TIQ%>%rJTwHM z3~78=b~8-hvL~PR$JXgdA9QNhx#fXQVkEqNx7Ph7b@B8zB^zEZ$~|GV;%QTz8fD_k zzyT^Jo>J$-XN{h6%ml|(*?y7Gmlw>+M^$5|9;O->n>Pes5TWc?ngpGzB$Y(X zV>ZO^Sc*b1S86V2GOu%W*|Oj{uw~C4Lx5nCl4q)O^MHqH#^V(Y4#fy+9 zmXeQ77NFot1i0fzbT5y{mL~B+`v``=qzeF%G-(kDB@ifxScm`;QZjP>`~(Xl6d_Wy zC^6{lxUxp&#)<<9M^0!gk&!Ssb7#+%3mYDoJb8hFK`;e}WCjHd1I&auECYtxguAWL zO&n_#TO&ulT$x@QcS{BZ|Djj0K(w7c9kY%(YRss!KZ z__j)yraX*dX)N=>N1p<+$!1@C^*P``0u9Vzdu`J(!s~*9^i!Tz7A4sxe8^8SN_;3O zFDXAQztp3zyr;0>;7F7IheXr=om9(rD|jd~u~fJ4@icpT)>!-B016b$6Yx(_4IWE7 zIyyMNZEw$T)EQD1duH@6pEvy;v9zYmk$uRrkGjgI^RkO063F0pF|B-vwIe|;>l`^W zr(M_n-}&hLMi+NZ!A_(~a}hfB4Pn{7S7K_uJ{pQTw3}fBwF^&EWSpZ*hbCBB?!2 z{pe@2z3YL*lO;_UY*?yE5F*8i*DJ^$T!o0b$<1S zE8V1i%GeZ1P_KS>``nU1oA$?Jhy3(3tn)ZyoVBHlpLtScvG3QI$8D7eYbacG1AEAm P&>NsQ4M7L++xr0k%F9lN literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/highlight.pack.js b/website/static/odoc/next/odoc.support/highlight.pack.js index a3731597ffd..7d1bcd04e82 100644 --- a/website/static/odoc/next/odoc.support/highlight.pack.js +++ b/website/static/odoc/next/odoc.support/highlight.pack.js @@ -302,7 +302,238 @@ e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)} },t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h, anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t]) ;return Object.assign(t,A),t})({});return te}() -;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `xml` grammar compiled for Highlight.js 11.7.0 */ +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={ +keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", +literal:"true false" +},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={ +className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={ +className:"operator",relevance:0,begin:s},o=[{className:"identifier", +relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module", +begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{ +className:"identifier",begin:a,relevance:0}]}],b=[{className:"module", +begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{ +className:"identifier",begin:a,relevance:0}]}],m={className:"function", +relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>", +end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params", +variants:[{begin:n},{ +begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}" +},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>", +returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{ +begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":", +end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{ +begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor", +begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r, +contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={ +className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>", +relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={ +className:"module-access",keywords:r,returnBegin:!0,variants:[{ +begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0, +contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{ +begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{ +name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)", +contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{ +className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0 +},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{ +className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{ +className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{ +className:"operator",begin:i,illegal:"--\x3e",relevance:0 +},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def", +begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0, +keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{ +begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})() +;hljs.registerLanguage("reasonml",e)})();/*! `javascript` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","module","global"],i=[].concat(r,t,s) +;return o=>{const l=o.regex,b=e,d={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const a=e[0].length+e.index,t=e.input[a] +;if("<"===t||","===t)return void n.ignoreMatch();let s +;">"===t&&(((e,{after:n})=>{const a="",M={ +match:[/const|var|let/,/\s+/,b,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(C)], +keywords:"async",className:{1:"keyword",3:"title.function"},contains:[S]} +;return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{ +PARAMS_CONTAINS:p,CLASS_REFERENCE:R},illegal:/#(?![$_A-z])/, +contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ +label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,y,N,_,h,{match:/\$\d+/},E,R,{ +className:"attr",begin:b+l.lookahead(":"),relevance:0},M,{ +begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[h,o.REGEXP_MODE,{ +className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:g,contains:p}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:""},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:d.begin, +"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ +begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},O,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[S,o.inherit(o.TITLE_MODE,{begin:b, +className:"title.function"})]},{match:/\.\.\./,relevance:0},x,{match:"\\$"+b, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[S]},k,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},w,T,{match:/\$[(.]/}]}}})() +;hljs.registerLanguage("javascript",e)})();/*! `sql` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const r=e.regex,t=e.COMMENT("--","$"),n=["true","false","unknown"],a=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],i=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],s=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],o=i,c=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year","add","asc","collation","desc","final","first","last","view"].filter((e=>!i.includes(e))),l={ +begin:r.concat(/\b/,r.either(...o),/\s*\(/),relevance:0,keywords:{built_in:o}} +;return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{ +$pattern:/\b[\w\.]+/,keyword:((e,{exceptions:r,when:t}={})=>{const n=t +;return r=r||[],e.map((e=>e.match(/\|\d+$/)||r.includes(e)?e:n(e)?e+"|0":e)) +})(c,{when:e=>e.length<3}),literal:n,type:a, +built_in:["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"] +},contains:[{begin:r.either(...s),relevance:0,keywords:{$pattern:/[\w\.]+/, +keyword:c.concat(s),literal:n,type:a}},{className:"type", +begin:r.either("double precision","large object","with timezone","without timezone") +},l,{className:"variable",begin:/@[a-z0-9]+/},{className:"string",variants:[{ +begin:/'/,end:/'/,contains:[{begin:/''/}]}]},{begin:/"/,end:/"/,contains:[{ +begin:/""/}]},e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,t,{className:"operator", +begin:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0}]}}})() +;hljs.registerLanguage("sql",e)})();/*! `bash` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(c);const o={begin:/\$?\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},r=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[r,e.SHEBANG(),l,o,e.HASH_COMMENT_MODE,i,{match:/(\/[a-z._-]+)+/},c,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `shell` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta.prompt", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();/*! `plaintext` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", +aliases:["text","txt"],disableAutodetect:!0})})() +;hljs.registerLanguage("plaintext",t)})();/*! `graphql` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=e.regex;return{name:"GraphQL", +aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{ +keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"], +literal:["true","false","null"]}, +contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{ +scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation", +begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/, +end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{ +scope:"symbol",begin:a.concat(/[_A-Za-z][_0-9A-Za-z]*/,a.lookahead(/\s*:/)), +relevance:0}],illegal:[/[;<']/,/BEGIN/]}}})();hljs.registerLanguage("graphql",e) +})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"], +keywords:{$pattern:"[a-z_]\\w*!?", +keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", +built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", +literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal", +begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{ +contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{ +className:"type",begin:"`[A-Z][\\w']*"},{className:"type", +begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0 +},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0 +}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", +begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", +relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `json` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],n={ +scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",keywords:{ +literal:a},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/, +relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0 +},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ +$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, +built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], +literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], +type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] +},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, +end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ +className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, +contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ +begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, +contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, +end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, +relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ +begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, +end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, +contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] +},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ +className:"number",relevance:0,variants:[{ +begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ +begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ +begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` +},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` +}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, +contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ +className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, +end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, +contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ +name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, +illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", +relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ +1:"keyword",3:"title.function"},contains:[m]},{variants:[{ +match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], +scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ +className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() +;hljs.registerLanguage("python",e)})();/*! `xml` grammar compiled for Highlight.js 11.7.0 */ (()=>{var e=(()=>{"use strict";return e=>{ const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, @@ -360,102 +591,44 @@ contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() -;hljs.registerLanguage("markdown",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", -aliases:["text","txt"],disableAutodetect:!0})})() -;hljs.registerLanguage("plaintext",t)})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"], -keywords:{$pattern:"[a-z_]\\w*!?", -keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value", -built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref", -literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal", -begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{ -contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{ -className:"type",begin:"`[A-Z][\\w']*"},{className:"type", -begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0 -},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0 -}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number", -begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)", -relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{ -const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={ -$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i, -built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"], -literal:["__debug__","Ellipsis","False","None","NotImplemented","True"], -type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"] -},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/, -end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={ -className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ -begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/, -contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{ -begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/, -contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/, -end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/, -relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{ -begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/, -end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/, -contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/, -contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE] -},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={ -className:"number",relevance:0,variants:[{ -begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{ -begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{ -begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})` -},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})` -}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s, -contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={ -className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/, -end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s, -contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{ -name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s, -illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if", -relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{ -1:"keyword",3:"title.function"},contains:[m]},{variants:[{ -match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}], -scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{ -className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})() -;hljs.registerLanguage("python",e)})();/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */ -(()=>{var e=(()=>{"use strict";return e=>{ -const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={ -keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with", -built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ", -literal:"true false" -},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={ -className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={ -className:"operator",relevance:0,begin:s},o=[{className:"identifier", -relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module", -begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{ -className:"identifier",begin:a,relevance:0}]}],b=[{className:"module", -begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{ -className:"identifier",begin:a,relevance:0}]}],m={className:"function", -relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>", -end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params", -variants:[{begin:n},{ -begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}" -},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>", -returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{ -begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":", -end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{ -begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor", -begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r, -contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={ -className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>", -relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={ -className:"module-access",keywords:r,returnBegin:!0,variants:[{ -begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0, -contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{ -begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{ -name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)", -contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{ -className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0 -},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{ -className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{ -className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{ -className:"operator",begin:i,illegal:"--\x3e",relevance:0 -},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def", -begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0, -keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{ -begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})() -;hljs.registerLanguage("reasonml",e)})(); \ No newline at end of file +;hljs.registerLanguage("markdown",e)})();/*! `c` grammar compiled for Highlight.js 11.7.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const n=e.regex,t=e.COMMENT("//","$",{ +contains:[{begin:/\\\n/}] +}),s="[a-zA-Z_]\\w*::",a="(decltype\\(auto\\)|"+n.optional(s)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(i,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},c={ +className:"title",begin:n.optional(s)+e.IDENT_RE,relevance:0 +},d=n.optional(s)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},g=[o,r,t,e.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:g.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+a+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[e.inherit(c,{ +className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ +className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:[t,e.C_BLOCK_COMMENT_MODE,i,l,r,{begin:/\(/,end:/\)/,keywords:u, +relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,i,l,r]}] +},r,t,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u, +disableAutodetect:!0,illegal:"=]/,contains:[{ +beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o, +strings:i,keywords:u}}}})();hljs.registerLanguage("c",e)})(); diff --git a/website/static/odoc/next/odoc.support/odoc.css b/website/static/odoc/next/odoc.support/odoc.css index 8b0ed5a8174..c23517bac4b 100644 --- a/website/static/odoc/next/odoc.support/odoc.css +++ b/website/static/odoc/next/odoc.support/odoc.css @@ -1,19 +1,108 @@ @charset "UTF-8"; /* Copyright (c) 2016 The odoc contributors. All rights reserved. Distributed under the ISC license, see terms at the end of the file. - odoc 2.2.0 */ + odoc 2.4.1 */ /* Fonts */ -@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,500'); -@import url('https://fonts.googleapis.com/css?family=Noticia+Text:400,400i,700'); -@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,400i,500,500i,600,600i,700,700i'); +/* noticia-text-regular - latin */ +@font-face { + font-family: 'Noticia Text'; + font-style: normal; + font-weight: 400; + src: url('fonts/noticia-text-v15-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* noticia-text-italic - latin */ +@font-face { + font-family: 'Noticia Text'; + font-style: italic; + font-weight: 400; + src: url('fonts/noticia-text-v15-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* noticia-text-700 - latin */ +@font-face { + font-family: 'Noticia Text'; + font-style: normal; + font-weight: 700; + src: url('fonts/noticia-text-v15-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-mono-regular - latin */ +@font-face { + font-family: 'Fira Mono'; + font-style: normal; + font-weight: 400; + src: url('fonts/fira-mono-v14-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-mono-500 - latin */ +@font-face { + font-family: 'Fira Mono'; + font-style: normal; + font-weight: 500; + src: url('fonts/fira-mono-v14-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-regular - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 400; + src: url('fonts/fira-sans-v17-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-italic - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: italic; + font-weight: 400; + src: url('fonts/fira-sans-v17-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-500 - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 500; + src: url('fonts/fira-sans-v17-latin-500.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-500italic - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: italic; + font-weight: 500; + src: url('fonts/fira-sans-v17-latin-500italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-700 - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: normal; + font-weight: 700; + src: url('fonts/fira-sans-v17-latin-700.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* fira-sans-700italic - latin */ +@font-face { + font-family: 'Fira Sans'; + font-style: italic; + font-weight: 700; + src: url('fonts/fira-sans-v17-latin-700italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + :root, .light:root { - --main-background: #FFFFFF; + + scroll-padding-top: calc(var(--search-bar-height) + var(--search-padding-top) + 1em); + + --main-background: #FFFFFF; --color: #333333; --link-color: #2C94BD; + --source-color: grey; --anchor-hover: #555; --anchor-color: #d5d5d5; --xref-shadow: #cc6666; @@ -30,13 +119,21 @@ --toc-color: #1F2D3D; --toc-before-color: #777; --toc-background: #f6f8fa; + --toc-background-emph: #ecf0f5; --toc-list-border: #ccc; --spec-summary-border-color: #5c9cf5; + --spec-label-color: green; --spec-summary-background: var(--code-background); --spec-summary-hover-background: #ebeff2; --spec-details-after-background: rgba(0, 4, 15, 0.05); --spec-details-after-shadow: rgba(204, 204, 204, 0.53); + + --search-results-border: #bbb; + --search-results-shadow: #bbb; + + --search-snake: #82aaff; + } .dark:root { @@ -64,6 +161,7 @@ --li-code-color: #999; --toc-color: #777; --toc-background: #252525; + --toc-background-emph: #2a2a2a; --hljs-link: #999; --hljs-keyword: #cda869; @@ -72,6 +170,12 @@ --hljs-type: #ac885b; --hljs-meta: #82aaff; --hljs-variable: #cf6a4c; + + --spec-label-color: lightgreen; + + --search-results-border: #505050; + --search-results-shadow: #404040; + } @media (prefers-color-scheme: dark) { @@ -106,6 +210,7 @@ --toc-color: #777; --toc-before-color: #777; --toc-background: #252525; + --toc-background-emph: #2a2a2a; --toc-list-border: #ccc; --spec-summary-hover-background: #ebeff2; --spec-details-after-background: rgba(0, 4, 15, 0.05); @@ -118,6 +223,12 @@ --hljs-type: #ac885b; --hljs-meta: #82aaff; --hljs-variable: #cf6a4c; + + --spec-label-color: lightgreen; + + --search-results-border: #505050; + --search-results-shadow: #404040; + } } @@ -142,6 +253,7 @@ table { html { font-size: 15px; + scroll-behavior: smooth; } body { @@ -149,24 +261,55 @@ body { background: #FFFFFF; color: var(--color); background-color: var(--main-background); + font-family: "Noticia Text", Georgia, serif; + line-height: 1.5; } body { - max-width: 100ex; - margin-left: calc(10vw + 20ex); - margin-right: 4ex; - margin-top: 20px; - margin-bottom: 50px; - font-family: "Noticia Text", Georgia, serif; - line-height: 1.5; + margin-left: auto; + margin-right: auto; + padding: 0 4ex; +} + +body.odoc { + max-width: 132ex; + display: grid; + grid-template-columns: min-content 1fr; + column-gap: 4ex; + row-gap: 2ex; +} + +body.odoc-src { + margin-right: calc(10vw + 20ex); +} + +.odoc-content { + grid-row: 4; + grid-column: 2; +} + +.odoc-preamble > *:first-child { + /* This make the first thing in the preamble align with the sidebar */ + padding-top: 0; + margin-top: 0; } header { margin-bottom: 30px; } +header.odoc-preamble { + grid-column: 2; + grid-row: 3; +} + nav { - font-family: "Fira Sans", Helvetica, Arial, sans-serif; + font-family: "Fira Sans", sans-serif; +} + +nav.odoc-nav { + grid-column: 2; + grid-row: 2; } /* Basic markup elements */ @@ -238,6 +381,10 @@ a { color: var(--link-color); } +.odoc-src pre a { + color: inherit; +} + a:hover { box-shadow: 0 1px 0 0 var(--link-color); } @@ -289,18 +436,30 @@ a.anchor { box-shadow: 0 1px 0 0 var(--xref-shadow); } +/* Source links float inside preformated text or headings. */ +a.source_link { + float: right; + color: var(--source-color); + font-family: "Fira Sans", sans-serif; + font-size: initial; +} + /* Section and document divisions. Until at least 4.03 many of the modules of the stdlib start at .h7, we restart the sequence there like h2 */ h1, h2, h3, h4, h5, h6, .h7, .h8, .h9, .h10 { - font-family: "Fira Sans", Helvetica, Arial, sans-serif; + font-family: "Fira Sans", sans-serif; font-weight: 400; padding-top: 0.1em; line-height: 1.2; overflow-wrap: break-word; } +.odoc-preamble h1 { + margin-top: 10px; +} + h1 { font-weight: 500; font-size: 2.441em; @@ -348,7 +507,7 @@ h4 { font-size: 1.12em; } -/* Comment delimiters, hidden but accessible to screen readers and +/* Comment delimiters, hidden but accessible to screen readers and selected for copy/pasting */ /* Taken from bootstrap */ @@ -368,36 +527,36 @@ h4 { /* Preformatted and code */ tt, code, pre { - font-family: "Fira Mono", courier; + font-family: "Fira Mono", monospace; font-weight: 400; } -pre { +.odoc pre { padding: 0.1em; border: 1px solid var(--pre-border-color); border-radius: 5px; overflow-x: auto; } -p code, -li code { +.odoc p code, +.odoc li code { background-color: var(--li-code-background); color: var(--li-code-color); border-radius: 3px; padding: 0 0.3ex; } -p a > code { +p a > code, li a > code { color: var(--link-color); } -code { +.odoc code { white-space: pre-wrap; } /* Code blocks (e.g. Examples) */ -pre code { +.odoc pre code { font-size: 0.893rem; } @@ -419,6 +578,10 @@ pre code { padding: 0.35em 0.5em; } +.spec .label, .spec .optlabel { + color: var(--spec-label-color); +} + li:not(:last-child) > .def-doc { margin-bottom: 15px; } @@ -434,10 +597,10 @@ div.odoc-spec,.odoc-include { .spec.type .variant, .spec.type .record { margin-left: 2ch; +} + +.spec.type li.variant, .spec.type li.record { list-style: none; - display: flex; - flex-wrap: wrap; - row-gap: 4px; } .spec.type .record > code, .spec.type .variant > code { @@ -454,9 +617,8 @@ div.odoc-spec,.odoc-include { padding: 0.25em 0.5em; margin-left: 10%; border-radius: 3px; - flex-grow:1; background: var(--main-background); - box-shadow: 2px 2px 4px lightgrey; + box-shadow: 1px 1px 2px lightgrey; } div.def { @@ -536,6 +698,12 @@ td.def-doc *:first-child { .at-tags li { padding-left: 3ex; text-indent: -3ex; } .at-tags .at-tag { text-transform: capitalize } +/* Alert emoji */ + +.alert::before, .deprecated::before { + content: '⚠️ '; +} + /* Lists of modules */ .modules { list-style-type: none; margin-left: -3ex; } @@ -618,19 +786,32 @@ td.def-doc *:first-child { line-height: 1.2; } +/* When a search bar is present, we need the sticky sidebar to be a bit lower, + so `top` is higher */ + +.odoc-search + * + .odoc-toc { + --toc-top: calc(var(--search-bar-height) + var(--search-padding-top) + 20px); + max-height: calc(100vh - 2 * var(--toc-top)); + top: var(--toc-top) +} + .odoc-toc { - position: fixed; - top: 0px; - bottom: 0px; - left: 0px; - max-width: 30ex; - min-width: 26ex; - width: 20%; + --toc-top: 20px; + width: 28ex; background: var(--toc-background); overflow: auto; color: var(--toc-color); padding-left: 2ex; padding-right: 2ex; + grid-row-start: 3; + grid-row-end: 5; + grid-column: 1; + height: fit-content; + border: solid 1px var(--border); + border-radius: 5px; + position:sticky; + max-height: calc(100vh - 2 * var(--toc-top)); + top: var(--toc-top) } .odoc-toc ul li a { @@ -638,15 +819,287 @@ td.def-doc *:first-child { font-size: 0.95em; color: var(--color); font-weight: 400; - line-height: 1.6em; + line-height: 1.2em; display: block; } -.odoc-toc ul li a:hover { +.odoc-sidebar ul li a:hover { box-shadow: none; text-decoration: underline; } +:root { + --search-bar-height: 25px; + --search-padding-top: 1rem; +} + +.odoc-search { + position: sticky; + top: 0; + background: var(--main-background); + /* This amounts to fit-content when the search is not active, but when you + have the search results displayed, you do not want the height of the search + container to change. */ + height: calc(var(--search-bar-height) + var(--search-padding-top)); + width: 100%; + padding-top: var(--search-padding-top); + z-index: 1; + grid-row: 1; + grid-column-start: 1; + grid-column-end: 3; +} + + +.odoc-search .search-inner { + width: 100%; + position: relative; + left: 0; + display: grid; + /* The second column is for the search snake, which has 0 width */ + grid-template-columns: 1fr 0fr; + grid-row-gap: 1rem; + /* The second row is for the search results. It has a width, but only */ + grid-template-rows: min-content 0px; + background: transparent; +} + +.odoc-search .search-bar { + position: relative; + z-index: 2; + font-size: 1em; + transition: font-size 0.3s; + box-shadow: 0px 0px 0.2rem 0.3em var(--main-background); + height: var(--search-bar-height); +} + +.odoc-search:focus-within .search-bar { + font-size: 1.1em; +} + +.odoc-search:not(:focus-within) .search-result { + display: none; +} + +.odoc-search .search-result:empty { + display: none; +} + +.odoc-search .search-result { + grid-row: 2; + background: var(--toc-background); + position: absolute; + left: 0; + right: 0; + border: solid; + border-color: var(--search-results-border); + border-width: 1px; + border-radius: 6px; + box-shadow: 0 3px 10px 2px var(--search-results-shadow), 0 0 3px 4px var(--main-background), 0px -1rem 0px 0px var(--main-background); + /* Works better on smallish screens with this */ + max-height: calc(min(40rem, 50vh)); + overflow-y: auto; +} + +.search-bar { + /* inputs are of fixed size by default, even if you display:block them */ + width: 100%; +} + + +.odoc-search .search-no-result { + color: var(--color); + border-bottom: var(--search-results-border) solid 1px; + background-color: inherit; + outline: 0; + padding: 10px; + padding-right: 0.5rem; +} + +.search-bar-container { + display: flex; + align-items: stretch; + border-bottom: 1rem solid var(--main-background); +} + +.search-snake { + grid-row: 1; + grid-column: 2; + display: flex; + align-items: center; + width: 0; + z-index: 2; + position: relative; + left: 0; + margin-top: 4px; + margin-bottom: 4px; + /* Otherwise the search snake flickers for very fast searches. */ + transition: opacity 0.2s; + opacity: 0; +} + +.search-snake.search-busy { + opacity: 1; +} + +.search-snake:before { + content: " "; + display: block; + aspect-ratio: 1 / 1; + height: 100%; + margin-right: 4px; + border-radius: 50%; + border: 3px solid #aaa; + border-color: var(--search-snake) transparent var(--search-snake) transparent; + animation: search-snake 1.2s linear infinite; + position: absolute; + right: 0; +} + +@keyframes search-snake { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +:root { + --kind-font-size-factor: 0.8; +} + +.odoc-search .search-entry { + color: var(--color); + display: grid; + /* Possible kinds are the following : + "doc" "type" "mod" "exn" "class" "meth" "cons" "sig" "cons" "field" "val" + and "ext". + As the longest is 5 characters (and the font monospace), we give 5 + character size to the column. However the font used for kind is a little + smaller, so we adjust by this factor. + */ + grid-template-columns: [kinds] calc(var(--kind-font-size-factor) * 5ch) [titles] 1fr; + column-gap: 0.5rem; + border-bottom: var(--search-results-border) solid 1px; + background-color: inherit; + outline: 0; + padding: 0.4rem 0.4rem 0.7rem 0.7rem; +} +.odoc-search .search-entry p { + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.odoc-search .search-entry:focus-visible { + box-shadow: none; + background-color: var(--target-background); +} + +.odoc-search .search-entry:hover { + box-shadow: none; + background-color: var(--toc-background-emph); +} + +.odoc-search .search-entry .entry-kind { + grid-row: 1/2; + grid-column: 1/2; + line-height: 1.4rem; + font-size: calc(var(--kind-font-size-factor) * 1em); + font-weight: bold; + text-align: right; + position: relative; + bottom: 0; +} + +.odoc-search .search-entry pre { + border: none; + margin: 0; +} + +.odoc-search .search-entry pre code { + font-size: 1em; + background-color: var(--li-code-background); + color: var(--li-code-color); + border-radius: 3px; + padding: 0 0.3ex; +} + +.odoc-search .search-entry .entry-title { + width: 100%; + display: block; + grid-column: 2/2; + grid-row: 1/2; + align-self: end; + line-height: 1.4rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.odoc-search .entry-name { + font-weight: bold; +} + +.odoc-search .prefix-name { + font-weight: bold; +} + +.odoc-search .search-entry .prefix-name { + opacity: 0.7; +} + +.odoc-search .entry-rhs { + white-space: nowrap; +} + +.odoc-search .search-entry .entry-content { + flex-grow: 1; + flex-shrink: 1; + min-width: 0; +} + +.odoc-search .search-entry .entry-comment { + max-height: 1.5em; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 0.95em; + grid-row: 2/2; + grid-column: 2/2; +} + +.odoc-search .search-entry .entry-comment ul { + white-space: nowrap; + display: inline; +} + +.odoc-search .search-entry .entry-comment li { + display: inline; + white-space: nowrap; +} + +.odoc-search .search-entry .entry-comment ul>li::before { + content: '•'; +} + +.odoc-search .search-entry .entry-comment div { + display: inline; + white-space: nowrap; +} + +.odoc-search .search-entry .entry-comment p { + display: inline; + white-space: nowrap; +} + +.odoc-search .search-entry .entry-comment code { + display: inline; + white-space: nowrap; +} + /* First level titles */ .odoc-toc>ul>li>a { @@ -655,6 +1108,7 @@ td.def-doc *:first-child { .odoc-toc li ul { margin: 0px; + padding-top: 0.25em; } .odoc-toc ul { @@ -662,8 +1116,9 @@ td.def-doc *:first-child { } .odoc-toc ul li { - margin: 0; + padding: 0.25em 0; } + .odoc-toc>ul>li { margin-bottom: 0.3em; } @@ -674,12 +1129,35 @@ td.def-doc *:first-child { padding-left: 12px; } +/* Tables */ + +.odoc-table { + margin: 1em; +} + +.odoc-table td, +.odoc-table th { + padding-left: 0.5em; + padding-right: 0.5em; + border: 1px solid black; +} + +.odoc-table th { + font-weight: bold; +} + /* Mobile adjustements. */ -@media only screen and (max-width: 95ex) { - body.odoc { +@media only screen and (max-width: 110ex) { + body { margin: 2em; + padding: 0; + } + + body.odoc { + display: block; } + .odoc-toc { position: static; width: auto; @@ -699,11 +1177,53 @@ td.def-doc *:first-child { color: black; background: white; } + body nav:first-child { visibility: hidden; } } +/* Source code. */ + +.source_container { + display: flex; +} + +.source_line_column { + padding-right: 0.5em; + text-align: right; + background: #eee8d5; +} + +.source_line { + padding: 0 1em; +} + +.source_code { + flex-grow: 1; + background: #fdf6e3; + padding: 0 0.3em; + color: #657b83; +} + +/* Source directories */ + +.odoc-directory::before { + content: "📁"; + margin: 0.3em; + font-size: 1.3em; +} + +.odoc-file::before { + content: "📄"; + margin: 0.3em; + font-size: 1.3em; +} + +.odoc-folder-list { + list-style: none; +} + /* Syntax highlighting (based on github-gist) */ .hljs { @@ -777,6 +1297,85 @@ td.def-doc *:first-child { text-decoration: underline; } +.VAL, +.TYPE, +.LET, +.REC, +.IN, +.OPEN, +.NONREC, +.MODULE, +.METHOD, +.LETOP, +.INHERIT, +.INCLUDE, +.FUNCTOR, +.EXTERNAL, +.CONSTRAINT, +.ASSERT, +.AND, +.END, +.CLASS, +.STRUCT, +.SIG { + color: #859900; + ; +} + +.WITH, +.WHILE, +.WHEN, +.VIRTUAL, +.TRY, +.TO, +.THEN, +.PRIVATE, +.OF, +.NEW, +.MUTABLE, +.MATCH, +.LAZY, +.IF, +.FUNCTION, +.FUN, +.FOR, +.EXCEPTION, +.ELSE, +.TO, +.DOWNTO, +.DO, +.DONE, +.BEGIN, +.AS { + color: #cb4b16; +} + +.TRUE, +.FALSE { + color: #b58900; +} + +.failwith, +.INT, +.SEMISEMI, +.LIDENT { + color: #2aa198; +} + +.STRING, +.CHAR, +.UIDENT { + color: #b58900; +} + +.DOCSTRING { + color: #268bd2; +} + +.COMMENT { + color: #93a1a1; +} + /*--------------------------------------------------------------------------- Copyright (c) 2016 The odoc contributors @@ -791,4 +1390,4 @@ td.def-doc *:first-child { WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - ---------------------------------------------------------------------------*/ + ---------------------------------------------------------------------------*/ \ No newline at end of file diff --git a/website/static/odoc/next/odoc.support/odoc_search.js b/website/static/odoc/next/odoc.support/odoc_search.js new file mode 100644 index 00000000000..0dc659d27d5 --- /dev/null +++ b/website/static/odoc/next/odoc.support/odoc_search.js @@ -0,0 +1,66 @@ +/* The browsers interpretation of the CORS origin policy prevents to run + webworkers from javascript files fetched from the file:// protocol. This hack + is to workaround this restriction. */ +function createWebWorker() { + var searchs = search_urls.map((search_url) => { + let parts = document.location.href.split("/"); + parts[parts.length - 1] = search_url; + return '"' + parts.join("/") + '"'; + }); + blobContents = ["importScripts(" + searchs.join(",") + ");"]; + var blob = new Blob(blobContents, { type: "application/javascript" }); + var blobUrl = URL.createObjectURL(blob); + + var worker = new Worker(blobUrl); + URL.revokeObjectURL(blobUrl); + + return worker; +} + +var worker; +var waiting = 0; + +function wait() { + waiting = waiting + 1; + document.querySelector(".search-snake").classList.add("search-busy"); +} + +function stop_waiting() { + if (waiting > 0) waiting = waiting - 1; + else waiting = 0; + if (waiting == 0) { + document.querySelector(".search-snake").classList.remove("search-busy"); + } +} + +document.querySelector(".search-bar").addEventListener("focus", (ev) => { + if (typeof worker == "undefined") { + worker = createWebWorker(); + worker.onmessage = (e) => { + stop_waiting(); + let results = e.data; + let search_results = document.querySelector(".search-result"); + search_results.innerHTML = ""; + let f = (entry) => { + let search_result = document.createElement("a"); + search_result.classList.add("search-entry"); + search_result.href = base_url + entry.url; + search_result.innerHTML = entry.html; + search_results.appendChild(search_result); + }; + results.forEach(f); + let search_request = document.querySelector(".search-bar").value; + if (results.length == 0 && search_request != "") { + let no_result = document.createElement("div"); + no_result.classList.add("search-no-result"); + no_result.innerText = "No result..."; + search_results.appendChild(no_result); + } + }; + } +}); + +document.querySelector(".search-bar").addEventListener("input", (ev) => { + wait(); + worker.postMessage(ev.target.value); +});

    aNwB2jZ-4n)90Y*Z}3&c9z6gi%=8fLLhXtD3v}-uoY5RHSqm|jLu6>y#645Gc<5ryOS06MIVird z-m1E1_HPJWjEapSP^4IaB6M*!5)S1FPtUV3r*{VUx%GO=zDNxu2dsi+v$v=qw!w&v zDv1pR!9MCM+IWdr!?-9;|M^cn?W@!a`>F%{K3%Uf0>g}C2$TR&G)`)pXLki3SbkA} zKd6zCPI~Ubc>V!q>CV7#s+zx!nbs`(FN3yB>D<{4;1ebJ3>Pq> zEr5S;GBH4x_pc9cSKptDx-Oxs8XBmlXZ*0UX=<*>THo6#tpFSVML`brdMK%;O&Z@AmQ=bg zWTCF4qD)xLC>u5e=)ob`zIz01P&z8=6t%i)oCL-mOR z=OCAh#a-O;PfWf60jLPV^R-sm|GMWdaNk@=#vP~;E+Avf897+BvmIiRsdYN#cLS)d zeAtmNv8-cM_~&EUH{EkKrMFAeNYoc@$WG#?$(NM6#u1|Ymgq)NII{70q(nG_HO#;1 zviAR(WhKG-J#-OYWF3V=EE-_pLJC!g?dbnM`ZIq9G@3!I0<49EIl(5O0k1ZlHA3Ja zI0Y_6oU?#^YaSSL|}l1pzBFGRv|GD}NuK)j9S=`v2XrgZJ5-nK?C8QBe^Q5m7a_zjt8;&K0N!0t8ua zZ~t4CvoSgIc}*xKEdhc|zGrGq-GJS81TK37kLRq&DZG&YrU0~tLV!ICNEqNA)2)db z&^$qho78oaO}TlhX^bJxRps_bd>{x2b*r7|aw=3P!TLh_aI)fNc3 z(Oy0Rly`%*mB2>=ls^oP%0`-tpZtRDkFcJw*OrlAG7KDZ!Phg{bjgUr?XFo)J*rP*B>Tl^+*u+@H` zboYsJ_EtJZn_RF~8*#KYyWVCwTb?^wp7|R1AUrL=PJRS)o9t1EQspXC_Py`{^wm$T z0R|eR&R|2;8)l?YM#BWnmI(`(#T3Rdmfm!wJuRj2keb#Y%x-(2#B?tfPF|<|JS2`d z7#NTh69-fd?Y;w4rk5WGDLnMl-w-g+^e)i!ItbR-1Bqj#Y3u9)Yf7x2uxLxGu#wd) zrG+^!YnYSfxY;+Wr)3VFrQ5jtX`JaZaYj%5Mj$>YM@y$@I#1qYk||`shVcV*^MO~R zo{W3r#<(=jjAQ)-(Su|6*g5_iTbHgME63tBO`JxiQO}rBRb%)lo1#%Xaxt&T8;038 zQb+uB9+4wtXouH^9CrlgJ8noM&S0eL@c#Do%XG$=zUzxV>YZNOxWFlnu%FJ6+xt&9 zcWsw%NaV$GA!56JUe$@2ozgm@mP&@cd{7IU)66C}w&B&)Z$pg?VhvwDVP6(bLlndB zn>|MTu5=3ssenUrzWr8<@j zPHFOEO!`J5(db_u7@sI3jVR9Hg^5u%fwAa^-F^UhQf_v4LHGyfqMi7i+-w>7pLMSn zG-6~ksth#s50pk1M3Z3UXuZf{L`y91O!H=wZ+7!>lXtq+Ub(*fLS>#CZu3^LOEkBE zk>*)GJ+8@`tSeb^MQbdUC(k1R`lt5Kom5Z0t+C(3IzVoCWgb4#G=x|u;guD1Mf1wY z7wxQd~y9Xk%C~hL^S>1B_d(BL;G5acNVw3BM%uB)9pP*e%#uS4c#UjXxBUF4howg*~g^p(Z=nk82( zTJz4j;?+!c703j6JMndk5(Y~Ym4JwVARXva)x2l;!YdKwrbG{6{ZZB?wp`7_Jy}0e zGSWAsAE5uP3fO6q%IEfn+z@_M;y>fmWC(orSPnbxx;zW73qu|ij|?MQj0PNfo1Yw!Nom5h%+Te*%{V{ zNc9WgxWc&}o<5eoe)Ff!XK49MbiF>6jBvI_hnA7z@)>`kuWfjG1*dZIjK{} z*#r|gnq(3elT9%Uo7M~-j+rAfYaBEV+w5VPGk)fdo%y+$2LW4vc8prbFmw)PcQ~$t z9NdsY7_P3f5{Dh(>*(N)jns+pbS4`UQh?prFxP3k-59Z(N;s2pbP7lG;`Z=U! zS-R$-`kG}KOJoZ1b}qe9yd|sH-s;a|bwH!Ma>T0X82Y^+$-}Co35zb#I+hN-T4>#U zN{7>LfPCj2$@Y{7Ej|JuT84BQlR|FJc64V07+q5^GCqV8J3SDu(!5?a|C?mxMENmWW>JvpnL42gPbb>FC z%MrO8#k6snM+l`VW-HvyXG{0EPi9`G9Ook+^ng-7Ht8X%RFSRn45swlRGy#G3ln>( zT2Ztp4M#~bnvoUxq(mphS+!9MJ}J3+ZT#&U-uBTZ(xdA0KH&@ETgS%?fB#8@;rn<6 zL=UFy4eI-Ulw@gzc^S*;i-!MamrWb_+LscaOUo|6Z{13F!UuoBmaMPsZb499x4q%n zu4J~ix2TebG0S(_$NlEQpY!Cbke`542}-a?ht!Lqbbc|;E!QBNK?gA3xhPIJP-#l* zwB7G%2Y1gtr*#RCAo1a>W<+MXU-(Vm^*!G=+p;!(W3rDBZeaaV!E@Ol$BAB zuSKO+EHZUUZda}$Ed7I5&Hc-N@PL5lBd~XiBp>JEIv?aWc`s!BI6aE z@SXZ}@KLYNdQbeAvAJzqRiNH$F*9=})Kqykg{OL>&`%xslUf${!ZVzL@TaH*P9-AN5p_ zT6#9D{uZ{DNmZ%(OPDi#<6t{Zagw@I7gqh*^zG`z#S5}G`HkD{%bb#)4zd>Z00Kz; ze}%WM!6?zrPc6#``=Z^PG=reB38&c*7gEEH)M!6T}&>I(7``?T^1FZfn+sw5KL% z_{hYlwI|HOQ&V})-S*VpAspxVm3kl9Xj{>^8?=KXbtIM?Ft%*o`bcqK*XD9(yD^T3 zVz_{3O^TJtfXHQ3eT-6Ez0Ik8 zTW1v^oXfQ8yZp$90rYI+hMS06L!AtB$8dL!cGn1Z7dXI8x*sFVM|$7E2hInm<3qIV z&G5-c0>Ki0h0c(U*o)HQdCU>$@kvaRK(Jga`*+FX@h{V`cbfs0K;n+?ZjjXF>~L~A4ruTG-#)dSn9 zGoPhbf6(U0QAe&=*vf#jz0oFB>64kSmr;@$`xHUrO~zoIFloBBzWzpV{$LrUD@=8r zp0q0sHz&NURGF379(<$>GGdUf(~&uw9|da-D$DzEeFYLhiM?Ftk~wwPV(HkmYa5zo zbDK0qP*t+Wmix-PWj<)QrNeEX;bh(=Seu(~171R!jX7Egu@NGq-OQOpimbOr@vjn2 zd4ZU~%0N})$~e-Vvg%X=2y&{__@NgFUaGS8ka8BuDmlbxzZ?7 zS`SZmDiSUvoUxt)38xN>L8^WP*4n<-S(|baNj_Z5JBb1~{fAGs4N1l+vTf;+|Jvmx zJdV)foy`YtN7v;Gb6z?ppUFaL!jaSh$mEd&GH~JmTzMg0w#;T-iN6{L?IwhEV~-Qq z0n{T_GubX)re2ydWC$J*w6M3FP9vnVinaMRK~jQo4>biq{)C*mD_FCH%*!AEPPR$W zSOfzB;eOeG$5S&QR~u5aA2r<7`7B~6M71zIjq^1U4Ma#HDl9zI3Hn00feGt<$I(Pb zKX2Yl1!w-Nxzy0{a)^3i%$WkoITsEGAY6gurUcDLo?d7P`bCPN1L>kZaL%v1k+>_E z^puMjwdBR20}TNU%}`N_*WUd_C*s%XQ-yO4WMGL^kvF<`MZ3i}ig9rVrSo&^`8h>R zZn8Bkg^URIlIpP~?z*Q(MqHsx!wrn{)vnZCOuN`*hL~(GqCwpmMak-0Tku^7wO;uz znyXizR~WTK?JooV5Lp7r@J_Wr`7;0x4`c+R9k6WW&Jy!^Hu;ULl|`4^gz z5Flm6jT+`o9AVN5N8i*`E+$YbI0;*wT9Fca6ySCWNV?QeU>r2sDjC7_l=r$(>}Pg? z>Ur3^I*PkAuJ5+r(!2pov^n|rlDZgR@r+bO+t%_Ur3Jqu!xK&+yWFpL!`c{(=~a3y zo&kd7L-E3a<*=fJk^uPFiw7L&-KmFcP(s8P zy?tf&?zZ<#53fEjb>w&%x#X0gCHJ&V2fv&%Vx_S_-=W-kh_bE=>CRR$j)#(zkmV#; z=>yKgq+y0Hb4GvxKm$zSE^twp+7sLFP9jU?#J1gj+gwgTq%ykkpo6U79t)mS15Q&6``dewY3Qy9cuaZnVvpvV89p}5ym#y z?zEUKcAbeE*>)UYyyVOSeNZenO?0!l*N8;pK(7h+PbBThQ`LyeSkIom)o zb^$$<@YeOS(6CZ^sEEALH`3OEBQMG&Z#%J7;H;(Las{pGzypKHRzrA)dhxPu3l=nG59SflTaiqnx%&| zdBLDMe~KD`CRPY5^cerB%Kz^T$W<{^OrV zh48s6S>FH~*kmCrNp<_JTp zOtDR(rP+h$Ut|JzKgOg&1xj&X><8I|lqobdQQ*O3Us+A)pL+mPIn{Oj(9gp`T;yK@ zk=Ah%Djyas1*B|Bwr}ssdJGjt;c-KbU7&SEv64R``d~WZM15^)ED@52^M`#E@QM~| z&Lk6a!5kYZEtDH^wI8`Q1cyAR@F|heid2v3<4eCPC~-ECY%-M@LJ%%&6sd7=%~uz%lqTU2!I0sz$0jYJZ(ED=rQ}XQ1w!bSWh*z5!J3xQ6>=F_bFFCuj{zSY`CUzTh-IS}&I5YF z3}C1|fZ*GYB-H>q;gFK%lmOO+@-ABJ}oL zcsYK`3E30TAtmC+_x1ysd_TwVT2l8Tkt=<4&|sW(?a}mudi#AD@xGWLOfo4ksKKtqaLbOXXGdkG@I&2&JX>HQEo8`Ujs=C zcB9R{oI=389r`^sOdyXm8&dGPi03;B}jx61DVtG z6g(nIfx;!rF(^$>#wDZ>AWV`0OlfKo4gonWy+lT(>FgD7Y_2@{OOUMu32e<67Czap zhVRv&7@sO)%Y_GDak3PpZ?-{e&ZK=87up%vN;R7uwm%Vpu~8qxXbf zys@7b1n2dbSYlI6L(8Z@|C!6Ju+l24t+CcR>uvaP zW$orec$aU+;2~ED{7!Xg_!%4;O>L-TKwyD9NvsncO{7V)77Hx2$YM(@wajrZz4F={Z@mjb7{U<=kr4$^5e?B1 z1KA+Hu0KUH^YKKn`@{=2{^gn;{Vxh2&`WJqps-a!06(O`3^UErXtp`#nrFTPo_Ok+ z_2G#)^NkJAgkMu};{hk3{d%${%YbKmWQLdCu?d81fD14d^y=2KTYD)oK?>iE;I=$> zqkl~#+hMy1h5mEnsc)0ze*VSBJ`$6O%~iHZ@BiqN&x?`fv69Wy+FyLt4MVED`ngLO z*tksJ%dGBq?O_<~G$vEp#T;=T4@a5+2h^U?OJW^F+*H0)=0iKPDe8duFmFh^qGEZ% zjQ|~-hqCzUHz_5^XC)gcgY1S3@?vrUOZgPB0l$O+*@}XbVMI6B5)5U+xkqE8p^I(3 zs=s!}fjS$~3D7-&?2tA<|JVv#Hg|?!-u+3r956>DGK?*6!6x~Ge9g}OoXDNrE5g@E z!s)nV1p%H0&xJ$aP&g8fg$v*ccqe=TfkaForjR+vJZ?+>zomdS2tGorkFSR8^H~@0 z3a71of^a4Ta}2&WmVbbCfFc2?_w*0xAKWjhVW7_6yN?aP$6o*+A5ZU#Jqmpk{P2s( z9@ag0wr(Xp0Rgjs^`3#a??y^6Zf51`ZJsn$+UKwXo&``lII^5z`}liYb2NEqSbB}kGYQx=14 z`3e;&QOeAs(nwXR)fi{IIulHCGLD?`+e7<3@xoK@<0MzTJf^y?-?i8osRO_KuQk5> zK^!_0!hfc@VW%D1bfF?4qobfn$BuvtK38lK3LZSE$bF*}L@PibJujm~ix4SR zlo)XmWk{7KU7i7Q43un;p~?(4+z@?+8LQT4W7MlKk=ls(7^6TbS6p_-UAGbb@-Dqt zaRY(JLp-C`S8iz`kzA53{xWcU6I0uO>;M#*CV6Ci4k1La>ZHFJwJ3)8b^9d1Q>pO9 z+??7nkEWtWPnS`kuq67r-y1ly@P2xlMw=k+@x21O{}8yl6mOqA_wTv-9u`RVcv6f1 zRT!X}%EVYp%!w<~4Ip4}6$#kS7ZoWm1ApX@r%%Ib^w>{(ip*Ow)05BMiZ$te@Z{(^ zbWx4rju#xiE3%;_&bUgVAb7Ybo2tQ&Qm{b!bi4;f4o%i?GgEPg;7|)%V}`_4NQkyH zKd{Z8H#Nq!0{qPj|?~js_R zg-<;bWQ6*;6sl!N3dhhDR0lPe-3Iy@Bs&3_9V{DABfpNOPowYf)yk~zSv4|%dIj%N zm5yWj@OE<8D<3OPnSoByk&rk)kQleub&92onrEJ&I`p*aXp}N{2qeYtc)1KS++2Df zC%uuMD(>%S#S9r~Q8CvX0R=}v$uUrI9JDwO)SLhfCqbK2pu_2TYY^-+De~PjFQ_g1 z4ie$XzAoS>X8cv&a4gUGKSFo0#5S(u;PmLyM;IUs5k?4Oge8P!gcXEUOHY45DC!0Jo1= zv@kV`d73EDq~oz_PBozJP9tw3=?M5h;>f&s?0?ed)y}Anv|6Z3rt=k%Mh!wT3VA@r zBnt_R%pIdphMABt&TbNYEgQ>1GRxWQbVUKklZ@h;5h{*IE#QH6HGnZGW$ChDiLhr; zatcPslU9n2#A$(~%dFufeW^cS0K3`j&d6L zjabv9>%D-U9Rk7{{kCU#V!d|POCow7L5G{|*p9j9C^v+CGw4@I&5l^9bOX@b(!$VS$TB}vfgG{LobI4-b|uQ!C}pcO7^ zLxIB^Y98eJfOwX!^ql+Gn%qp@Dl^DMfCo{!?URpQgW2j(^nx0rG%C>2-%_I4i*Blv z-6VB`&={q4z@jrs-yjS|KSo2dQ=0vZ6f9Q1A_be(??}O6J$EAG%zM#a!UjrD!Hqn4 zPJBiv{rBM->f}?}UnvPzyA48}86AZBF_giN&Dj;>iYpnfNa_@o6JDx%>H|F!13i-h zJ(CN_6h$&sQ8^9OFs27#Gz4MH2*Q|IKxQeDMnzZ6R=3ef*hj2=+3jjt`4?PzqxVDc zCnp1f%D<+7m`|b zWx2^T){wugVJScljENE=FQiD| zy*4f>duE)TiOzNc+g6m)6eGqsHQru}EV1Q6s+5ol)n7>|_Ql`EwyskwVu9ApmNtIi zOviD{g~+1FR!X;wRlY8)uh&&7eWy)FuSu7ILBtH<*+WTERED22umI= zv%n$N=B`r$9e&q|4+cs_6>_(fLBUSjZ7vTxlht8a`T-Yms+5)Bkzu@FIt&k7-N8wz}GneuGc?>xJ@Zd7y#+h};_9c*eW+C6h@_^vaZd80g zsXb2?ak}!k3!bExWAaz(YZB_^?h%geWbo+prM`HIf%-Vwu0Sp$xx7q|Ije!IPg1D3 zQe)?pfOjinlEYGlT%lEbL|LdiR z)k1GUNaA6$O~^K{U8AltNJA>GboIe=+4Tix#c6b^>rNv`nypM$7sR*8B9|?;+39u2 zHMz{_&)v7go<6pO`7f$2$I>SmG6I=1C2xrOW;GWK=Kjhr~G44i5yK1{ zkJ)|oCC2tr@HpK_HGVg6X*r%s)^mDCIFA=#;ij_l2+Xiu2F>gd;+8KQN{W(lE z)_adS+U{ZJ7rpQFNS!?Ng<;9>rvNLfCOdd`^w|i9m!ce+Ut;qcoK9Na8ef0%HV=I& zjvzE_?txNw?4|iL9}>Ejzppfo_+Dw){4&nloW^B5 zj7Pgx=*e5OB=p9GVjZEZ-{!49$K97F{|iZ&UVG1>?>ZA%SOwfoLQ3#EvU8-8W!u8iTuZjU{Uh-WeN9NAGHD0+v_#|3QPC8- zbgzep6N8=4*JCj41mxn&Q&3Gk*)EMoy@d+imlJ8`8BGa=uIu9~< z$aWbDbGx5YaHPaF5#BX1lt5|Q)=&%gv;686UVnrf4$_rn>WYPMEdl{cNiy!+R|`h&^w^m};65AK8&I@1wI$~$VMy`4Bn-5G ze@l={SmfY=t&@jH^{MHF#!m!@urRq>KGzWjYejfVsg6o(zK>AyE+e12333tajYh;P zUez>ae+8Ku(=Ay}p$}Ik#<>PsJ!vmzdDlRJRLQzWg7g00m5nzhDU~G%{EHeZq-8lOB{1q7Mt%# zF{78L-}QrOk$emFCkn7ka$~bxP$OsTP5*qM1O8~6${mXE@Ck(4IWml*cF2$tGwop^ zph!o5ujb}|?7AeVmx!-{O!Q&z0bn3#eBJ&=SuEhZUdd)xw2{popbTvsF?}@HLJy2m zA%+NZKBw&Q;kZE`RA`_i_4UgDZgy^8eZcam&_u@^O|RT5 z(`$*6F;VmTII5QF^&So}&R!bY*0bA5-i-9|w?^TTVJY1DD0XP@DP4+X+$2LAm9Ue| z1|D(o>gIRWQa6uf+I`DGKO#Q%Q`l^;_ATe)6H4^&(cHS&uv(~3>3Q%3p0TNHUH4!f zg}0{rOb@%Sdt}tN4EA{F_k3(4#Ym|3M%R9nS;&Q6pt|Zo#Qoa`4v?XdecP~_oq`j_ z#K)%B%KEQY!0}AU{NIWf{8Ydld-*!M{U$EBvy5;5J8tTWCfCqCNPDQ4bNyU3yb&hi~K6#Z%DZVy(e<`Ky<$+{ZMA45xNKG!Vr? z4O8NO-zeI#RDn7tGrl1=2KqI@(MJ$L%gw8pcDa#pNzb z7rj6Xt1Nl=8G???JxEKd=+4~o;=YuFN{YL5lHJKSCeFR_>YmA07Uwac2U1Tswl&0P zv|$9K=T2{nV{{pD^X=x%ZCZS8!ZmS2D*7UsVfuGz9{TiRc6eryYF!-5F#UYxdgvCM zaCoU6|BXs(0E&o~+W5#OOP^hG_hfxW@HbnFd}w;lnGK$-Y=L3rX0fKh&9Y)sUZ1y%7jLt|I8? zI&+Ky??Cs}72^~4#EVNkvt#?GIk{%g{B77%68mu5=Q()_?~Bb8=Q_K3uB}xwH|%uM zhmx5lc)50U_vz57)%6M^cdo@cpqX8Xuh3csH!K`XPBt}nOttr0zaLq=q^wj6H2vGv z|EOtm(uwBQ?y1g)p!Z^rv}u$PwMZ}12vus3nuQ`%!1h`jceQhU-cg%oe}9yUelFSL zcv6p}5xXT@Uj8O#<8vK(Ba4@FE-K|-b@55k&ifrU3BVEaWDJd(SiKY_+y!(dT``e1 zkAnnXJy;8iRQk)ytGd`$^8n+bT;JwIviM3i9ooIGx(N}iGVz7ZMyi69p3E3}Qa7r5 zsR5z+LM4cGifsey*EL@oxu6xPC4fk+y)atLO0GgR{|H$M7Fae+*B_rjZ z%QB*uYZbTA4b&Skk{aSTyZ-jG7A(W;_i9}OzD^mG`7KLeEiQG1FclY1e>x{d15x%s z0PDrb8K3`x)~6U`QXc9So~`k!qVihmUx+}N$WrkR9z(uvIh0Y(w-=YVFIb?JrWI;y z>U*{h4x*QDicpz~6#cdT-l^U2EO=$9KdiYi-@gQ_n;fw*hALD5QH6T4tL;ua13IO{ zl2=^jd#Y;KHoBOozMD>kjyqwtQZvtRC>z>yDj>G-OTPG#XVHnO4J|TZzr!I+w5ar~ zEuah#c4l|041nvlwIuARtbd9~Qg7dBTO}Jc5b43XnPDq)s9Fse#?zAz&_X{%@4=V? zUm(PEFv71mEw7E+1;fo6y*w%?Z#7EkEdgn{z2|>S+nXQTuoC%WZIRoOAuCqt6~dR( zlZ8I-GGLFke$vDE{>&ft73iYrV>_eqCul=>Dw|igx*|7Whqwb zuQLCdctXaDXZYJrB~G~lE`h!};8n?>Xy+kPu<$2DB!vRdSqyVES&DwPvJeAU1uhI# zL9~o{5`lUQQO)ZpF}JX^i%95Il0~oQlS)=B{YKI-`CMm+0@#;FN?wOefV^l0B+4(0 znrhDi%Ad0QOdI>ox~JYuPQS z3ZcD%BBOlwhk?up9D$h}hU%LTnhj~b+5vmDb@(S{an`;Ec)PeL`b;UrQT+1F#1o#L zg{_-jXBQ5&D2-j~r`H?jV5`*L%dF&i_$|2ISlwkT z$!{2U42A5&6?^af@90xR)Xp6>p<>u1!q*Q;6xO%3H%|5!E-Kcbjms=K&H{VD-WAUr z=}-4J=i&~QmgZ1?Y5{34nTQ;+%I3?sbWIA>&dTr~m{JpE_LWWtO)!)Se%V7_37hq|0y|Y;XH^7!K6c z1fDoZ6G;@Zj8EvKY#hHW!yi88wk6O90~OpKy3=F%*TGr04-hi5QK%6(W zis0G|NVgEm1^{V4;s5@~L?p5!bLouO`56ZO)T+lHQNwG~?_(ZtbjGFPkQ z*-|K;1Bh6HB@sK*ho(PGBUF-cfBg-pe9m5F`kz^M4eo+^&b}POA0FS8Zf$v)GV)w}d5lrb*PJ-u`_0~o`3_wYmgkgpbH$!k zre4>?5W2aYadr)-o-MG{l!?S)oWRJbYUa&;M<(L`kzwmrVhB(Q=ZW{o6o;bluBFUJ z`-Q_ATIk!-yU}{|`MS+;h;Kb|yg9v!qx7;|EP7a`6h|7lQht!4SQhbd@flpXL}n!N zHZS#^IextFh0abYbo@l$=}t~Hqx;E;&B^6T6Lfjnx-HiQOS-I3LR+V$x6Ov3nnE|jE%0BLfvq`(29ZPX=JF)eCMIz>fQEN^Gl2sA$=y=l?5vfnxMF#5b* z;gj%1{^HbWuYZA;-y7!{sAe{wZwnJemHib?2HP;O^Jg%P1fQC!OTm*+WOm_)6qZYs z_fi*DMq_@J1o=#0IQJZyY-L)dfeMq64bCjmGMs2Bm`br z3e%&}Y4Sp7aZ$l<#iXg+|GVVPhja{I)iUn^`9P)}+VHJAGh_)fRDnYtD3Ytv0P=v% zdW*YRH0HMC1RCoJk?>1R>o=*9>Hee<5KKL+#b$~k1k+wPZp!E zEK|24RE{~tfqE}&T6$7nro8wJ8aZx+vzU5#4^nAE0_bvvvs@-~@ELp+reXYiVcz_U zw<@5yc`riXBvN6~y;$98I>Z2HAK{kw*XaBb|Up^y}vh*-1^UzRpQRY+}v~%yESV;U13esTM>%h** zINzp4tfc^vswLrH==gclAQst!BVX?PIsc1d#5tUrE42Zx$cE)!uN4)2;kZ{s(1O%= z;3(6CK$~J{R4<-lyA<)70O-;~^M zE{YBVFPN650j6WqqRV7R1Le9{o4&X1VI3Cs9o2xkE?B&OZ;^i;6`%x69t2v>Jx_WQ z+kibwI?qGP-EcGGKPZ(Oo&m4?EUp3fCg6rW2-Ax21|Iyyd-oRwr`13W@Unko)pXzK z4nJDJXERv~kHXzwUu5E8pO#7S!(OilI^%pD)dg!&sUYCJ>p)j73!(F6fGgnhIVS|p zgHq|dv!&Vw*<0JT%Fc%ZRu16P4bc}`T10?gGePse>*Dmot*s=`1c2AV(KN`;Xf5*eNA@CIe5I|sy6y_d{=suF z@We%6OoN~O84G&>esI6bhMeQxpD1<5;C>9uJLG^eZ7MwF|MDc%RzIT;!E|U!o;Gy; z-w041gHd|jL!+J|mzYh4%LYS^T)I+kdT2CJ0R_cq{8Vp1Ddzg(LP4C(ZV?DL0K4(8 zj;eZB)@*1x{vVrFuG7e?xpF48w06+k2&<^jX=|!&tEWO!`6etJ&}68K%P8a6qUt@Z zA!yL=X8*dwppYqagh;zKhuE^EKd-};t(IEs*%}q3d8)rQ;^0v%dDn3qgFIXLdyeM5 zPa*aIfX=ti0uOOMsLjP}YVv-g)djLk6BQW*VWu9et)gBmPRGrq;_rmp?mG zJ2TrnJ6$_Hi{lhVCL++TA2gb-&aPgKrn9fN&$>Ih`tIgyLD|`MR$`$iahOmo*&rDQ z{lg+u0^`62LUrPB4=9`P=*ttt%^6O2e^a4&trf8A2Z*~f9e?{pfo8`lMDO(e*)&rY z!PH!|v97#iW!3LCmXXXX7RhWZqtOfr7z$&}E6WHeI89ZR=97%ROzbH{9kp1Y1+r_( zz-Lz0<;x||aGabbHZaNbl^D^)Vp9(6gg#{whCEN~T6Sw(j4%C$^`; z_Dre9liz$F^rE&yFQ_Z1mljwPuI=bjIu^|+39n6N zq<08I!d^3jzNsqZ%yJP-zTA{;ac3_%k;S8&)V+jIL_!HsNS`27{(E;z(o@ zj;dns8F_kG=xKqyT+Yjy$`kw6v!bI#yab2K}=xhL#pAWvyH+ zy@WtqM58VqKkF}{a9Jy~*9OqQ=Uz~XgvAVh;Y9%;TRUjupmozAXxI$_$(>3Clc7@b z_$noXsZ#LsWxI=tb`|9BDk|EY&y9%vGyQ|;wKIeJ=zOeO_-?u5`_$8N2D|2u7`KQU zGQDuIqyR-6>awvNj+NvJ-ql${bw|~*|Hg0)j0N|iyaU-3|8KK>?6AgP*Dcrgb@a(P z#%v#HLN#0R`D!N-b=yE84k**-)0K`yl*L)5_nHQziVyH5(~3|L;n8vzKk8(7_!J zRH5`ZAf(Ffl-rvM52f0})mY2%<$xUC$>D<>cGVeZb;hhS7bU4*~IS}6(droekCvLoI6Yq@)e zloY!w3E!l^w@c(Pj9bXhAygVE*7&`I#uuFh{AkfUox69fmIkL!^Ye(1;hadqo)p-- zMP8gtw>905apI#je6ohqonU>gqFc~qHrx=+U^$2mnzgjo^}2x-%+{5<%B=p!akmK= zWP4fwm6eqP4PCwRE&gDXl`92TbTQ`+;qInByy>^U zC4{&1*$3`{!)DmQJScTrWPw9qo_6=!JMob&`pJI2+|xmg#B?aVV!_Lyhbs%kt>n1_ zum5Yjq9^>oOb1d=57=J5r5cb{APyFyKo!%6#j zUK9P8%=sRf>SrClak-unxP?iNU>_~@B$gyPbThQ)?uPrVhG?n)BWkKbP=%mc3zPUw zj&yw-x9n0Dz3+(ApWf@)OaS_StvZkiq8ORB?eyeFzyZhpe*(%+AeYukx@A~%ORr9C zA`8U#0=i{gGvM^QqP`yX=X>hwJ_}*2X>WDE(>4xrWt&jV&uQFp(l*^PteIRB31w0% zC*7jW7g|?8kh4f6NBmVSR6dN`(gBWxia$A2zK)A`)dTN_5Gsf^xOUwEF{|=*6U6Lt zHQ3Yh#FOI5z1EWx=Vw>uD`_D9_o_#jb9GhuFmCo7kFvX!XO*wxw$5S&>vyChzBCk6 zkpsv=M#HloF&MSWL%(#Rf1)Jv3=N`#@*YJ39a0it46;6zSW3)B`RfR zqy+4R%7kb;+0ynweTojm^CXcrJ;TDdWSWwfaUwG=K6Wy>YI4i3WUlgqK;8oE%+?fDHBI5;QU2%>3%o}nHWdXS5hI~;^U9Xh;5c{>9@ zYDNonaTOzOT{{{cR()OJhKIZpn6ZY~&K5+V26zy^OoRQTO`Ez5E`tlxE2r-({EUH3 zOvIF;RRFBvm|e_3R0Hb?od7kov{JKXH~xzjg}u<>^cN>)iZQ7X!Kly>Lp=l#Y*B6v zVi$al)xgzyUYAF^nT=BC@OfaB6KMhZz&-I-6v%h|;21nCqeN!0YcW|X%qH7ha^`2y z-vIye>LyE*IAY*1+^5PLYsL-;WYqFzfL9A5q7XA_=MA3#b^@J3i@J1f#sG!6%n*AJ zZjCdfOEpU5EO2_(UtthN!-Ui!3VMY=w86LrBM4jo|71&TXar?S%W4K7j*df$l6mGH zm62eS2-IZ&7;JxHm`TDgVFB;}eha-VT|1dhR-U^xGcY`b2f#}Jfs|{)3~c)NEb7QoY72CYKCD{%?$(7U8u&u91ecOlhB@! zH)yoyrpj7aQq?b!nC!SaLz zZGduLEowH}^BjYRc_#^g1UjgZSXg+xI_ESFIOl9!CMGOAWH8}-lw)ZFHXi6!Spqra zX0e1_d%#l{N<%uqg?;()Q8&MPMps$fAPiJI!QA&v5YvVcuz!0b%xI!aF_LwE(jgWki+mHKX$ zKYYNYPF+UVN=vEMIpM;8_b5*Owz+I^rt2u;P1FXjJ4Q@OiBUD*=RBnO8^GXgHeld` zwWi)=iip%mQrgY@QqDIRTx|x7Zh@}RT24Kk|J-5~J2Hn#eVY$eJl zU}MZJXAF?kEG9f+h`3(lJ5N@(+eiy4B{ghZ&$sRuFmP1kA=tS_njf4|Xx0(OVWzn& z0-_`FeiXBnuJ1jbyB<3v|4K!250-8AmeT1Qq`@iGS8AY;vUPHbEiGe zwo)$yHtll6=$TPGPYy)MW>v^W6pFE#OkW4|;Otd7vK1hUL1zelA=9^d0Y73>XV znHy~0wU(A@OxpM-o_wrh^SF-x_WsQyJ5rIcV0yk6XK3F%eyvT_n5TWR1!$sWyM^P^E+ zkW@%Re9JB*k%mYdB!!*03E0kar~!}Y);KeL`LkdLf}6opU6n-|GYURNGq;X^Y^v;V zBVpCJ;_|k8b7lw!)w&NATiG9npF`RMf{r^$>=8ULwgrI<>mUFpbhMu zfGbpDbIVLkJ(#^@TBHUgqF}seh4E5`!-{-_HK5tnXJl!W=7r90d_WV{6^5LwPsl+g}VyF=Z;uVmD6 zuCPs8UXe151r*;?1d@}42SQmQR1u8V;tS!DvJTpCS7n4m2!11hBUY2cHVS<_ zzX2g8`&`aEIfxFyF*f1I7OQTjEy1CT`AEN+XS*r0SzX^8fL=d0Hw{#9VUMbpagaeF z?e145iN-eRDCak0jAVFpJNeOTo{12laRlSQ&@dcn~ zge>dXN0dxVAm|4N$6<2yT352V3@{tMYW|#=lxuAMSH7dM8VJCMK38_yvF0|bYrxui zFvNV-eG6@9Mk&4RWURHU1B$rN%K-)rs%Ibl*6K^8Md{_xMWi~Fmap|D#h z-76tq1d(ZYPVDE@tsKx&xom5wpp@FM#wFMk#A19ff3c9z60$acoWE~H@XeY(I*Iex zq{}d|A{rpY$sOT_Fwqd)=g`vAe| zCG5N0uQUgjCtVqeVz?SEg(>u?=UUVz1@ozj1W@!zR~3*$wi{)6=&PabdIN|027@Tt zfHS@)s7{9%nH}vF1|+PCKoF}{9!g6n_{3!;ybS|R`0=&{0k`lT7S^}YB^bZpmD&=U zil`efF7c7SImn04wz5?U#kdHbK?&WtmS$|TB?>sg=Ihg7Cwvv>+GqBahZw+&$HBF11? zr5upfJP;F4ARd8oluw|~Nc{MQ%=7?s!m8P$)n34j8X1TJrUq|lh=yW^FH*P1e28VH zRP+~O`G-eQ1A|Okg+ik{`e&R#QOM*>YlF2_YRHhnsJF_)JHa!Olk5Oei%YBjB=FVI zhWmI>7XRlsI>Le+o|7*CJcQqT0`SWGQ%UMLk6K9|zvddaLWtpe zG=~Mq$eHISxYLj$!$`F{xpuPl)F*?2c$RR>V&DP*pe(Rfx`37CT$^O)NkXP?NMWjP z?dfPb8Iv+$x%`@hi!r&bRh=2fV9?HjAwbuDsVuimi*49!#=VZ=<=~f0JuhQ(+f-F* zQ)^R~#ig;ioLw~J=V%Ufiv@j%}x#Itm{Gc(1vDP zekAUV#!4Y#3>NDbZ?7j=(rXzKlHzp$kIpGqDY%yJ@)|;H=`n@a3Zmf9)_*z z`}~L82h1Eq=RW{TJkClI_ioUDyV|Gp$W>bc2ys49hJoKSHH?7u8*L_RaLIlTRcMKQ zf#icK&t@+zhZD%r{rz^N-Zf5 zrCg;yq-aT}D6q4X+oJ(SBJLfeW=2hrpzX;8;;TPjN8Bt!>H-&0_X@f zt<)yt=h+WATGC~dIS8d5JLcd_Uonpc(+ucZ%Q3I~0n~WUW7JAk3S^~gdMr@zc82+O zRax2stNma)0SYK0PQOs)>X!nDP8wQY4%dQ>)cDY`cZl+rIZ?$o1u6p>OVhfXWjQfEL&tfEQze&2%0$171}2jRs#Qdrkr5Lo>_H47wAmTGRyV zUXfv2I$vv5L_sZl0(sg)6DRpQK3MdKYq653Fq)(3+5fk1^ryQFnVE6VafFR!A%i5b zS!<9BABk;}t=5XVC5IRvMa)rskdQt+$3Pz@esh0EyZr}Ye1SZvqWA&^JfSzlkU2%} zH7i9?qIods9+n>fCx@nqqG`N*ceuU2H2Y>}R8&V*kxkF0r(3^{`=7hdeb*$%yq0H3 zD6X*}TUWFFD@H@_-g$1tb13mV>fsfP!c_Dq&y6AHi`h~#yQE4kTAyA_>cl*_0UX$y z*UukdANHhCRX2XLXRAGt*Nrch%R5s5c2C{dZJ`HUMgrdv zIZw-f#RUZZ3V=1W_}aoa{2JuVIF8siq9`hZP^_4O|_#u7)}%X-J{4a z3!MH6>hT;`uq@!_w%(B8k-bMFDN+vubPWp)pjh=gLIC~y?(TBhZH*!=X|e=DOztl& z9#TzQpe$^di|%3J_Pv2nrg|*OB9}c5;YD;-^Hj2^67$~qxF0ubOw4{S^1FULR}Q_} zBl8{rYVa9nk$9L5V|n4IB>xG*WfaYK{bJ?FQmdnWPu#2Tav}*S7CsW35axdf^o#n6 zvxMH&SBuliXI%wvdq9wd-f&JZ3*2XRLm_u^e%#I}+zGg3eCM15`qoJrJKp4B~-NQUE1g zU}xM)n2#Qa18QL1LETNc!#*zS2?FWpNqUl)MpPIE(i#`thm60|iKyTl%_tfIilt?a zu8@1MGxv~=g`80&(y68oEFZv(?)BdvU}>|5;WZUXmaiGz1ToDoyI-yiLz5#ok8RQ**C(FIM47z^6TJuZGZJ-$t%=^m5#?J5@B(R(y`?_5=yuzP zfg7L%`nzW(mR>JF&Ux^@Q#nof~hhDW8pY3 za_JaQ?*}MRy6!E(!|)3{0-gp7Lj(R8Wr!tj{la@hiOx_BH%7N2lwb)A9c)7z!T?Bz z=jG~0Am$l_onllNog{OCOB);^K|phZ;ZTDP;I<3(x(K0lT@1_mb#Yo2JBijM<1?&F zA)=L8M?2W6mSp<)=tita^*&>#=NVhfXMzMmLYCET%w2?A@Cx??hd zs7Y-y#jMLLkI#q+hbn|5*;mzRwmJt=BN!d9Tuxh3>TZK#$pprC&fL)|vz3b^F{aEI zLyPF(W1V5lVq0FKXc7}WS?R#fPa@_45>D#0lLq;pS*sQvWXgDYO|IN2XPl*=q@s4t zc^6!y;l(@HMSS1E{9FnSmkn{%0^4lo@4X82v4ZGabKOukw5?a`y%l!zjy!_JaFr^o z7k9bc1aBm2S^vC7Ns=r@s+($!F*YO^EiGh7mk|nN$_f?6F&G~jOi-`R1{3X&?E|9$ za?CbRu1ThtYO*}}3KV*0uOeLzTVrkLV8>pW8>-eS_=9wf$xebOXQ+0=Pjl2sXIQ;fYeQU$-8;Y(+R~79qBOk!(W2=9p)?60bxhOM}@O9bk?F%{9+_3oNwAVoNO5 zOS5tGVO8+xfiJ?B+tvK8e%R9-o4fzHV0( zZ5{gexh|VL5@p4h9nLvaPOOZ5TnYcsV<8b}k+Rt?Yk%qmwZDMeTXpLWbmdW*m+jJM z8TTfmmUC?t^=v4OI_w=9O(*jx6-8N++ZlF6yg@`zOiYT1w}`+cVlZKo2`3XVK;+T| z0UHDYzy#11Kp=n%5CEPM0KP>XabvAtC=V%JSu|9}GTP`oU5kjVkvg(~#-&tlS5lT= zPC-E_^c2@z@79OJP<|$?I_wXJS;Yz1rT1{&(V)z*(G`bRadZ#pG-AwF)n1uKc`&&c z?h|LYNR~9@^BS&fJsS!(+1A_H;E*H+xX}yZQRrF5KmVZ2!XA^5ACw25iDzgA2_TlKrV%mk; zYq*}%nzFIpv|wlEN)?EkutwO$`3hoY(W#jem9Rvljyu|fCr3E=?Ay^YMiGcN()_q= zn8jk6$*!WjpeY!5U)}cc%<>9F<*_nK%9~A_ik6h)zNMSQ!$~X%iDA~?h>cgI_1gmc zP6krGz^TKzI}mERa~x^uPW^BPQ0JVbFZvW67~>06N=j*Z&P-bMws@Po)$J*#Xi#Z) zP0>QB-wfRtH&N5K(xlVLnsbis_KTp)sf*Xeirn9|*98?lLx-I~(v1}NiXDSK&CK#l8w*^$E#d#awNNKPZIc3Zkl-G=O`Co!l@<0X7081Bx63AO(aJ2aa_N zfmIvE;V013wII*kHh`x2JiGe3UZA?AJU$X3Y#czq&Qrzz|DT#P;?Ue7 z$vqFO)vntHCbFGWLp2A%R1vd_4YgE}4%OXRwSqQGlG-ZMqMbMjb>d3C3QLrosX3EU zuBjjKN!)&+!VV8uM`PYoJ}|S35c;lIA{beW7kYy?yay>9`FHZUM-oSy!Nj5ME!nF> zi3mnTM&=s~;mqbC8shjIHpBSIh~G?26S=4R2!H?K;0Py!q2!886bKJ}zCL%n1AA2d zxl>N*J=HU?ZRAgK@)AMg;D7cWME_(aA!MRTQB36hJZuyC2a; zh?FE6;Ws)o(?;qLifE)nGNX&Py9a2SEuEw|8&HrGTA~C6j%o?XFedh}=gj3VDt~(x z^)WxP_L2LFeGol=44U14k)#EfAW>XR7SS37R(c38{p)H90o?z8Q_Xwtd++}l00hXa zoHqq%Z37O#jsmygVKoSXz!44{Qk6DQcJ2z5sw&XCLv7hdzn`CogF0n${@wK+zR+%@DC5wrm6$ zrV%sSI?0fxY&Qi?On*k9n}0@t(#vQYAV2_Y0sQ;$bN+iShNzr!iYcX($B<8y0V^O6 zr1qSekYD);JHP*@vqv2gp9YhTJ=d8_Ny|IJkEo{FV*4(Qu_``Mo{^1d$A_ufKd{_n zTN0>YgDN1&r6t!2NyaNB$IEPDxc7kcKW@nIDa>n&lRqtD$p>d99Wer zQ>)y}Zej^=P5{fhd)#TP%RN@P1UQK8c3f>?*th77c^8aqA)RzSV)}{wd(>3)VdYMhKO3G_|(d50TfgTJz%E@ zVLB<#2fXzFxgI`rN(+!PU?xxiIuSq(|NmS~XS(OL(oAJLV1VoLja&8)m_UHpdb|u% zOf+BC>h*;sqB375LWD@S<{n^r0EBc}$ zB1Vic#uy`_&fojlPqP}#%?$`n*pI1R+V4In0j2}AgkpmU3@9*Q2#jdOg5W8GRJg8w zpxfx_V~mA74VO*jK|HqF$$+E$fU6#Uk&-`>5YSwqV+adhiq=5n=@xw@$j|o_Re?tn*Zgn?85f&xX&Jt%DGES+)8kUh59XtjO|%{J8pV{~e!SE*R83>vY* z1yS;XV%t8DzYSgk1@O}#FV|{N96JRR_pShWYxgtDe6rUo+5fH|g6=PAFeYU^ITqzh z5Bln>eN3%6QXMnx<3d*_&+1O$nNWczjLcrOq@rBb5)@avY+s3J9 zg1|A@X*F9=zft8WKDj63Xin@2KS5YadAyG3xE_bYUClLl4Y zIB}vUbOJ^`(h&@Q?0{Ct5lp=iji?y{{;z-b=YH2`7<$lKy%MOe=XwHo2>0O*+>C2C zTHeK-+v%Nj;a!|MZW-I%*49_o;ibTQ%)*q5#5c0)s_Iio-D~GOpe33h!=mUx4Es|o znj_ntZ}~Cbto>Q;s~ za+48FVvjQ6z#vqj*G8ha#v$C8haEabQWOA;L%;mhyIqT7Yl1?-SRh*fwS{u>pschX z84k2e$;Dw>3=5Szx@Ix)l3DYIXiwvxxOt_$6Q_ZuagVKGc&1b@%~MKLp8BX@w)X5Y zL2yiiSysgCvMEY#4LVKUE%!#O3x)(Qp6LcQwH|xqWbsq;<5sS>gKK!?dQO~Kr!I3z zJ$Ghv>&we}q8ONW*FO=XQ@qfGs!LN>^D7)uYj({^k3w}iUx6Ah0KlVJY;#Kfdg7Kf ztF?{N*<{;u4z;zpNa~WT$*s-E3{G4H)-b5)@q9BOlK18I4rl@L!MW^P7mk@@cVe|U zO+bb`Fg23bmM$@LS}->y|MNEsSl_KmRoa4p$AF)1gY2F0B|)*r3n>g#;)7@eA?=_#XHU@(6MV zat(3;atd;U|F>MDS`q$!oI58xmP{}puo{Y`FmLBaMjsRWC*huY?GG2Y8Mqd>9JmZP z3mk_OLb8Faz;0tremMwFN|^9r0rUs*>6c=k`wH=^$+)SetFh4*^)9E-jBc9+kU1?j*F3}`h~+J| z)egvBh(j%L+zH63J!E*HIi2!hp#|+YEMGu;H5>cYf4KimCMrr5@OYE#ZMH=}<8pX! z5F#J|cG9Me|6khMc${w-z#RWc5MF;v!t2*UJdo~UBe8#9FmYv*8sh@Z@cXy^6Odl_ z5n%YOJq}g%6T5e#iMY9|HYZ=AZE@oG0s(5a^TYBgZpz-noOhoFsbp{AXo^F=_>)hQa4-5;dOb|=9Xzyhe+)5h^_to_87ij+UYsbdiV_r5P2 zC@dA&-yir3H@i@4hM8uWZI0wJ-$E8!@--{0wAxx*ZL{4DJMFUD9(x^<-v6Uh&IhOg z>Lo_Q>2!k05-TZ*H8g~JCSr4Qu|%S7X-Qg1P3+jA*tKhF&z^>T2ULd+X^tF;9lMmc za;53UQ;BDuu{`%&;sYP*_}u4~zVx-kcfOMtm1@^sRxML{jXX7JVy0O$b1hm} zXw}Y4hYprHbzQag^9GaK~|U0=}~vs1#*-sAFyrLO0>Lh0twy?zG5V4~RVkd5Xw$ zth|8kl`j1htEk|P{Usap&-|_|Yy`21X%Im;K|Eqs11HEX!BF>8L_UugEc{EeNr? z32HhfRN4M4FU*c9$Hf!mMY4XUVa(HK8GCY39|o*}XsP0J7wHv3H)kncOdFCY6EpD> zG2e?oi(dG~<6`w1FdX?7qhba2JKLgIAk+%~fm@zW`pCXFaq0TkvM&0|G<&RzHZe@`|?DTEWB1fm)9js5K z^zKlp=>1ssN)&e2Ylyf#D@PX%^yHE42`+AAx^CqzR?2wQ4G3~ZmVGk;yw;zh~9z7>WC;ER5-Tbq_ZdltYWDFa0;H3D++vrZUwQv6{%u4f^b zZYH=cf{n>-Vl|!nIN|LRt)fUu&CS?EY=Vlvdzr1eJA--_1c`O}@@(@huuz}hyr=7R z`6C(V8-xuqD+J4zbGeG>BbLjhh$@~6jNziNM?&jgVRs!Ho6f*;`!O)B!txX3{<=Yy6Tyv(hOA|Kx&nbeaQS5iQ# z!uK8LcvjC^0Y*YplBn80vEN_eq|?qg>yiba{%>wkFp*5(FpMmiUq?_CH2rAWH58oK zWSPplaoSNr8y&d`k7RR>DMka|NUCjNG-enKHbjh-MQ#QMinMcWuQ3}zva;IU>@cm` zvSA*A{H6qYlqixF>|2J4lyh-CoF1x?@*>8+TNhoZ%w_f?rSU_|DI|DoL#L zkqFh0*f9vl?;`g7%j%20@B7}e;&F{9uIyNth0uyXknpP@@{5fwI4sVR#97@ zGgQ|XX2$d)EXerj)8LD2879g~6k%H~4jpY;_*skLY{F20!8srW7I+bNXQ-u&bA$^`kt5bhywBV$RS^*{^r96` z4-PZO_CNT*!99~aVd2+cQ4dAhzI*`~0x(;N`lu_@skKJGWgL5{hc zD^aRUg-RW|Ofra1?z-nbKaEL*qndp;fSKGhystU*w+_qzDpGQkZ zRW>7@+U}ftru))7csU-3>)4T4DQ5N|1rjakBIOC8CsLr}$YTd1HP+#L@HADT#Y)%U zY*bC=_`?Qdf;j<~toLyxPT#$pHDEs(k(?^_&E0hnY;@0x`&g#{+FyOc-obt`D3Dkk z@0y8~7Aq8UM@PxQuiq5reH#K*=JRP~1+ZFpJF~!z%mwa&tpkK5DjY!c*TU5zvk`?4 z-fZFnob1cciUm_PrSk-}y&Bzn!Mq8@RGzq%;~Lp{EpgSt5l~apt+)On;a_}otWBmIAlJV}w zN%HB9MTi+UiwTnU+#q8!*Hcq%r!$}sSP--pyiFdAG-qP#^BQ=oww@XsuvXiXdMITT zXUqf4jM2BzVm6urOQ@n5MvY6DFjjV4mxvupJRr*xF1N17v9hsAUaL=S#!Q&xrWe$M zSJ|+&W9D+3qr8NCDI|B4S^t&=MVF zBt;}_FTt_9lnR9Wp-jDhIDHuL&?$}es=0s`k#0)CxOco_Uo2^JgG^?Nm-T>tmKPf^ z-xPYFqA;u=tDYnYls#ZFg% z++Hnyw&{`J(SowdQ4eW>sGo+87UyWLd&Mv1T-`mjs8Hgn(1q*7|cdPU}ErNR*LJ{3&3uP^wm*g%KMwRqWK~h!Yj9iz*ZNFzqVL zo>t580qz9$2|_Rv4gq>j{h@URVn<+NzTg7{Yoq!N)c~Xol!{}BkOxbUpx+YpqT%J5 zTtkz1pDo1ZeIH6}_>?Cmj;tMq(2+ySRAPnD+FGIH-OO6DAHTJ z7G(VNIp8Vlv9+a&VrON!lhDzMg`c$)Du==3W6%N|0|Q>b-7!Tv06+uifYbbz6Ebs) zE$b_UMjylma&o*C=g4g_IpKswSFfS^c^*$08+pDnijuJs)uM+0V+i6l3Oa!tGPnx7 zNCB?2mQYq9RfXVn1R*t0HQR!gHce-?t}7z-#EhzCUD9-Qbv3bupR47A#MYUli5EXX z3Mr_Fz1Xl)$7nbghjONcf+!oQFi$*HQ7_nT}IhJU~JN;d?6A=Lq>C~92=4Nq|Hz! zx|T;tqkZCT5ChsnPg|c`z?6b6*>X~vnoy!7wurWRSp?bGIAn1MHsdKc2Csm~D)~7@ z;m&uI@`lw4Oy101^hvT@_1UH}o-Q#T`V>4_MM-rUyVi7gj%rwak=$(*U|fVP6t>YE z8Xe;>rpjAHQ|l*6NOd){p`^i8WG7sBVqW4$2e9fWmyoX`RHk^0kb19Bgmbz|JSYeR z#~?Ho2rx-SR!>G%qunS5+urc}Bh8cf0#6e#8afgkIRCsj{N(gq%2EdMZI?f7y_r)f+SJUqUf9y*=;<7E;nZpW+(VNxQmIN9W*eHR z)(l3iNvcW=<2u+n0f7$nOx{;{bjetGoRIWRqd`olQ7K{M{7A_Jw`t7H$AXUY}E(rEo2Bz0~~2dHyv!}!p<=gMKESu(xzB= zUB=0=zlmzHWHviUjHf6@BzGY29y7wif+vtLwh;!Q5ZHL_b4mO1H5Etz)5~5X;mq|@ zVV%quqmJNmSjs5=SA!iKKoV)l1hQIOg2f6nWl-IK^*LalVh!KC=taLl8z9T@8-Idvv<&!ZuGx=LbT4oS zH`71Q2T+b;TPx-+eKt;Vcpjlt%cKB@_sD*0VK?vRJ79Tp+|Q=BYR~E^>-B-Qjv8PK zG)co|_}LqrhUdsney~kIK&aZdGBTv+->i+rhv0=fm(m)w`;Zk5?U_bXFyN}|cb{sA zg#yR&BT$!&EfX=|Lrp}t)|*F&{aL|tWa_ z$7V9xK4*#&xkI`Ak_LkRGnJ<%GPQN=#C3aadC5`H5nDQR z<;lyF+`M2bYa3fQaOv^OGZ*}cXRVfznSB=?g*&$}rlO{yJ?AnUu7A9gp`c-4*O~j* zFrf?P;?CT0>Mn5LSF^rQPwK?2=jP$*yvlkk_WXfbP*sD4ek6TES6zh#%>AEDc{|0t zKGMF`T9Su}F3%QJVy-X_xXiK9kyhZ8qF?V^rAJ@x-wU4B0o={I2c-*^47RH>gT{S7eCAcH};a1KpV*$(Cf9Niq^ft2+}(UMjxN-!i6|Zibm= znQe}_=9%xL*WP&Ro%cRu2_hmAA|nc-A{sJ4bYzGa$XYHKvhk*ZM~C96und24K_Drj zA|}F0K$fyD{$R%I(QATY3-#PA0?fBolaXZaR!#%4?g0A)01B@LH)& z^V$b?2#5i!>MScv$WCQ@NkpCn*{UcZu);=6Y_ReGLLxhDy6E!B^*d1I@g`3j&xkTq z`p^95%0f5Lp&UJkLO4ed!VnG^Lh0eRoks&Fpna=!JAcpwhDH?3!`w45M?ENbXXtR9 zMi~vk#p^Z_F4-XlI8|gL0$If7T3ALaErZy-R%*+Tx+ePRirSERJ|jnkk*Wl358_Ue z5Q@kzP*847+Wy8ZKbs&~#sKn8NacYZ z1t{$@2uf8kz}vMJ*RmtTNMW!G32?wSpr(WzET zuSv5OtvZ~F1*iRT*g;Rd^vtVRYNEHMjB&$nJHpXdbAFm=OQifs3A-a>ld*2vZkrtr z>q!bu&`2tsrNHA0)K%4l9FdW}f!NT0#!~B8Cnclcp+*pY0n`Eo3lT0(v>36{B}B+hni zBiizLc{lbGgeDRlg1*oJktuDDfytVW5;83t-%@`O2 za_Jp?uUGPF(?>r_QxLCR%L6 z2pDWZ0=A1`K??N2_doLVsvbq1tzL^VJ0UZF{Mw0%N$~ln#O)*J{nb6_=C=8JvVgqy@bhAw`byG?qjR$|`42eruiHS zLM^3QBjQPlf*dL;=x0$`xQXnDkwKojREpF`_97!Lk;-lTXVi1j?~|t^7YOgDPB@q0V+J!VDBFf)u5Wwr@_Ms zO?@F1wK5HC*(K=#(29E`qI0E)Yd1%3K})5m{Oho&*$5-6D7{xajg?Dgwn($2lQDLZ zU~d*tb^<1;SM}PMbh8tq;+MovvXE&f^DAp#K^w^c(k8ceqF!CK-bQTr0xjiZ*a7Ia z%q0Bdp-xdb{VWEg&kTDEw3>^ZQN1v@C%MZpLKdnnjP!2t>mQE-G(m;%+_3bV0+UV(-- zMWaIvlFjLWjn82*JQ*+bXUhUW2Ys2>xT3(k}qOvKZ6%`dW_WW}($kF!-iRk{$5o?L*(S9M4fPTOCZ>XG-wa)m5*9_t zqKd^#%@S4>uLbr7b520RzoPrm;OHeqf~(c)K>dM3m1ML*$|ijnJtWXNX>p#6SFS{* zVsw4^N}%Y7gfwl@*86zYg=P0{t-nki;L)Rd+6UUk3?B%Tta-STpt39(sDg9H?8N8$^tFsw^0#^c6S-4km?AvT)c;a0nYorkdZkRM+4gU7nTQ{CXX zZt$W3t{%e8Lw-m7;-hZyS-1GATYPJPkB9K}@R;Ax$Z9CJV@1(d#NpN4d*eT% zj0Fg)|MMsyO90B9Kn4Tt9|H6^v;Z1i3pDr;7;zH_0Hr>RA#f-lcDfw7On6qI(9y?p z64l25m8HI?^QI3`63X{bE|7{P9NQ3;&uQtiM=rqCliKmscl4#DqANs!e0WZ~vigq| z!T0z4ioxgEiD9J&rFG#tBZyYv3|p2qVy?BR4WRWXgs#tBC2fp!c7Z5h$un}@+MzUQU3V0SCm~21`Rm1yA|#pNztz z!#G$!#>cG*qbx`rUwk=o9VPTgmgB3>N4-0c*aM-XqfbXk2SAfIpyC3vB3#HU7)wqq zMbenlDTJK6>KRbw_Lno9kL%&`cGwIdP#qV-$Os$FR&oDe1@lKHW5h#AL(L+ibY^b{ zsrBbWOr%C%miL?@bQ7-axgM|WpEpq_Z<;st_^6kVzRu-)y&8*?n5eoxO`7;js-zf| z2-{2*j!hF^0)fS@K@6NHkU$8}5%)j$>(mT&D1gB%>lY-A;W&AMQ!);q1^*T;a8pVx zoUOS*p-|c&!U^Z(lJNLy72Qkjz+1mYo-|IEi36Q3IpK zb5l|_C(#vCcE3-aS$=v7%-_O>ogcTza09Ap?G}PTg&IT9U_&sRQ$cQY4=Y2^V2DA4 z{Vf~v4%`L0lw&H$g^yX-(s&n)Eb<1rCg4PFi@ybiOEB}W;mU^#9IPRUkJLI|%}k39 z4eJ=3T}~cRzlie+G=gl%YZG0yZkAVM-TohpE+{OFJb^*!n@(5sU6igar0{oYH|wV$ zV)@DpT}7&Cqy+&ez4GoprSEG*TJZ2_iaN>1>0%X1?ApxmB9iWi=#L7)0DrdrW`&xl zai|}cwPn%}jKnVE!ixxR)U-vcS`aAE0Sb=$Z#QXa;K*a2`h99dE;stFnj%S})7@4b zgN8LPU5RO$pflaK7lNN`*+w;r;KafSj^d|X(zs+K%iX^N-6yHYbwZGp9@>O$XBKKA)!&!)0Q5|P1nAzbPe-4(uvEo0UA+_l^)=8R;Q4kTO?G| z>@plXnbkm+0zJ{EQ;?eVmaJBCVnQ&q(LL0fjFZ%*+q(jSOncb0t;_NKomT^HtvG83 z1Dxb8@i*Jz0pdu0IP=SQa+_T`kKm{J!a2TeBH#r$(a9x3tB?qjrd66Vk#lA3Y;A71 ztX{u{>dXf9iu^C&N=e8|HA~vad(p}x6Y*Q%$i3TVZ@9SN$R#Idq1e&%0hQ8et#YZ0e$?JBrr2*QHt%XEXZd zCD3I3e087BUEtXsu5;SJ293sE4=&ur$;EGxYBRy(CX|n!L1B3ZNy_^7T9{Jw4B%`BA1HBfxACFiDI;A#w&dx*i&9Xb~w`JCAUFab?rVMZqyB zTNzRXC5nA&pq?P2Z$4z0as_pY>HTM%)@vA#7Lj03jk<};`YJ9&qHtPxOks*EZX^LI zYlMdw7W&9z<2JOg&l-}U%MdWv&Enea$6zh^y=o8AKIyuj5tNIt$66?4Bnxy9b9!Tv z+2?0?R0Z0v*F>~LEK;eHRmjo$C(deG$*eeb42Zys_Vf<(axXszYPdi%Y_AVPA)8v^^a zFA#tK>#>kmww2_Br8#bblOs}617A@I4TAU)Pm$tDh{{zzFgFbws)-mihpN*F6G7OW z^W2p!SDA~9LVk~dY}=9M&7f%`>Y$C-mE^2w%Z4jR7GN$WcfjsD`o7di5|T_sJvhT9 zV$D3|lCmQ{MlM1|{C!c?W9}CtLV^COP<4Rc>|xx4#MNEp?p{;?TU&kW&N65=y~oM5 zJ9tnJ=mf4R&r*o`tw_H%&nir@|GsGB_mS=`lG%yGNJjrT7m4V5(HF>(Ynkd)t3tmZBhg*N@RFV>M`-Y+*fshKI9!ZnUo)i zgOL<(EO&sw^t>Ev%5P*(G{Ow1#R6}F$hwscth6mQ22OP$ioC?8vujJzh+Z9K8n1}B z)+D3PCy&=&?v`qd;*ohKW5sNaI!ST8kVWZ}?H-oklQp!;;%*gOLWn~ z>q|qf{aC4|fK1+C_X+1X$&Sm^krWN!t}WOpxEcB;?l!X6KgeSKcK$8+cWJjWD9H_l zau${$Xd70+d{&PU!)JBLu`6r4BuI$TL?jhGM4FVhL=9BZ^#{Y~BdT~jDU)T~CI`aO z_f-GMzRe*tFu*n|Ga+!~Ef7vKQd3D}c3xdbUO?-aQ!_7vZg;Om<7wp+XX{WxzF2;J zLm(%%cHp%34R5_mHN7LJdg%+VQYuD(gb^;q5kZa>EL*&-{{`^WFQp2CX#znZ`eN{m z9zuCC_zf5qT<^e6i&DU z%T1o|KPY}sP5GOK6M{B%L;p<{j{q|bJo*=v9|Cr6$R&4+vpL;uN)N{}vEbJe z!E(-;)rGWpx+nAZJjvWTJ>0Rsak#Ca)oAcXkeeTNIW2GgzEszTgeG$bpsrk$%YpPG zIECMRN&ywe%gZ-{zbS;=1%vF$$Mn_9=$x94i_i~Ih|RSm0})ZJgd-}j(0Vv*d&$Ai znhwtK^M`u!EsHPKS?KJTy#_J=J2d)9@iU*oVtVkwAIt~WXYxOo?!R7UX!s&(R04_3 zD^I=@$v@FOZnUZ0E(QG5XH_??OKYA&ZV?Z@15@FU0W0frH(#CsQy)fWlJ{%F5oI2U07;il?UR` zp3TFgCzIoNk*0_9C%d<;G~GVaH}_yf`SI7sRNpl^(^2a7=CDg?raz5!AsXKZcA4r( zCy~~x?-(-VWA{N^_f@~zD6Pn&qW4g@--AZqLp=+F#WqFqELa{H{Tcn@tI+6cWXxnF zPeISyn~h53QxsdWgK^C5R2YELwks1ed<{i5*ymH2}!j4!e$zQjkE;S)#46AtG z%d~{00B!EphTluu$R%0n2pTg?-PdK&CJMIN2W+x3%n{dIVzR{9aVeaGrtXHQ$8oG5>B zQvN)#gj>v0X!T%S(^HeE_B=Jew=+Mdlzl3z6|BDWLH%wwV)PONxo@nZ$}<^ZV3tndcxE!nU`dU&!uDGF*W*a2y$9yjzh5%w=x8o(II zs#k*)k;FkfNJ`!C?uSEr>+yv+89LF21<%J<+p3KZ>dx)UPB|{iQkcn7yWM^G0yh5OLTC$t(_ZMK9zWG3`Q&l z8tvwA?@J`~D2cDOV)~^kOpQk||1}vCFQe_6ZNY|Lnbo+(ET=;pNM;8zriMM^nFuek z%(^rgDvqoOo8XRaFX=KdUVlbtRz zw-%#csyu~`z7~~k2z1FWP9y`;Ae$GI1H8$0m&v(QO|r)|GBa7P46Uv8G$UFarsq^m z7L97Uu&Y9=Y3Mf#u235OVchWVEn2)HPEeGK+14=7+LrB0+a!Bdr4thV+uY|paS6BV zBDP5rhv;eboBK3~=}MBV=?A)UEdALSjC64X48H{h z^Ot*9v-rD&Whhr{9EJhCifK|w%TfH18GL@rYEorl#cCS&v(yZQ_1f-=B>{bVnE81G z;o`G=PhsRL83NB69ERfO%$2D$vsC6U`%!aO#`MUqMODQwG;`UFzttkzJ)TaaItS7gVSUFlNm)eUsOlAFy+VZz*)8bv(SLZqE+oa7T%qLU0%-Br zupVioSMbHd&jry9V~%(y-TLgD>n**-+g)5o3?h23H9b%MNd-VI9n>z5s>Na#})Rfu7X~lP&uau;-Be4bi%YIx7pPm zcZv>;w#7LAkL^)7lYYCVxpwjq5_*&zeHPPf+eCP1ye+{yjDBexUN|}LYDdA0*gDON zG@D?1ZOUr~>OYMNP)4*LNgktV_tfqt)EoO;GAVYCilOiHolCO~-sS-IymUAfvI(u6h|1Q7=_;OkcziiHtN8<#8tu+B`%O}MJh*jVY3YUIPifCnSxjG8tOmxI z&X(%~^9dcG(5en#w!A?CQJ z&z!Eki@1TCc z8rj;>Rk%1{f>`)qh95D-y?*KXB=#``#9wRsy(&KQA^$!sPIPf^V&pTIm0cc_UUqqP zLipz0Ngen8pBH`B=VzPB)pWaA$b4PXhYv$M?lnrccmtDmLSFB6>q7ctJe#!pS~SgB zh`R$^bPGBh(mGb1a^>8W1ddzgAr<>pb9e*XQlt*_|2a{f%A*={P&Ks@`fYDXA?z%4 z*ECqE;L4)*UKXZ$X=NVER+W`lY-qbtFKGgmm26rHh8%btYr@?;1GYPze-$c-^_OcX zl()n1*$zhC zJ0$W?d>v4l24&%^Y^XRx_9Tc5>BnCI7NS7@mIz1Wdf5Y+#(eZ zk2pfANWIje9DlK{Ue2yDP{N+7)9VBE;fbyzkFCH#^Bj_ z!fJ#x}RXSiv4_8MYm=Dykv~-0ts$V{BHZ?T@ z?c)l!Cd)?H(@MjRJfA zcX{2NeY=R4J1Z~KJ#a(VBLChl00d|oHQ+&>c|N#+lU{=kE~vavCo%fME~RLE+?CLr zdBzv=$ayop{+8CvSnsg;z3sE<=6yor5JwTtmA0w%9>kz2++XVztu${cF!=pRCWPP)0U zCq$H!iMvU-%FEAS>i#=ExQ=0^(UeTy`T4e7@}YUeA{N3wUAr@jj5f$!OaqhR5-9{D zeRhxKE~dw+YRIbC8we_~j)^|2Znhd}qaH&OkWA+3X|raUy@Iv=*Pn@|te~=vNRC8k z%D4!p-0!MgepcOBPi5(i3WMl@Qd1R37xJ4NEp??+<&}w4ms0Czl%7?KXw(Fx7eb~o z6?Q^>y%yJbkyMYrhOfF)ODqM-YrD}UlNHQ6R{?<&@E!&0Sx|2X;=Ng@JP5bc%zouY z#jLQH)f6}a^)wQh=XhL}#Yq#oxr&$GV3F_8*i7_)8q6o4v5Lx@0v^L=W7O-^cD;!| zkuU?o^=q;?Qri>T_^9`Y3Th>i6e!;D;X!|w&D`lK;S%&!I7S~v)0t&Ke96PsHXhL;|tq``12XlZo=*NNi(cA_g?MWe!vJr`oy2syw$1 zKl=TwZuo`u@SNr0>>~eHrYD`Y+k}fVADlBkXsf=d6Fl1p_2}z%w!Vqs=S`$gkCy-J zK#P{Rz6~%8txaUV;swtRuN<*({no8oJs)nCbBM~+Rb1AHq%J%NVOv&GXW2A$ad*FT0d;<#@mqv%>A&`SFjX`@wis>dQC2AgNC3+^tvpkBX4VagJEcG zBK@5qetr0&L!qyk2b9&X3@)tkYAB_s`u77%!BvYXh5k@WqoNFnd;$wY9>W!7NCF?~ z$(1yv4`XR~$nULY!M9W1%Y()H(x3IgV&4`5=jzHH5TOBB!ij+MtluDZ=eDmvD zh<3f+9)`tlgS5Ay!E8Y@7Ztk(3Hv+g8fZWX)+*o`h^HqV%1MI`A!-Lk7C7_?kOt{y zz}9Jyb{a7}ju_68+#d~f=^0=qfw_!ne>!g8j1P`^{d#A1r~_8ECsw+<3!<^=wI7?Y zT$x!Y#$!JBp`Bh8gVyYo$d{Gvj+X5%Fq4Zln(tLe3RlixU>krkE;~Zsb`Pcd4rF}? zseRnhpjMF70$zY2Fx{XTw;NIc(j8V+7{JMo?4~3fpMO{xWfhXbVr%BMU zhwc$9r2uJ_MSW0LPbMPwvFl?l0 zWxKY*5&;q+?cQ4@??^M?i7lnO$b!m`UUM}Yf0loaHT#o;Hcc!yn`_cdDgO%4u8HOf zii?MM@pDB3Th3yVj%mtN!Sg&^!Z}Hq7DVD_iv|jci9c+Kpxfa{SrtH0cLu7X5&CdZ zmH!VVw>b-eFg=C_&n^z@K`E#|Jk3WSNpk)_^wS>|<H_WnAiL5+w$OnUv`0nC&ES>=mRLgdT}z+-y??Y6);(%bj@GX=SVd*d(u_4vyC#enZ{(#$!~(cUchyG0lY>Fgn!o_k+kB;Yd8Ntk8u zDoQ0?;y~sahVGkOv;N|wX+F`Som*>;24lFgKo_}l^r2+>YX8a=KYnxgA`t)X-P-S3 zYYa^r0hQxs@p2G5SmOyN{YqHnJ1peUL`433qfRK?vKA6`?( zpj(3V>N?klWaRj|aUr25iXHUf9TQO*+Bn_B^H$e!%(GhFJgTJP*o*42|G1tw_ln5S?+j)v zVxI1#ntd3B-1Io_lXcsg%d0p)Tz_GTP+s+N2W#1H+Z?W~p`dGPuHy6UaJaVygYIq1 z#e5oNw_M(DG|KzBnsizbZ|YOxP5qre12x*l;Et*~;xjVoX;NjVsYRi;29g0O-D763 zCvUBL}~ zuThe&$S5l8tK9bys_RJv4my4*Uuo%~NuqSgO0ebQHGz^F4I8Hiime>jB8a)>ichm< zjJUXM@l@f7fo79ZQ15cGc*5vAvZVGCh&PSuUUl`U_K9^{XU8(ubDNSuSHi6xc)t4- zc(Kj`*w#LJh_KlQaeM1qhGG6JXw0On!D3YxE&(#0Ju0+&(L$LeQ`gj?<8w`qy+UCp zNyTNa|DY>ZG;pbW?b}-fB8fFgX=*i!csiGf#mALaU45AU;rmExWgyNEJ5s1h$fEi} z+zba<`)n%+ac9{eQc(+F_ueTH|sCnf0S6;NdprYsM?osQ? z(NvEIx$vm#eHLCS$CG*QvvKn&HHy!x$}}Zte3iRPgq@Rj88Z^l@)OHG+n^MY%I`w2 z{|Q1|`CU%9py1=1Dz{-EJ}h?TcC4=giN`+7cuT zR}UI^pGt9m_PxC>q+RkudPUV0pZIJk8;+gW~Y7! zd%@`c4SAhe^m3;85j^QgK8)*Prp#spi$O+{)pk-eu5~@htK@7;t}ut zJyyW_`_c)~-XCKHRIq~s4dUTp!1lYXz~|P@kJjBGD|CNe_N#ywD!8IsTaUWqfI=@j*DIb%zg0^v4tcA$&$F#G zrzrTYrW>RQEZ`JY6)p>z8qo6kLLLd!A}vlV`E%^71O^yP51@fXH3wW;(th=ESj^=x zNeZ#2_#5!W@#PH^N)$)^8jl)!%)Wq3rO*Y=F_kW=7IDj?@s_{hw#{=}ekdMt^C1{W zZ>wasV`(td0P}1+Kru)h9yXDUs&+QtTm+wi!7gR^v6HsGh z{#4xW=y$L|T;vZJYvBN}mJbr4NV866z1~^AgU(v?y1iJ%f`R~~Nnksj8F#&{ekXNm z)#zYUz|oCb9KS{$9r`Rc=dYTwvqcrZvg9>Y05t6KTPYYs|5gcorRxu1(5C(jsBZwJ zcLyM^$PR3uw)!DoHU@QlxMjO`0P>1hZ%F-#95Dg^F}e9Mx#zLjm-;4y2tc`hP&_VM zrkLSb5mvE&E2{XInQ6}oO{;WR4$4Kgz#xv9vPyMhW%<4MGBtyo%n1M|um4i;|EAEX z5~LAi;;U3-^9$yXDae&YBv@P6-rsxqGHq-Sd_UAj>$S!6`&vI91aP>NQh^g>{SL*15ZUv>orUGRba}X_b=FS&qsFo@kNUCX?PV z9xjuLzPF|WEE`w!tIu@>xNea_XxtZ1H#;+_Yk?YiJ0UrNkagPdhkB2WXEz*py@TDg&u0q!m>F=diZcj6J{VUzMcn!IZW?Y*Q&Zq}l|dLO={PAV4hO zZc~`O;@UTTqK8S&iQA5=X>+D~A>m?v0{e2 zXc_>6ZCPOq29_9YFtgX>^ZYPt84XYqmgTs0qqqaSEKW`wqyQALzM}wef}0!yf&1rW zUw)8pfB3>sTpMg|G*%$3=HiafiH_qeNuu#WW=WrdSaFV!+ha49MqbY7SDMPNa2i=@ zN{RX6-Qs6<^4{n7k+&wrNNN*iRVk$y>#;EMkT?Y^!Zv)jcGC#aY@0#UqT11Q_vPL9 z==a4n>Z_swq^Uwm&vDk{Q{gm5IF3mhk4+%*33D?_$xMWvE)-Kltb~T{`j{+B>KITA zXfKKaZJK{|!D7}j+c3`J$oJKr;{?HA;u2=6g&dh$zU<5l=%JW$X>)c2Qg zE)iihbnhD7Y!F-LLIv!9D1ZDj&o+Q%*^psg)_UF4WNV0cFi4joc1@T6Dz(A<=SX(pL9B}wVIX& zy}UrN-8i}hz#5ZgOVi<@YrAGrd@co~A_3nH7 z`{Fix%D_ECE8b=Kc19Lwn$e9aw0XLYIVYW@8$%2 zhtX*xR-AkEk~2CvP``}sdA}IYfedBIfq2a}i)T+yC*X^hPw$`IpPrl^76E8p!H0X9MoGh^tUg6KuNw$@jiL2iunAl+~Kf#2on zuc7!G`Af>XunuU^Uk)=uOV+>s@8xEvKbxzw>gK0ZEHtrfjIi*h4s4;p{)>fStBV&O*1*uh40F-DECI1 zrdw(GZ2khoMFv$FgqiU>cTCkVS;QjqjBf1>z9b}=`jyfeP5X^Y&jRsg$R*(nefN$&_R00 zT9pTKF)?qMr)Qz81t{qhx59wn^hgPt7=SUH>)Z}E{h)1YbhCxy6o#{;Y=iP(;~D7? z<1F663(o8nZB?pYEMAkaHYlUbAV#m4+8y!<9Dt_rp4z#XgOR{j z#h`D_TU@$5bk}Y@-VB+0WlkHrZLLRc!kB%}L@>2q=Ms>reFBWh6f0Wvg8o9GivgHm z%}-=5)BWeYtqa+EQW`l;0YUOHMWV4F<5;u+=5b!kQf(5;%(>v8H-DnU7cOL87w-m7%mn7F|UUa6z4h1M?^2Cg#bjYyHZ8h?R&(@ zj2%W&g~&{Z)Ubqup85Exr*HnDEuq<&i)TLf_=UqB?PpQ!*CIiA*H?&VJyy#p=x|){ z5Ej#la9Er6o2!%t5uCrf>!GJeEsFPGHWAsYsu-@&g0PlQaIHr@pg_#ZCgun~oTRHU z0hQQbvJ{Ych(k1ubU@JL5|J5OR4iE}M@_s|aGyy5`gk9kYly51P(LoID~ddExGoh? zEE9fp&$MEEm3?1+_0A0dJm8H+6too9Ad@ry890AQp($>4P_C2wcM%0 zL2KZ_xomzq>b>6e7A+cW&0-HlxU5lw0xmSu*n-mh=c2|(trGFydXblRs^x%a4NcKg zA$J>*yy9nMnYLL6&*EsZCU7&}dsb=oGsp9627NCZb@One1V>BCAK+aMaw;ii2Sr0wWVv2AZ(gVrwP3$zA8;y&a_gxv1gh0z8f7k zkq15BjB-yqJ|R+KjWpBdOqw@!7lUbx-QUgae96af^V1YE5j30(dZ>%;R_ib)9+>Q9 z&lg?GmYA{_e~LR7_B99(dIKQUNNJW8zbrDwH1Y8XV8XJOeosVlMBOmfwr=mg3pvjw z(jH}2ZQWV0*N@`Z`baYkIMWGR6(F3});5{nCcUE+OL}g0PyIcmw1Nc-Lcnw znJ>y%&sTNouu$T~TS(av%?j z&5IjmUCxqW@-X{6_^=%)=<~vUI?rbeseaI^kM_MC@HVE;!d68gzpfw1!zbUv*1n4m zQ@7Da4?e^MVH*&c024H|gs%~xg3WFuU0oDMPTfPfH+h{TH46m}nl!~lg z$UEIC;PbHdCBIY0O2~sS>*`&%UU#?M&DyTb9_SYPrGQ{C0l1_@rg-1jyzfQ>)GRSC zolT>oC7|fg0sZhbdh9MGv|T)}dPB zi{FR^Z=OFrmHDr=&kDqHWzf+w2z7`#Atk8i}n&*cb5$O;7@YOJ)I7kwCJ>V}ur zTBF-|8?Ntl%PMJ4#NA6Ya#IFSimd8s=Ru_f&^b=g{T6MTW$m#&WKC8N_K){wh7zu7 z>L%h}QpZ*^PB;WE1c(d=Gp*0}2k2XF{XejrGG@-2`YpwLC2$TIOHsq=z@2_ELWc^< z$bgq0m$e)@c<%(@Z&Y#~yXG|#@b&i}t<7}`j3Cn@HHptRWYn|GpN<_frc;u*0;t$_ zn7DCs{$QdynXz8%J&;Ze&i_l`yW+xPqg59FEw$AtbMML@059-V{sQpFufHVOYd?wv zNE~BBTLU}<&_?SR$HS7`FSSDJn)9UC+9W?f;QpUfPXxB-e|c(WMf8_MesVqHq1V z{8;Ln-RFehwXnnqHN#(+;BoFen|ilHtGWO;iv|v(TLVfwu1=Fwj2BG!@2Sn(yzof;)~q1UbB zL*(@uk@3hQ&z3Qep;qB?%86x0G1hFQfLCRvsBi~3Yr0dR6$gwYdc3#h8V+52IXWlw zs@or|iP)EF=kwR$N=90{5NH(yqpSe|9-BpG*|%SAx*7TgiIR8XS1 zY-!SNx26btS-4*i)uQb{Qx%HsDcdq>uAbI;p~#jlGO~)&h_fUI9rTDq`@Jm+RO1RN z%`%p-c)uI=q!Q(DGXpY{krRnxM#`E}S$cL6STT|>PmA)Dg0<((T>@YqSrW5nb2-}u z>Cy8!I(2Ev;m?62v6p5g7VB29$d3gt2%{5exC}7V~y`*$jm2H_Wd?y_GN z6BtadCkP;Zjmczw!x5bDDr#UE@cFJ&ArPmcFNenpQ(gX@@?Lj<(Ts!4bR?^WT8L*^ z)D_ut3UG0n(B8{*fjTU$w-Y7SmV-_XiDCIR5_@}}+^3W*^%Gk0fW|{I!z&1dso3D# zdAc`v_*J%ubz!#f4iPSNo0d{{p8=mfJiCAM3QzGwceW@=EDwV=d30;V!bOVG)a_WE zQ(5~g-BRu~=V)fjx(43A)cbme3MG$j6U}5IIYJzARR6V21UnU(jh&|b-JOFW(kB;N zgq>(zg0|VwD#@`krqS8#{&_Qh*zik3DnDG%_D9UHD*s|HX_?mOWO!t65J-wt#XYFH zjw0a7)B4Hvyx&?KRZ%H2gy`N%Gch*M7hg-dU?uUeaQj+^P^KDWltnHZ6bLV3X{4wY z2DvvrSdC-2!O(Zs4CKj<`jbY23PU&+AVZbfPulUW)M<=|7y6iIFHTalo_~mA@d~!| zGS@F{_!u&YtQz6ppaRe-<(p4P+wj1~4BnMQR+ZV^rLUoqIVm?PDF{ngR&P5T60IxX zf>9b0lDCP~%-=`)sXTQ=`t079K_%LTvSH8{4_33+`v*YZ>;jA95KhMkz#lo`xae?rRBTjbwWL$0A7yFKHi=$m6&pQW zc^1N0jmeT}v3mxKX!eP`cD9e1iU~=*PRsg+^Ho!AMqJBRrNx3_*xs#woJxW^m@LV^ zz!KegB)ePS*5-t$5nQC4Qi=heFol3mxFW#i6#!ni;L$`fkxec>C+pU)nP7;OOJ65J zJ`{ghEDpUuzh58#{DU+N|Lfa(OV~*HZ{cG61;B^9a4VJ3cl_L^_V*N)nCier8qJ*ASdAB}scNL9k4#ox=gLW2V-$ z=`JG?4-D{-qzl(rVK~<>Gf1>?k^%6ph9_4IKv;_Mph;o%s9q!-ZA& z|5s{o&oI0S;nW=Ofx-O<=-w@Sn4uwhVj^0Eg42T;%Fz^Q7TG`!%8-Kg=!dzeM3L;l zG-jdzBd`R6(0jJj)VbTGTU_OZ5e2fCLS|6+bh$5`qD$}4!gnD@@l_`*-h@NY9H60!)!Dz?yO^l~n z^A_{wy7!Mt6oP4}1yP78vMek-S687DW$Hz%lkM~5XDX+n#oNG1iBCg>YuOe3K9?hB+U{) zfpc)uarrhVu+dbGoD_2Q5?_%MPC3nmD>v@WIP0AAJO~JbfrwZ!i3=_&aoIGRZ06}L zDH$)`d|Yu=scU@6DJZ?>7aY{eRH#%=r^-?xLRAa%O1K(&b!tV36eZeq^%^yW01aY7 zgjjJQLA->Jp;@99ZQ8Y3ro$FV-qA>wqF1Ukow|+GC0&M0S>D(~8w#Srkm1mf0W7jO zbTDS}FY(#GlNVN_WylyI=Gat(@mz4`TUlu72(7f1tBt%7KlIw`a9l(&mw8sezL79| z$vgZVHl8&j>kteeVX@PXh=z+TC_=L3QVC#yJ~oR7=E18AwGrDzfLJ=nyH;)!xK7Ii~Az=|wF>wh=DQOw4+O+q%54~+8z-}LSCpZmYYq7Lhy)~{YHXvCh(2XE=r%!joBTlx*RVR}rK9E+m ze3IkGgOXFh!+J^b-56%YC`;m9W)>-6B$d=~Dkf5rkqRVbj-)J(RKOG?9s!sI076m% zCIJ8>696G=fRHFX;$7^GV}t4NmB33Q?FjMOp8&0q>X)DIVZn+Dn~|G0HPAu~<)JTN z_i$xQdvUM>FWy|=+^o)%Lb5$o!04D$j(rbp&Ql0PC!ioGS8F@g2rf@co4KQe^O3-h zo3R+<6WwDQ&z9qz966f5!%2cT0X0F%0QLacAaLjMe26R_-yaImuZ@hHz91^JTCi3n z>W(@)d7VbvoO3p@b*3GAE$~TXuug z=G<_;g(m;*^vuD$Bi=**tzl( zVx83n#@YFUm8FrYN={cPZ=0S>6MRgFEGClZ@4tP?MPUck7hHvY4uGg%aN=;w7KHj< zzli?HHFN75TYxopH_x0A`fK(z^6GQvdbmTTytu_C)_y6yXfAF8L#Dg_g#J%|wPf^_@cfU@lZQ_0Fc+4DdA8)-=~%43IAo<6f*Q=d{EbUJ3TJaH-t8zDBbML`Z|a-)6Q;uTB0q8P!kq2jwVX~Fq*Urq&UPKqod2`CmrEQ7 z9zt@7qY2_^z-vJHkQ#mPFira*6*Wq!h!INrsJKxP2cl}o>X`+JvJ?`dDTGT|$*eps z8^b51zPO)XD}8^EcNTzV36GeP^q`2!vyUnnQzI*H0OnR;OhH{yF&2?9*TITytf|;W zj%XE?Fd8u6%H|kW{2h7`ZQcK0hr;Gq1CL|~A^Bb4vG&X4ps0{DS+RM>Wxg-M?v-V$ zT?70+U9U3&!;JK8Pkv z)at4yhyBm#fBHzWigjJ&+JE)?rS2}kseptAXLw-gh=--~Oi&2f9OY&+uj6(rCRj~U z5#40Jf3%{G*eMh|2|VFk-qhwTw7 zfB@?=)vv0$duA4vgy_GqhDyNiAwwm2IJeq`pw)_xXIzYgyz^P0P;qeaKdbi3@8h`% zb-h}#L6AUT<6t!-I=%Z-p;1MA}v+~ z7ZQvG1QLM(BnWF~cCi>NAbuttkrEv;^m7CRMM8o4F~*{CNJa15sr2uB+`0Qr>l7*% zW#!7pMQ0xVxp(?+V*#b#8uZ*c(FW>t{9|K*ML0#iH7E?zh~oKwmN}c9OWmb?y5+=y zLb#zzj6}xIroW`Cp;U=nVG_5((LF*U@q1QAdV~X>@2?;4tgRiu1$=J%?RTl{)*nCg z{f_4WCfY0(NRvv)QDGA`Q3xqyefz21*}Dm$@iC^>d<<<+l}G}B%ZqhUHI8+iDLfxn z(`H^Ds9P|=z+Q*JiMv~kpJvC2mt|DcgxUnycu<>!Wt59hIKHy@5+u}jquzW8{qEkD zL4pJc60FGda^3UZ6aV?Y-PrE;y&W@i)Ko=9MMOkI)gDX9fICwU4d7_^uYIjUHggA| zPTvPj@IXvqGOW#p!|OmXl0%q;w0_UbTy{%AmF)`vJieWg6?m!yxC_8hC{ivkP%y|O zR@xCLR8)?O7;z4bG-}t;#z0!*Wu`}tL>9S*l+lEA@vRPs;g2N*99HBw>V6MMwLq7H z!8KJ7eR5x13BH$mHY-R_fN9qVHoo}1F&giCBP`r^4_G(^FMWQE6|w<0(yfEcKxOrM zx{Lt|g%wv|$qXSv7eH{JbaEex8v%*4jyq_tMq917(qeUHnPQv~ z2B}e{M4oIG={iYZ5)QfDw~$R!2x;z1$mU6eJQ+FU{wSACrSd2^r7N~g3tbYrJ9fEQ z7CQ_!O-sMjkiLh8a9tO2b&Ki=!Fx$4)|RBM^dU^Wm6ap|3?$*9!zE?Y)%V)9QYTu` zi9V7+GhdK4X_rpvl5XjdUJ;~U24ql1q)+-M1VGP=NyByI9QLEL-~42?$*N0}>irEG&%+=^bID-e20(#LMgaq(DF7Dd|nM}O)!D?aOoeY>yrc_$s#qRIBh z8+&yx?fRax$D=7SZI5aWC-kTu(zdpuOo4wM_vno7(n)RZ$PRA*)-DVQm#L_baR??_ zB2$0rTYack`A@bfb-!-bt0?)sz}%?~SNIRnz`e zRV9^I*=6ZbmA-V6!1Or0jOAPEl9fk^OMvN>KrZ@~FL?)fS?7rNfrLfmS-2>YSOhy4 zYNrI0{$yaW27-njg+yQbO4f27gvVQs)SzG730AK_e$v%XU~IExpmD=je)SBE^H|Oq zp{{{a*V`DGmX>Bg-O*T?Ra{E}EroSgN^<4EBtEp8;?w+Y7a*n`TKMo|rkR-`Uz^@l z&e$XhV*@2YVJmZBWB*BS;wV_3DRQnz;i-c20AZRb3_&Pj+aE+>A!n)_52)XQkZ=kt z18D*R3e&887Dih>`wjPh&d2MBQ)}%yN~w&r6@c5LzdOS z#Ik9^h>3wA0fDE<8!;!>XY!oOktau1I3NxKshMv=MUG$z$Gtp(R|K;EIQV=MPea+o z_b~c~eCc=f>-taqfY%to`apl%MUm$v%qFxL5-vm-D5^6X^LY^xmC$(1M6`OY9gagL zK^u>1I1B^yixt50fM*PQiA4 zSZeNdX>slO&cDOU;_0C#`^WVGa>J2NM~)u8nogt;3><{@LIJ-t4HqTtJ>P`!XTh}2 z^VuxY-~JD(*e614MCW-J$G8N10A$j+*c8(d^|oQ#VHdeG&Qp5t3oXjm1W2=q?XefJ zAL59KU2+w23*x>>eDw|TqmBI4)}093+qBKHkY`Y)LQGG_>aD=G(l#fg#*y_Sd!Tyg zsOR0Mz0Y55V9wsf|Hb~21L_9}=_8R6UJ?^dnGo`AHkw@>n6SIeXY3Xu+(Lc_Y2iHt zLeyJb9BZS!y+z4c7hdGPN}lHjX)>rYa*M6ape|4QVB~3Hw^|~UN zWImrP6x_ukrBqAR>$FBA-E4YVZAPcV>JE8FW~|v+(cD~aeIu~9S2(z^uCJ}zTkZbd zc=(|7_-H;o*`J>sFCUp7f9(9^)15)fUnR=d#J<7yEwb;Bd{6NQ^q(ZSKiCzm{0^Bv z;LM;+V9i1X3$kC41K{MKsdC6+L5@HiMeR5`r-i?VNZ7`s*fqo8I&wEKxQW~?6S?i4 zAooF9F?xcRrwF_i{U#$}a}&HRF{yYo4j^zv9J~f(5!VQaa}EEvEIkQ4eorTXx z8aRwU=T8B^Mg*LIftKt;lxE|^6d!%FIRcE}$VKn%bpzjK9p&(RKR*L&0S^+4XV=f# ziCisQgEBtAvA(bVsb}66wnU5+ISMrUsmkhyiu#$#R7RQ9^J(|}pHfb#O((+f*c>FE zK$}WoHJ(Vbw}-CPJhN&GBG>GYdk@~LdCk&Wu#33cVFxnmj|pObgPFX%U_4J zv4>q;b|M@nM7;4`3jJo0kSW}mr0D{4`(FltL8}=kHKT~q{R6d z-A+kBrev4W9RL9;A|V0af>s(ItQ*d7xRAm(u%PbLpvswon5lYJ`{h&>|gLo;e8b6-J6`Q#+TfOZ&rGxw}k?>Z9lt zZe|E|=aq;hv3%VpKy?XQ7NgGpO(h`#&??Z`3RiigorYWKqsUH$O294$Qv-+$M!tA` z-9^!0jX1Xa z_Sxinjvz6MWo}AEfWRo5Iw~6a{Z^WsjoaY?7~J-G?292<*8puaQ!-r&~Oqj#P8~IRLMw88b+KC68MlF|eU- zTu~<%^1x2VA>@%-w|VVUH9EHL#Ds~)I7b5NDWzCjVNS<^au&K7*02ZFnkCL`_um*_ ztERM441rJ7a+E=T!q?cCK1#>v^YZ+qC-l$c`2e7y$*FhisNxAxr>3eE8bh-NXOa}4 z!*X`_0)h_RlT_S^b{NK_eI~s|Ru&o_P(PcF@WHCT+Q`%x8Oz8L(4+olFkdj z|JiU!O|y6(lD2YGShc7f4wvNBmSrnYowiEH9U~=&i*MNNiMvB-R)vMUTC~E+ZhAAJ zA1tQJP(yt-Wb@$&5>iqpmj|dq4a>&WB|`u)fB-*w4yUHV;VEzl zMv`I5NDzOWRym~;2&*YLXQ){GpArV+9vMZ(#xS$9xVbsP{5)%6fwH(LSz4j3u2R<4 zXq%hr);42jpLKoBxw+xp-U{ySNcZ=mhYuu=kFuvH<@s5C`AGK3Cz4M;#nyQ9CPlTW z9q$MBb!m0Eq3m<2A1V9>ep^@SBt|+G8*3+U7ltERfX&b)RJ;t2+s_I%Z21gG93TL; zX1<(XCG6(N0)q?cNx}5Q4jNLbgQbXDhkV~Pr5{QU7T@)%g6$B6`vN0#008A!udpXV zi0_0zdD+SciZ+K>yqo0N!s3CNYG5P-Osn65=uy_3;n~Y(U{-BlthvHDvgz6vv4g5} zl0LO>pSj0l0rgtEay*o#EV*S^UilPaQph)QZrishc;l^Br%wwwKv%q+$CuJnvkvhYS;1rp%)@Z@kGHUo6hWh%-;aO*)lR7HpjF zC~~wJU=eMG1DoRFG(6fm@@~;HsCt$3%y3ngbaI#SVxr4Ti$#`^kONi>#p|5r}z2gr)3a|Z}lU~x$ zkFHv>T9J?v>7<(qeB{I;aKae-02N_8!Wb;)qjp+araSBe3;|XIUNgE?S=TB<4j+S? z6rHfUETt8aotmU|KtNQ?fe*BWkWkDWCAVnK{A6EB57E&$$;KMh62dwrOIIITm2zog zirlm9>1(x0yDN}dnsWH?nM!JH$%s9c)DywqAltNI`MX`%=x9H3ZAD>`a1 zB|N)Yb!EEN+fFVr1I|)iMBSimN``_l&5)jUkt%X7Tze03UvSow-`S`pBUuMF2Bb7w z0eon4=-Y{muh5$kZV2#^C2kU#Blm9MBXBp$O;wQ=a5J)d<5DixW_z;~up+FRtfDp2 zf#l)36_-#bnv9GK>zyyXE4kcw#+Xd2<&w30&gI}COyn7yQZwQ|uDUXIy4QzV0|a^i zeq!oqh=wCVDioij7pvYF3XY6%0MH;^HaRM})X<1$7FakGJacj64=P>vD)uXO5G*)z zgtJz7F>FowBp^ei@QQp@jYLu$b_VQrLGj>}8Ix&4T?|vhc3wd{>mhs*@2z|*?(OHZ z+eE&!?Xdk0fKzSr?vJyOkSUPd)eV@vww|f1Gd$8}3QHExLO*X?rc$(N^}Ux*6GL#K zxZ;@!V%gLbWAg?%}!p~+MaNayk~qZu&oaI{Q3UO2oTT!N8IAAlu@2VF|(WCDv1_0ddpQZPR5 z0mlmpDn2Y>q$WER17|Y`W-rO^pk_jp<^hTqhR-zo0ah@X6ADuzX}&*-%Yq<>l80v@ zDj+Eajg)F?hb?Wlp-+<7HZcjm7TtlEK|9BWhkJ{e7()FBkiKm8Psj`JEM@uswjrR9fI|WpZghG14jDlJMZP?(D{tTKDf*gE1HP5 zP7^3{qzGrF(&=nA3#ASbGsK7d%#opjv8dQS^7#K6Hfgm%adW} zA|j_GFNX~KFVXD#b}bNh5%R0mlB@IZ;)Q>KdYY8(g=Q0zbF^H$+?~ail+Ip&fekz~ zf?0(!D8{C>pUgIRp$W}R6rnDz+#*Zp7WpIDcw$Z^T6UA`M)BbAo@3G;C4mZ7J$VUU z*d^Tc-J3xmLqb<+%jc?fRh}Rf?wGKtAo)+a9a@VC(Zieb{EP2K%>bmpEE8h`jVSp> z+RZL@6uL$Qi*%%LDv`EYxVj7{L;R%zW3SF6(^V;RI7L`#s$iQkRu-%n&???}Objpv zO9?%?+CKY8OvnJNaQS5{Pi=k!xafKu$V<@^4^M{Q;CP)&u`F+ z1L;OF{%C?4gt42KvD`y_v|-V%z-M?(wz@4mj`-lh_UXuB*y^TIP0}l7gof28A^J8# zN!f?)#>{ghk9p_{N(_49-A6Nol@w>pI&fHQ22!Yj9za5JbGR`}cMTR|?t*XgFU z2u_#s7g|5J7%EFLv8DL@)9QBz=jpeq4+}Ot1N+xsitTp%V83CiYnZzEVk+vdU+mr~ zx{{Q;61PHcAC*aLwOMApJx?cb_ruKk$w85=*r(d8&B;S=aCpt)*~9tPz|6)8=5x$Y zuGv4mejMhrY{6`!Z))u*%x4&ZOuct<^)Sq*>Hc)BXJX|b%%^C+RJA+4ydUP1RBy7< z8C%*5vk8hPQErbe?uL^wa58tiG_tTmfH;YfxME)%{`LGe{uL29qlKZlt?<7MAaF#i z!P(8JAY}*nRW^M2_<{?o`{C0|_<7d8)%fVq|L@6j#(S6a%j!z=apPi3VHMtLy_FWL zGs~2vJnj|k)irp;#;cw$j0d54-7~Ja2M7@%4g?SwjfKK?$JD{@A1eSN<=XYZ+p)!w z6Ss|r*Vg`^L!R0mOGH}xd^feVF&_MkfWWkByyvTq1~cS`DE5xsKFwO zEwR)x%dPkUmR}m2kVtI&9SM;m)XcJEE40!otF5utI_qt)(WW22l?h7pkG-_bG4BVD zEiQw(;6W(4u%^6%SsRnfK?5oM;BN>~+f^gA_b&t45V5>FMxu`|__3-Z5}YWs(b&Z* z6GLQ1ztvUai!H4gh(4;4>r z8hw-tb$xamMxVjZr(yD@5D{mvuwW&!m;QY!RRT1YHVT$wr2ia(WLO2f_9T#*VWwGT zn`5qd=Bu;7G0(m5(krjM2|^eVL?ITU5gTz37x54uN#X_L7-u^8CdGkP&+y-Yss5^M zL;!&c*R7PU*mB+;o|buX z3=4qoIELrBH~2w_4^AF!>9p!<>jp}+2T4#+>AK?3N}Fh6+nt9H8eX#AUB%<(E69Je z%k$0PaA#$k((Ly>_*g;Jh3=MYpBn$kXJ24c>;9j)h&P;&z)!zu{sS&B-rbYt)4T!f zuzLeh)iJmeNSBvz%pmfzl!$%_WE0bz49KFVRPExJ6ARrtjiLl4cr44X9+NConX3g0 z)JLip@X&0LJVS8IppI||3%X2$7m|^lEBD<`N`U2ryTRA(D$rjGmw`S9s54~;E^|H} zG;kJ)ul-cj1NRY!1rsueGD15FN>;Vh@w#1i8xe|diK=}r<1=R&2_s{ajFyRJk^;8C zW~Wrlc5}U0>Dt!*8pkk|{GR*wx?N?;G&@FYx>4y>pEZV;)95`1GK7Fy#J|f8S|^fO`Q?^91Dc`5;#+pUmV( z4@IWM%6|^o=ScvafWs$>HZHu!75g34?1yy> zu~cs~Tb+OW@$aHP4|az~#wKRx<`>pCw{~_9F0XHH?;jqYo?j40I1x7|{q;bLR?j^4 zHtunXDPp5t)8=ZN6Bk#1Y_T;#+L5ECMB8kP>vq~_fHR*mZ(tbhjIhi^f$mT)rRv|8DkP7 zjoM|G+;+z;WPSM|{j!Y&cZh7I%*V`C%!~PPVH;cRpw56%s(O#l`%()^Ze{p?0Y#3P ze2-=RZ+U?B!?$sBh16(Wx`Ho*i6^t5Z;z&c}pD3LBjI}B=c2ZWS-8vQ;n3?lEBmyn;OkL%HTWVe891d zal6B56K&O=wnQn%`m;o}ru8Js>yTc#{3ZsA8n5==%MgWIAyT2+-APDiGXlmhLWODU zG7v&fA_A;y?lE5)4?&%2ysUPV zNX142e~)fzDUrf}4k4cmqStNa;}|s2c`9m8zYM4_W)%Jra!?L^c~vHq-LTY0Y%YbT z??To0Sv)&g{b4`CDu4Rx@bv99;WVlGni>`4f%oB>?n3FFb;Nb`8TYlg(Q*`J(?Hx$ zQCS$L3h8o-$=j>iwAm1GM8xQXJqAY>xnv2t<{_|R#JFe$bemCdnU%vl$a|V9b?45}%4JznOOB)rPiK$@3uHeL>5X7mF z#HCQgtf z!nM7h@A001y}&-Q9j^VfJkDT5x%Ww()mpv8w%h3-V(vf4odP1mPJ*Ql77=g|2M z5;l(B$K`fur7t6_oPQl{etfC8arCkoT8Cg#frR=8hCMgaY_{d00ez`=*3)Q4H)5Ow z59C@cc3sEl-t+L&98aqp?JLug=-p{QlPKXnaa-*B)wD{HTpC7?d9X|yBc6G)hfQTU zMkIIU+4CA@14tBG6v)qY9pd-OZrj*p3q_D%@~e% zw8;$%T8b>tX8m4ARm&km6kY&K4Kj?j3D}wpK96QGbm&bT&##Aoq#zQ`xhaohJc_WO zavSmzrs2`f8IqgWPRmOJs+UZEdX6DHeiw+-A1LfL~(cUpC zptl4oHatFP)haS^Nnp+m9Tw%#`IVeRk+q)73t!GmF#-&FOe>O^0us!s%3K{_2=j_$ zp@0O7s%Mw@2>^W#%MQs(5eZhE%31>eVcj9wC?dh8)Be`X7|`vgkevb&?5fIM9bg#y zisYbx1c$12L>>Cwaa7s~M1WJLb_NmP+#$Pw2yp522O{BDmPyRmR?8UB_!w);_=zrkN>9i@^u{}D!sJbuy~!5&90P00vJtWq zy@PBAoW27t-@$HCff3DNwuM_p79+&a2X8}R;uM>dW4^STh zxeA>61~~68!1f-{zXtcZ0}9VhI-?Ms6%W`LB?I0Gm&i0&aM>g!^J~vq0wWUU0#+aj zv;r#V;6PaPC5n21Gl}Gltqx62 zk-5^D3dsahaHue~?J1$jma2SbGal^L6)ss+ZkB4PMn%qQUAg4)rA!y+ih_EZjUW=8 zGN)=UNzW|0uNNffg|F&@l@m*P-*C!n;D%7%E*gZ8eKb@yHyqJvAFT!gQfqhHfd zlh7y+&v5brLr^?wc}oJtKx3TTmZ3}$^0|IiPiT0iqK%M&ik1-Y_wpcH5+qd$N}1N7 zesNohREmODRq53@l#mTJ@XcK_Z^X1uQ^RQ!@cndgaZ;O#cEKhsBV9sv`CCyCS9?mfqeMNs}Aq1N?6Z(Wuf`&D;g2h8^1$^2jHAfeiQ{ zoptN=PVFHY;o;H3<5f?WoyC+ylqReUwV{hpA8k%mTcASuY17%`)nxjMja0 zr#hvh^mjw211THnqW>3B6W0|+UEyv*?Aj%Rwz!*@@fC;R{fa?+x3U_nuOhy2Rwg;% zO7{r7_o>6t6G&V2tJ{$>*nf2w*|tXy_D7s;SKSNaxa8}~7hyb(Y4KyFZ$&?|q1!Z~ zQBPh_QSaE`KIP}lazQ$}yRtFgUjPO=vdF2o}?9;a)Z*D-BbP}dzD9kMR z-4;UI&xTD03_|RdekF3uR+%MlMrydgo`GF7hWf!zjBxIJL_0X$$oNEOvtM2W(Cv@vHrD#9R zk;>Q-GS!457}ZNk?Q0-E0N0UU@u7uVf(^_y&M$9!+Lin*-PdogXJ5atjV)Dcgn?k5Sb8tm-U>$kY8##W zcF^hK|5Sxh6wrmuwIL*JsnBST-x6_JIZ1TYlWqc96fMT3-q}+-2#%6N#1ddi_`N7c zHZWW0k*kKz3!7#MZ!q2p+B<8!ar|(O@{1K#;bV}=k4Net13#Sl3yFtvO-6Z$O7j2Ne z3Fdynz0ABv&9_n7i?5?If{~KvL*FQj3k34`iuQB90tBQ3OjX2kFXRMUA+IkYt-aST zb>xP(Wj#h~1&zp_rG0f(@oHq~LDL+D^k{&$J%r6Wv1N&_k!FQQ9M5!smmle#d#nRx zTrW{tKJHn12O)#1a3aRJqM0&uk|98LQ+ck`gb7i$yyh`ugC>I-CrE&ich?by^k4YB>8&1P_HlV!P&dX2?(v~F)Y3Q zG10u;Q?akIZWb5RX_seD|5gto55in?_;aLVU3C(hyDKWxVogh*!Vq#FIjoFL?2p4J z0`wH}@ouc|QDLqB|Ez>$B@5LJoOPXE_a&zfB#^a_3Kl>fLom0P6CnG9*)H4e9F;v~ z^Z0oi>lo2{Z9P3^ipbe1N|z|eFQc6R43dn&7LckiIjV#e#z%m_KG^eawELBYWi#|m z>Lw3@N2}+8cFKgz7PL`1d5i(!#P^0HL$jDBt#Nxqi9QsbqpQpwwBt#2G*)O@dN*`( zSa4zC_#;z8X8^^KlHk}^hU>i zltg<hfmn4X--)!4X9;Po&4*Jq@<(CW1+tv_{NWgJ<9T9tB=BQe0XTBP;J zwcpV!xz+3e$klfBvG~3Xy7}a1@7`!dXVapW+?6==!Uy*Tqo!tz`tG*a<=N9~IjUaP z?Kv`+h;+#_^!j7yH&Zw@nBhyF=wSICAZ1c}+a=$=jrMEq375RzuJ0MZRs$6taI?E* z-H1@yyiodN|KnkeAp@s>i8DF{c zY?Hl}%W7|sE9TJLB3i>FQe=t0ya4J%apa}=Z1G*3@Y)MzR*XRg((IBeC(sXIpyI^i zI+y!J=lKrDfukt-IL5iQvH!RZ;cHghI2iaR8vK7a>1?9A&GBVZy~DX7P5C3b1B;EI z)%D3*%*n@jGFPjYFQfM<1v~o$shfPeuci(`n&r3}#AaV(rSN|3{HL+){O%UMi)>g$ z<>XRE6ZIv2r7b1>ckVXZ)7|FyQXBqLehTYNtN&|J&E%%APDa#zMP;&|&n9p9ikJQs z-SJp+yu`~`g;=W%0f9q7AeJMD>9FZ6a_y(eEw-hC}Ouwl2FZd0^B z>}bu~`!0R&c~BAvwgKVmeu{rY$vwiNwf+)x==3df?x|0gpWS`P>JzH9-j`lKF08c? zVnY4%QVcuLrM_0yFtZXtuNb_KE+UlX_MUEYn;P?xKwVkgOqT^F%8d(cQSPIx~mRlDVUomST?i{Wf3AGX6FE z!t%n#*95f2ct5%P=y3k6Ef+Kd%A{Gu`1z~!QuhzUBc>6V@^Yy#AX+~aG)<3)LFTIqP zwXHjMPuW*13)jy?weve2!Qc+N_C&muAv+#ZWv4tgIH-s#)$-WTkRqzGs9H7ivHL~m z#gLsnFzle5pg9riHBWvF)s-m04ScI#-f7w~auKpo^(-CRZrkW3dU|v9HLjA{as3#} zJ!)6aFKXlkKjx_5+`0^I%V)|q1pkX)`QJ@Rd~iS-7mFqFfuDxksZS*jL|fbUcJ%2U zEi8W~aNZF$B?R|`o~P6Y;?b_X-71Mal?#n!0{?ST{vDy<|H2@Zlh$&1fnF2CHZ;08I2Gs04P z(@Ko^mCmK)TZmA2j<-8n2M>ol5=p3sW48~pzp}ccHaLTM8kcYNP-BQdm9b3Zj?&cb z{3NJv6L*2T)Gsf8pek$W7P&^p$D*$;JSSs_xjcqg_S{0LDtRmU(%s~l5mpb2$FeTR zlW*I>Zt!c-gI z0BwLK_&3>0T4sQT@AWXQWDeNx^=!Z})vMoNF}pRIDm_}~fTx?2Lya-=HNZwy4YW3c z9ILDJy>f~Fh7Ze8;7V2%)i7`Uh}8h3$JiwouwtiI6I0ex^F{7ni{GPl4tshz*_09b zC`#?0*jkuUku;>N74y68M@R_=?!`6o?PKrX^iSrm!G)pl#h(}bJNP`ZYVQ^+W5B19 z5S7TO*v^Nu;QUrCnpAT82|rOqU>iPubTTjLMmk{uS!EWJ%{Dk~Yz4F6{1@_|adX7d zE*JIMY@(rdwb8wAot0gZY~Nc&a-j87O{CLu$9sEf%zN-~XCK$-4_6-;wXg?5DzP52 z7ByG*08^DmVp{B#Bn@HmuG4;Vq+B@GrZ=mjrQ%kjjNR%Jmzs>9P?S^EA@cTrF34+4 znVVLo&jX(-o^&eh@Oa%n_a1?{uxjGd&&jM}u zQJoutTy4hoGmo?w8d*$y^oJhD7^WaFnJ45#pZ;faj97Zx$gdqm;JFWR7DY~Y1zFfx z^xB*FS8;I`Ilgy`eRF@C!rZ<6=fzOtRI}YlG0|zKtt?-CDCl+IT;xWJx-$mHbcgu8 z_U2>WV9|EP;rPTqhQ|YAVIr8V=a}umy&-d6jocK)pTARLky={1$M_1=%73-1DG&O+noS8EaH(sx zmEB)UV(IVWox1^h9+_!&{98PkfOq5`dEMzPJZmRnUJ&<4Un*E<~S{hYeqtQA|eRFl#$$W+|I@bVzu7zGb z2|ZnTICz-%2-*a_t{hX0U2TOPPlG@$kckx&sUVVZ?VKGNK-l1Ya!KK7m2Vxp9K2d{sROi z7m7d|V8<~TSN;pD=y!n7c}|sfGV7VQ3OylSx*@RuE7mD_vKmEb(|nyMN6m!FGMBzT zIOO2f%4D>qCKQc_BR|H#tJVrkYmmy*GyJkK@pxkQR`Bq!k*wQXv@1tJqIvfLzg^lW zWaQj{)z4Lia>_Nw7KfKlogBW{+iT({PcfI#3vcUzR=M5K>K+6lfpL!q|GT>zVd?*3ed3lU}BGC&zy6u>Ih4J&`Q#Q}Zq=)4yabs7hY1~=mv~a|F)`TGH&vZ97G|e5K zzT;%kBT7YSYqLZ<+;`?+OnGY5=XOd-{L1I4e1#w2JZA+|`zkk!+Hss`Q|o;y7+tsL z8-7(!Qoq;;87RB2k+=lh&F)UN#ni?Uy13CkPKaO4DYev-DI|3< zzB0o_DND)08yLiNp7{|t5mBptAE_D~jD)45DhrH(A_=Li;(!gfBxg17q*JyKq2=02dwXZ8N%&H&~pd`$(`+kip zey~ElQcvNT=@N}q3YyQ^Un&W7b1nKF_M+V)kyzMb4z0FR3TdR#CP>&`GEQ3jmDv{X z?2Kox>qyyscz1E#%@@aLCnowpC%2t)zb*T7Kbs%vWYMcsT1it^nN=O-%n9T2%Z_JWJ8|6M zlqlXu@A@ZMnI4$R`W}Ysl)YmWRR{%T-Zr+`5Mz~k_#HjmprDp7u+@^KRsDWPu$F)9 z;UNNc$M?(McB!yOFw{R0c=Gu@{}-cdH?|0rnbpM`Q>MWtE7H~5V+jbDkq1Dma&#hIEE8+)+D5% zzW8v}JeB9sl~?nmVj*fMuP`^SU_C;!(IhEc$;wRTQLJagrIr2dPdO;IR@+Tu*T#@4 z{Fx@h=k~jGwiCL|aGpvdQ3lJc0lr*PnoEU&;qVvp^ZHHyEjULkP->(EtWrl{xf~6? z=Eh;4@H9dGY7ufbJ$#fI;sJd-SQ%R9b2@I{fhjz|v;tnV9Skb2d*`5YCa5IT$7u{bDj> zc@Ues!My>x(AL?%0{%wFV-Z0zuRWP@t+nW)GWVvSP7R$L*<|EvGq0|t4Lm%8GE%hh zKF47=f`{IpnP1Ygh$CDHk?1-K{`vU2L^dLC8b&P?k3M+wdUk;UF7ieU?)s^<@IJ=u zhqip7UPyBlW{elt3!`i6vf;(kDC#SbpYNT{DG7quBEqD4cR_&%Sh42{hW^B2)=-p(oXjN)QiEtPx=FX zMU+=55Qwh8(}`AB5QSFqm&o&&A@-xs;$g>!v7#O^Po%Ij`-bpd)m`DD3behT1V}jcn1#sVIOAH=_H@PJ_V(UUIB|K zm9QASq6+Zl)h2Bq+&>m~I83;|ofD9jmN7R+StWX5+cwaeIU+J~g<+U+uC*03(3mp; zi~s6}t{TS0?yk79x;wFT>jbGD3dsDO_#shD$tQ$ZDY}`@i2?E8%Y(1XdHtgZV2pU} zKinpzt6d!hTHdz2feb}5%>{V8LOwu@Y0(CI}Yp;6zC*6Y?t;@0R>70Q|hp-3Xs z8>qHzQ*+w#|Aw)iX2@f)^Qbi&yYuTEkh$2wk#t+8*{PEH=slP`ngH0O^!jzWnuu+~ z-q_v{NE)ZMOSmS&_pof8%N&6P{0{b}8I_<^ts!*p)CaTCR?#JyU06LONfKX~|EajB=~IqOv(wEf3M80cF_} zg<6m6vh}jE{-@2qu0aQaO-{)1*vvq>Ez{`IO1<=6d_JQT*r@P^jK)ZH`NmzbT^I`v zp|KI=`8dKoc&?rojKKT>H#_~PL|CfO5V}ujA;i|H{_M_e%poa^?H{b+yNVL-8@#z2 z!TcK}`x3e~4kldk=5fM9C>M#W5v`MlX_8|jUM$A=h~ewj>*jhz@`^2J9aE2yHQQ#} zMy;djD+ye+Jvolwf{%;l&&xtMm2=OG^Rg%Vb9-}V|1dheF0Z57;cxp$%{Uxo8U-rdV=Exyh54!5rfbf;e4-Iq)1;hgc;v5;9l!_aFWK ze68Qz&5^ulXxqbZk#=50CH+v#vlJMlE<0KV}yn+;m8wqMgi6*>iF;tB=1 z9IvL3soDTpQBVaf${+t11A=*{NZXEE#rQ?KDC_v)hNH=$aR}O*F%EgqwyN9aui75% z)!aNjjiz!`VXUmx$YyxOXc=Zp7Ubt_lRifyE!CQ6&+b7|Sn2>y!VVX8vs_}NOhXa@ay5ju5Uv>QO_hF0cU?AW+&j3qHzk(h$5i+YDBJwXclqGEte~ zoxk)dm3>B|vZq%;H6K^?KwQj>yIPfR8*}Y~7ZXt>f-<$TS63EciQ?@04>N@A8**S zbD!jQ{_jUPr&}#}rjf~H=&d+1*@A1jm@I|?j)h$8b)!(4l9CD(%3Z<(hY5SK1*>u` zds=oQ{hYL{ANAMD4maGXzBAkWql4uSJqQIiMXQ%@)D1tCeCn8AH$7^yNvdf)8>jkY z>*-B@I#`B*g=z3MbI6aB)~5Js*Sq7`NCl$d`BQtax^7opyNS*4%Fs$1Jqy5DX2{mb z$}l(B%lk0e4tJ#0!DYKw^af_;`mBG=*?MW2(MYx7ZoCG{pZUh`Dqm54@xS)<8Hup3 z;qb2!h*Kc_3=^gKKmlJ=JhQN@>9V414l@M}( zWjEKQfnWa=BbSN@Wkr+pW_roSqNyQEu~G3wvh zz6UtalXqGT*a5&e%VxLskOW$~_E9g^^sNK1cF#3Id(&lpFu?zbC!QD#>>T8ZN6Vpr z`OjC=F?IR3B`fuw(A~-1IB%~$#HAR@L4;hIL8ERBPyE+^pRc>;({kYO5 zot&w!(o$-G038B)10b1*R~v`Zj7P7SgkCR@@hTimK(|dqKNyF8E8x-f)T5fR@SrI? zh=&KfoV+dvQj740e{QBqM-cMrQ@olig3l&mmT_2MJo>jl#!Ny?K;M>#bKr{^TA_^) zUZ*k470l=I>>@LHWobTImLpcAxuDF;w5u@(qATB`D}SRa7qCpd!@n928%R6n%hVmh=s zUB^SdczJp!2cRD0RKZf59*AN?g438r$zCI<7v2 z${U|SKF^0WHa#4gox;qXy0G93_VsKyu^Sc58xh(~sd+OzcfWq$IlXqTUKMssGl6~B z@^(A z0MHg=c2A9b2#(;L|33ip8PwCdg=n9*q{v6LI`O&uDFyB0B>>&Mg#29XK5~?wvv@r4 z@Pg{%ziUA~vFj+-`CerZ(Vdr|9s4%K&N(9G$hj6MvX zCuj38>9w^9Go13)#Q8O$5;URT<-@R0|2jw-3f0yD?iieU`4d~zB|iT3j5=1<2a1HH z@6gi?SkE;|3FXBDl~o*pG+i)oBdu2+4sww{mQg#59r%u8LK zubqg??%YZ&x%72@VS-Fi*iu|vzmO&1Th((<#n5^ z)`WK=-X|?BKfj{l_(wlyVcU7PJ#}p_QMHW_b?c$oorLxyPJgDZ>sXa=qmSiH1~aMG zUpWd5t^a1!V_0t^_d4u*jU$Jq5Ky*uH{4D zHyGDdml0I;^; zk*OZ?6N*S4UAN63vFx%fcqhcdz29qe@N>u0WFvF;7+LqGz{D6uFq(27Ke zJ%dOpprRLdq7?=CRq6d<$@qykpw0!cSWg}%q`1QEq@Tmj@+|&bAJe8`7fM6Vk5(Um=}G)5C{!4~_UoyO z^(+a#wzthXH6+Xy(@DyYnGt@Nvqq5w2&U%+tQ%Fw>eU{=R#?I&y#{zYC^gK(q1<18j`n*TyNT=d%E{?hz@lXQIYpgW+Le5K0>H!3U>9QB{a8 zmG3f?g3cBoefHj2l(5nVEegH6hpJW%!tA@L(s{_$kt_x|Z38A4pGK0&{hYu%jU)JO z-C?FW(r81OlLL{rIp~;V-=W=C?gkT7{L!Gff#J-al5z}C?e05a&?VD4qC+h9iLN;u zi&rR23Or!WK{AItupeGC?2PGtTM`M0w8cme+?aWBxL}#34Z`r|DR zyds+=VFy4jqCJ@maR*IS!jYUu@^T2`c{*>~upRC3BQDFtCjbQS@RWBu_VW~+pMjQ7 zh(7jdr{_`eIfj3#gP2qjW8wSi#mry?eL9y!DyyFR5aB8Mv7i^E+`Kn? z({ptcPv`vg?&sGpZ{GwPoOfx9Z`?60Kgq1ZbX=!p72&ohN&3;ZR?=XrP>x$^KotV+ zj-WEO>2HWY7ZI21%Y$=>!-=h%uOw~sLqCRh1eh&}lk970Mgh>Dk;(ZJ(;Z0@UUnTb zKV}5F4!%8w-eJ&DV~0(1Nq1#N9tUSGWJIv`5UEmtsy0kB z9&_rC!A)V~v%ZlgQBh2_L|)EIm-O6RMdAWN%pKA__@4txk?p~=H!#vHN(rVkA{rtd z1kRmMD}c>_bZv4}Mn-j@)MK{yBUkJi+7)ohlJCq}6d!_p#s{2}bibgB%kONkaPe9e zHeTo#$W=zQ#ZwBk_Lc&wu-DYShMX^_9+zrTS`U!dIh{3q&jGAF+f#DYkMtlBk}Gv} zSBT_IUg*!)FZ10Gj)qTD@^z)Lib)#~)S?PyOY9*C?T4rRQXN6W^&>+061LEifLb%! z&QaH%>E^SkZ++?fKyvxdH*KoA{0 zfKL)cJ$~D}cbJ<@vFz%DDH*4TvQP+p`lxCTOkRxs`r2s835F7*1LOSzWs_a9!TXM* zXHJI2Leam#m%H@TgqMMJw^rvnr&`spFqf?{-D!4?D*@&0miQnUSZ2!hK$%H0qE~Vs z=t!WHp88bQ6;EMeJCy9D9|MTN@A6*kO>=Q_%A?RmJQTvvZ0l=~ts%RN)bWA3&hRorz(w0|wOco`1~7fKqFU$!_K*cu;M^%ddWe z^O2T`tQwUEUNq`|N0SKyH3BU~JlKMT(wmxi*Vqy~_C+6-k zYS2PdjrM~!qqN2AG_cmPSj*uw7U92L0I@rq1&sH?{}-}R`&Yk0d+?jnhHh@&Xp&7f zW|o}AxXS;oiV6;!Q94l-NrL&TIUb%rhr`IZ*q!*zWdlR6KvrIKT_ZOMa>oB)Q0EDq zO@jNLwkJ&Vw%usDz9$_jWtp>%a6*WDl9P?+$e^vg*5(oDK<@jTvP%7GV@b#n^Yj zQqZXNJa|tGDzhg}yRW-&9sl`fw4gY)b-RO7w#d5HR9WQ-99cN3xj56h(|$b2AW&0C zUH~si`$0xl;kuwj%beKyXqr^oo;kp!>E2UhM^M7-n>8pn>Ab=5lX zFqM`#PRjbqHQo-uyZ6qg;W*6R!iM$z;IiG}MvDao4B$c^>n+rge`ejIb||#`H~MIG zdNgYfY9e)1-AG+}#*=Sl17?esDQ51*p=97kV80; zV4?|ecGbMmr^}C+DWb=wd8KOJWM|c{bNbq$PR7@MZRDHeY&e#>9;_Fqz zU#c^2s#=#=i&eZG9l#-(TT#b**Y+{vM>Vanv-!>R6EfDYZi9s&pV_1!DCD67U(@W)uKg3d3NTNfFPfEz2?C;=Vq&4ai@J>~8%pD#8f@}Fkxva{2 zmWctJBsRmvLU$%xw59LRHR^R`ku+j{$qxcQJYp4%2UYo32;|7>i(Z{N4`^*-MVdaT zD^zH6c$~UOi%!jer*?%$xpAog$9rMe|9 zKXy=c1%iXqT)bQ6aPLm<+S(+wwo($uOtDLeppAM_fEo~RdI@Ch-a2;OU1Se*!ncsV z1obhom1Y;#D8|4_LcER{v1)VE?4qj{c<$QHZiFTNZhab(ogwx56f~+z!|5K4x-U2D zooK5R9fL>PVhIp_g~0wH9U>$9$T#VKw@O~C%0s8}wSG!vsn)J=D(4Q)nh-E5NImO* zt={yVQbS=n;58sl>CY2_Z?5P%0H2&HFgKz!O3r$JB7 z$9V{tnO+L+V}J&(vO@u0WV@V~!sZbTJ`1N~V1gULl{W`^Ae#|@-HsN0G^*vA<^_rM`z zmUl}dSE=W8&~nH?TOb%^b^|`_&eJONa85EymUM*9PMl|ua5(Ig5EWeyTXh+1$UwyD zIj6>6w-?}76W7FE64UmW`SB702>#%lcXk|X7-x+p#=?LKdZX?Wuo+t3CNNz@+fRWy+03BRZ4I2ROtWkZ5GuP4wAUB;5q4#H%G`R zTXn#6OpO;9B5%0it=5><+^YV3qNpnIVhIuStX={bQJ+~?J*%Lc0DG# zxA6+jgEqVuOf@|*drm=Q$`aSdC6)erTL*c0$2yVr4J9@PXWDeU(9W3RpHYfHPm)h& zFhJ7(!Pga!ga2QEa)#q{KK=P)o_z8X0A*mow^N=5t0IFKFryXvv$=iE$j(zY)xcDQ zg)9))Mv*>WGtt0x@Ff>Z(8@SZS{V2bygCX4WTE#YM&uN^Pp#TCA?;o%?NG9=id|*i zxZ9B2(+W$Zqe_1ev=5fHWo%vVy(}Nzy=kxQB{vzj)lmkTAIpe;7i2QN;ROLO4>b5f$0rwIv85sq+^n1fL zKOSpmlPv8_KJep*`H~(bB+p8t-#7J7oyJ}^$^vo&%hU7K7aoC4qo!&I87n= zPy~@4Px<_PP{ms1RGFq@!L+ClEd+)IKbmwa%{;^l0L6|@w*&C;?~W1h8gR!vM^gUcPG7J|aYQx8xsic3x=Y~FzkGOYC$Vq2oQ|_N z%x|cIw*Dt|LLZK4ef^#1YK;}shg(@7 zE)MA}NCJNaNJz6a3fkWBf1jrb29<`J!W2r@&@-K|h{oZn!}Jaf#_1<&SF)|`s#EJ> zIjlPdhY!LiLDt8x&rZGA_upIO0&3KJt#xi|=hx~%J=wdUM^F12D^_YV`@A3^^1v@? zqj*aYBBQB`?^($YqLSfs`~dLRPO6;I)w@w_Pe2d_C+xN>x%!Bi>dYF-^6g-zZPGs& zm!rAIIlK!J8fFb4*1!zafQ>ZRo$0~vjO5s5>r`d;G z@Dlx@L@qLUk%*{dq#-ITNr(!Qf+&v!4c}2FR4_r2(P;HHPx%c_6VSi1O(E--xkdL) z!{3^HvOoa1!h75Q*Ka;P)bC*WFNcs9fM0Jjnf#a^x2pbp+EJd)UHuvd5q7p$o5_!(*@f2;48W1`- zSIOC(;B=U;HFy|7NR0S`EMT~kcTpr}GPD=K+6g$TZNe=nZutnxMbGE%HW-;ae=2i+ z;wOtCu9_qc|l~CpP^~`jop=9DU1uf-T&dMy{zea7; z{r`1S8ahZWv$gikf5(BMS3V!Q#-ydD@LfmKg-p85o4%|$_ZwFB~@;ruZy6IyJg-N_+?kX1G`CDWhP z*z8s2%TQapSe0TW)M^(xY!4JK4winPu?zNEpZfuYP&?&>0$UW?Y8DNxB04YW6+7v) zGko~+WbO6*)GJ}-_CvK;vz)4>Y6gw8U6H|yw;)r z7OqsKf>pKUl3P5`(JP%8{JeerUuRu(mFfnY0S1PG{?fvNblpNjhW~{PgJc>U4h%KS z5GxF~LzZ_ey6a)Go_ZN!l+i}&En6S|cw?^|2OYA+(s03<3m+lm@*}1Hmq!GQ8=Z8t zq_ee{TioLj&q(4GX}plvZNlkrBsV zf?Rpb;`nwgY{Vz9%TA67;_kF%zXOg*QHva9>vokv zo&Wc_ic<@ISgH|q+zz!RGH&l(kN+YyFdb5M*FPX0ec!P0Sim;@6B-wkk~z7$B}9?A z?A3ue*75;XCZ-pjnQ6S>IW1%(#fQS%htzk_28rs|u zwt-@KX2U{-HTW01Hr(`?8YXG@^U;M`G2jcr)i2447#k)4^Pyz(xPn-{Q0y>7V(E3* z%5jdex`Ls?pDVPC%uEL9WQYNRtP|V15b2H<#~ciK(4RMk^gS-qUsk}-;C6#Fk>I2Z z2ZjfK$4MP#bxEc9EM}8EW!05^YwSUiPfbrXT*`|A$cSMVUy^-nja=a)%3^_7NhgM| zZY{ylWa7MtsbWn@HH2c}^u%L^japVPhpm1N+oeez`gMe*C^bfBbyk&iiZ6l7 literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 b/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-700italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..bdf8f5f9844d5d875b915e68ff4b4965df337049 GIT binary patch literal 26072 zcmV(|K+(T!Pt24Db%EC_-y37QrW2nvFh2!Zz$3xyB>0X7081Bx63AO(a32aa_N zfmIvN_9qlKOouA+>&@zQ!|)gXh%%XO?i7?a_RVfzMWIyDfgCmt2K=__lK=ldFR8>~ zP0rG`cVMv1zlpiKg)qa>OA(fknQ49GP|bbOvUtf>jdTkWY&*P#-hNOuh^nFZ$*y}n zFkrl%^N_8hAbFkpOya|~9?V5G<5%F_v~-p)@!)R1f(cv0A}CChg<|*(!)B9!ota zn;*yY;f^wAl@VXNTMxdpUOYu_y~r{!b{Uk2HddT?c|P91o^S1{bG!S?0~0A2P6{fb zUj01H?Y)1uHDin#W3ppKkK7DuqzE>sfTSZOonTN#C3a&Zm>3mc6k;^^|8J^!?|tw6 z|Azr2s1yRUwgCsy*Z?&+<1`vjFf`<$L#o*jcJ2z5TNkc(2Vk4JLNO4*NTMVqDkNG& z2?Y_OP>eaN7Oq@;x^S7e%KO}2nH1H2yghpX6e_~8F_BR~nz($7LXfdQ!jTpK!8RDe zy1%TnsbnBHgXUzoZ7T14QKbq$PM;J4_~G2+zotn;mkSh<=J5d7NFdg%*q9kT)__KB z?jv03D*x@QTdIr9kc4)SQP1@3j_!1Mjug)Cin}+V) zhA!hRLxCq!kyT{XJ=Brw_X7$jdXdlh1{q{K%JmB19~v=+Kj)Y*5oscNeWfHR1wXWX zv!Vn~^M=7!5Ib2c`vv^YGidUys441n)yv`m@c+*}dc*jUgD->yCI{pz%;waD?C~=W zh1t(k?J>5K2uTRKO6Q^CcC~Ty4a@(-vZXrkg!^e;-~(S$=Ih4Bt-^`H)2l20jK;D| zOAs%fy%1&vIu}jcg}UmxHZMQg)hF#syY`%b%%=TqV=j4vBS#+!tZU2Vpa|;4S_4$A zv1_}XlnTKZLH+u2)2$anbQ*k^Uw!VC7J>!Qzb{p5H~-(C5CO_|5#|I=7AMN9oxq*L zMUmRg+>mqk`>*lw`*#CGgRl?;3nXPKP!a=_0vZjHO^^<0M;d!Vmc2>iO^FmGImmJh z8&f)^a5>HF$#YA`J?(8T#~hBgJseIEKKiAz`!=Pi9~B!RZz4>!;w~zk+8q~nID|tg zbg6$(NQ7hHAO2V6bk)sTodmuEA(1UypSB7r*#c>L{;~(bzTUUF5B868Jf%d~1rS`A5cgn&AS82Ey~Fm|VUsnM zTWGea#;Y-cS&c$DG9*jTQ;cvy3@{$O2!=~NhhbBd&==}BjG=2`I&~fNjXDP7&<@ZK z$^?BU|6$avfYG!8db1+nT)m2o^A_2HEA8(mZ_drU={5z3 z;6RHLH}&SUNjJ$RWU*O5|7Y=D@bag`6PJA%mu5S=j7zWrmJVD|B9GfG@#51o)z-hdwLf(8+C1wA zeaq&iuXH1vsNq1_$ z_H1o43mGdo!iwLi@AV zm>`#BDP6#bsKRm~MV8blboDe9RG;q;1L6-rm*XhU3tQtf z%fia&Nx13H?yd-0)fcxGm*3jimmACdjch7S*zY*^eB+w$BGJG+ld}@N%8(?m!0Pb> zp!oI&1u!1({HZ4PADx#}m{;E57}KUkD^_ly+AxWqY(Y<_rEworao{YI)m~EW=lpD! z>N#PjwS@;@i>9S3t*BZ;E^2=D#uuuff@q%oCMF>MwiInX(3sNf_}Z)ZTC>IC_2S*4d2xBCpz)EWr8(a@W~Z<`uksbjt5@BX zk9Xx*rN^|xZ87pdeKGTP(9^Cao(3CkXM{?_rA`0-xlkx2z~fabGRn6KBK9RP zLcp-^?F|0~eFN|Z;P=oA=n-@Wy0*jq2Aw`ZeCLjkn_~VA#gi68#)b$2CO)W1Fk2JU zry}zI2c^k-|3C!140r+XEZ`}?>V*8{ErXZhQknUu&j)m*7# zI3RP3m$e~!s5Eqr`W4ZMc0DD2d9s~B^7JJxxatR7N2uL%Oqu}LHH0_QOGt5R=W)F^i z_EWg#CZ#r{Kub>G5K(lbJ#o}Al!hqfY0_=lG0k>aGyKDb-Ip$c74KV|VqQvK) zNXmqlNhDmG%!jr|Io(}HcTjLmQu3z?)IQ_%~LnElba+cNAllDd=W>;`E4g z(n^Zaykc(`Wc)3MsdDmGo-(%fk`y1>B-y%KbUCsxIc0o5nau$z#arbprduY3D0xs6 z5*<2KAn9}~(!7-$8TBQ>_vw~(``!vUhEDnjsqlhGqZ9B8sWa~OX;2<=OB3hig zMZqXbuc~Hs!)jYj*E#(~bm`Lk${lp~uH@c5^!&x@-Mi?+NA%?j`u5HE{(bf1ho!RF zF#d)c&fW+kNR2d-g9=sbRjVdbqlU;RqxcwYoSsO4$R8>3e3}0ta&e3S(>T(M-O6%27h?9UiL%ru(DZUX?2 z58DyYtpQ8(TMu83tk48ou~FlSa_aVNO~+Q3w|LQ*gEb3iBv?n|Xex{Xu|YThkk#oF zIvt`kLP<=;=_HLrZOLxmkM`_q9jKL(liso8QBXGSq>8e#C6^e{m62Q>(X|m=AKs0! z#OMh_hEUT|N<;$QkF$21uceLn$InC}FY5=M-PmQ9bEa)iFJs7qlFfAU; zGv&^GHmq9J@YH?w&~nS1bkUqqC@Nb>NZueGkG$1bGI|^LSd3XQ28w$Y&MsDr)rC-E zx8Vzmmu89+s<1VQV?myw-k+Xdtk?Dhfcb2dP-s;8$!D)#zftE8mggT;`ByUaWyB_4 zRUrD4z1~p$(&+U%r7?#auV{h&Uk13?ncWSt(e`O?!p@>xD1^ry?ODwA)? z6Mm$oOi7*ozi=bWc19xN4o^W0d>9`{d9FcXF^RT^&p26B^bKm#KSG1wdyL;%d&(M6 zM1*|egz~raGK*h+`~8o94FIbD`b+hTf^?W9NsQ1-iE@}q;&GmM=BcxiCQp}V-sr9r zDUbs&8lWY4;<(~}7~9xJ-C1EzHtrYSr+)i``u7<#EUQU5S}yzUpHfePSKBT;j<*q; zZUTQ5a-2|E=wjZ~aM3CiqT=$wTQjM6A>GclC7;wR#BO%HWE)<>R0@(0lN+v`B`$BCddzgjHNhLzO;>@^|!2^t$T^k?ky7Ht%5P zHNKS53e(tEuzoUcTFJYFyr>P~MRn}qG}Tv|Mdu6bZJQIc=4CB)Zcy^Xs1LMJw2L&q}m9j!&3??R=Yk~$jWpyC&HR@W%cvhIQ@!WXZ zPYlk8nGg}=Uf-5Ls3zlz!uWk!*G(>O@McBqMrSOQkQG>5SO~a?c#!YR6gR%(NGef4 zE?rJ+9gy>|eBcIQ>b8H~u(Wdr(wPV(8RcNGE&#}(rnI;%hxHZ!USqA9L@Y_zQr29l((t4kgx^pbxgbzXsDy=5v>_)G*;tmutVj~K;Y9tY zVQI|Z89OYEi`SB8EEV=r#=UjFYR8i7b}VUtA;8VyOsFI^WUBmYxGJR~WR1)%S6oC~ z^Ws4|;>CQ{hHrPPABu=Ej<2$(AEm zo_qxgRU2ixJv2`4iKlOY=xcqM+Sb@zuRkyRBd;gV5{GnjIosNFL`z4jgoH|HZduXM zot1QNbtL0RPL@+h*RkbCbSULPz-O~I%ZIz!Sqz0yU}CzrxOf>nq5}GU^r=E#-M>^$ z5pmx5Wz`Q%?;5e$99;B!{oLG!&M0Dfh8Y|ro|HUO_7YPW^{hIIsbuPzu2Zm@biQ@y zG%_$`uRdD50PESf80ssreJx%Kt>>Ak6Pr_3$Y+%_o>%3rvKxs5YdkX|OQDuDy4 zGE>r(TYY#F-1_q)=UX98elDMYRRvX5Ev8k#6?qGo2TUE7P*sBi4wXP~Q%b9b^*yj= zJ=(u1d|G6|d^Q=;DOJ=3YG*u!JP0Brk>il!s68OEKfn%9y@^+^_UB2JqK71=Lu$u` zdVQUj;?8zf5&_KqLNdL8Sj1DnYx43d^2 z*4qUp;1_5~=nHZB$|~jbQc^XmwxJJ1J|H!3w#lQ8rg9MzEUTd^9JQJnJ6x4`TfN}R zDW)x_Xlp#K$l+M`q?o>^?d>;-;>@&8 z-nf?(7S?dc?<%YaxC_=aHm1ueSEta^iIFS4LU_qhRq^&)VL?NSyJ|+?zwA*~vAZ+a z2(j9=%4&usp?ra0sHW-c+L8AMfhVJ{3J%1I$&pgBE_rwqM_Zx11>K9<|J8)WTllVm zBLTRE2~Lp`MyS!P*hism9oXl%5~EKCBkdT^GW?|Ol}U8xq>u_q*v~* z9|Gygn6nMco{0;!np0K`|BR*s;Jp?ukN;apu3D<>TE~%~{C?nX|D@oIbP=a$JS?>9 z%G5D~M;x-U2%@=Ca{;x@aQzxyan87`PJ{W z9cJh9qgF)&M%3k#qyl<_lrVs=K8k+tNmZzHkS2k*?8&jhJho@taXze@YGMSYclv-*=~+4Ik~Xw;ZInYXZAoHQy;(@md)q83%6Y+EwcZtK zKL-W|KY1E$u$3)y%W?H4I}?_6=)is^21_9j>8z6g^iV^Z6h)h^7Ud|PJe%B6ra};| zMcoWB($SPm{YHG?u5!Py;Msu*K(BFo;OY1{=NR??4Y%+l+6V$6Dw333;(%%ro}(gr z^ndqI21D9t!kA8Jvl(kXHy2CJYQUCzyD;j9K{R^0F2!(T+9;>I2fj=>HXmD0BbZt75gTEVz)!)B72wFyNY}M zvuQwgw$t!{KK9^hBpe^qT=!UaX)6IW8`v#IH^w1P0)pv@iE*z!G7lF{gL)aJwqUK* z)O*LS!DPB;f?RD*INfNpD>Cx7cr1s25sA*m#EG6jV^qxfstb@nUljhzKP4q!95tppr?cGIt^?rahlVHvGL1oOQNi$5RKZQc}F61)IZ8kF9R0|L|PATFYe|P z=361v19#|c7J2fHt`VTo$EPAJ%H)Q^l7#c{cv-(B%#%*Rf$`>4pgzUGRJhTzq8u%LbU!)iiYhx<%z8XXgq=c4BP~tIQg}(og&5^N2CZmdv;!*I3K8g;kRaagghaKmzaeDlXz%chXIN_#8 zsYbxPh*j;`V-#9~F@`+)+M^c2Jeo1bAOt8rOlh(H9st7DhPPLvD38IQxa`}=``PBn z>pk8x#s&U3J4B84uvMb=(?RGXj#TNE*YQ@kH)-a8pA(=v|zWgLdUX+wmL4CJar;PlinUm25}Wlp~T3 z%f0Hxw+~JwN{kNy*abhICGPo5&Dt#degfAydsoX+IZt-{gt~{MWit& zW~igJn{=1&{DtBZ(-gy%6SbFa|Ao+rDYC)x6gC%c{e=QWKJc7varEm8H^VI}5JcAe zP@TU)g3BK*PGHXV<+fJqcV0VNRNrcHiSs6nao6l19ZbF>5zfhY6UZePn13#oS+3R!E3LBH8f&fldDkDx z1SL2j35_xGD58X%P}D-iOJ=g(1{-a%*%n)Ev)zuLfn8TX^f9DkI;C^EB(O|KH9*+l zmp+h&ICKax?FofcY@p=MY80uRVTd|sEE}^R$*DtrAC!O(;RInlgOP2b!U|h z+_bR^Ag&jdOh*5vv^gMwCIl5yh^>2z-+?kJsDyU_Vq*i*97RP3#^p0`GO#{>2kT>) z45nS##voFSP6M&^dRO_I#vF6aGv5LWEwb1WOP%-L2OoX%Sqsw0LN;=ci#+6`0EK9Q zBJ2<+1ji(^!IMMPBr5~0@E5EEML9}|lFLWE4!Q5iB$G`s)il%1Fw-ov)oar1wXnlj z82yIwu6~b($^Y-nQUuE!OMx%=?0oOFfFLxAzzUipZwRLKtt3c11}67hN7vgyliUkC zirDbxC3~(OFdx9+xe_n7H%r2B;Xk+y+7aTZ+K(Kd4~`NdK?(>u^T1bK#m6Qp^dl&$ z`$iiCpC&YuW*khM@hsmh5u(%>YaB%BZL~3HF?9l()JQD|ib!#(WM@HHP>1GVY8C)h z9&A*qsKGoxjjUJ+!fYzK&vndPOBpMcn>s_?E`65KzZ)sej;QMjr~y?Th4w z=Oe>mHH)L6HXhZWKN=nb-wUYIst!0GYz6z`>8STNeYzF{H(rM_8Y5-oOYF=?^R&A*jp|#%QR#mf|E2%uyrTq1thPM+KETia0Q~&b_JcqB zAmrJur@uZOe82j==T9DC69ldY+{-JF_hpT(CGU{VTfQ}h%j76r1C2?;QSL^CZn0|NHqfXD^<+ za0yL}Ub^d{rzHLKH$bdGa%IVuFUNPtGt5wB%2g^<#lzs3i4Ht2ZoB2NCmz}4dwxi1 z@9+Q}dMA3!-g8y4nyXytqztH1R;Ph+j#+zlKC2GIuO2U&-X_+S-4uTw9|}hKI^_Of z_cniX?7$bB3lKCT2_tE9bI!Fb(f93UixdOjM(Kg@D2xqw`w!W9OaJyM@Wr0T_qalS z6sVg12iHL{*O?O`JR=u$G=PE8H^jhYx@w363-Fgsi=T$8Cmhem^hppBY6qW#sJQ$T zyt}t&&zdW=azpuUC>T9y!K*QQbd82AgiL-7!3z2JloMV?(OQmM{F9cGyeryKa>Ojj zDnX7f!?XM=%M$ir0)X?Kvgf>;UDRW++=s>F(SW>%UwjLQ}OmF6e~w|b*#D4A8}1w zy&v8lo>NYk8T0EXps2_3VKS1Ec@E8QM^M$5@H_ZD6f{>qmjZ;4x+qJo7*%^@x=0 z_jtOFMtJ%BvrJk?{#Na;SVI#9jH;oP8k22Y0}~pW)X0>^rZq96saeg;U7nz(e~~_Y zdlVEcvF{*Br-u$iZBhQ~cWdYJ|D&E`jg_g$f;mfs6~Y=}gRn)|A?y(j2uH+neIC%c zD)EO$j#KpdO7-@PORygJ>ra{h^o{1eL|SI?7DsM!z;g8p1o~{mmt_wA!T}T z*y)+ETINRq=yKV&n5r8sy%b5&Q0tlXHgRl!c0c^o^Jedo^>MQ_pG*f>B5yFVI*Gn6 zW73KV4NJ!iIO9S|FfHb|K1)|xF_~4xyFp0-l2IpV%PCn-sA@T*3yf$i1yY+WxjBEJ}O=Ff%M*q8;ZFnMU58hoMEM z;zV)Y52Wmn@+wStUEtAzzOHR9mKFRv(f#HNVBV})2UL|iX5+3Nh1D8Tk5@io*mDOK z&{e$7}P<#RPln|0{ek ziA#zO-r1u3!|27junqOZ?(P*+-vvb=OnmJ=_@h>1xqodIQK3VB)3myBp@DkCJP zS8OZDLw5(_d3vT*PoLvly}ec!z+UVy!|8S1ta#RqkH8))T1;}28Ef}u?Z#yR5gj( zsR_WKwWw!NwS zqf-1@b%;i8A+mdjBqd2Z;0d%4d-E@B|?VdO;@l)|vO06{zWcd_S+-Upyi0uOg4wbA!ibiN|jU;?BD zpRiZZ^!}+q_)0u{c(FZL)d7BT!hkhB1X2dIcW9A?*vQnct4l`C$~+M5>*YI4)f`0W zN|a)_MoMEqO@IQest^#9lu3g`(ICpjB60&#wXjBN2WgeZnQG-Y>qvES%OXaEB*YY< zMRzsQabV+8aJBH5#E-T5N|2Rwsbw zFqBhE0WoHQjwn9yxhbVQWZ5zyoEwz%h;oiMd@_RNOJ;GhY{@(V1<>T-ZumiL}m1MReX*!+}BW11+ek^bS7F- zaL@uEyhs49&){#%pGpGTVbW;^K zk+DjVlJqsBLpM?bqsFT(%ql5%d-UZ@lMMTOC5h;K4+>lFN9XKJ}jDwIxngdFi`iu(>lV9|l7(zN%OzU9+BM2b*_XIt#QPydPtW-RidMrq7}9f3vddVA8Z!=Z8uI!xxkMDjT=WyCEDRy6-Ml z=sJOHNcj#GEJFn948K0&ExLTLLx0F;VR}|HV7rzLsl?NiPKRuuzng&uLTB6{Zn99`XhddU#RF7n^1MHj=!7HWt z%Ew=aX`^%;!l4!B&+e4gYrX#dUAD?r$7@1wYCvc)PZNN`h8C1uP8F%A+CM`8>~)i- zY}7H`b2F{A9D7O1z2*%4r4^f$<#uQ=9m}TnO}&kZZtD7gXKo-&bfPXI8&ylb>FU^$$Fr9?I19j;QjlBK5qYNc z6#>c98?1#wMsk66fY+6{Pj9G%K%3zryfeQ^Tiyunt0T$%XfI*|=pk{bNxBCAp0FH- z#RUtOevV{dN63<#e6^GvE0b2gl~seI4%K?Nktkl7+n3ZuzI`GyVb5lpi(=lJxkZb z2Q#aqpi#*ITF1oWG&ZXj8$!V5{Si@rK(;D-aP1&*xm38Z9^uwHq@*5Dw^v4f*~Cuc z;5a+c(%RSIC&tsV3*{{4M&8VCoL`E`^Q<6w68Nu}K`w;)V?u4LmHY3Rw~8SfqH`%H?<{N0OI^4a~hAwXB6Ie)w?-vY48`zKkprXc8DGD;||2W@SrvGuEC)vrF-JKL& zmdKoiE>1v>xgs{2t}E=;#r6WW1I>^4$T8C7abna{WgIMc%Db3Vw-P(d5hRKUyA|D# z`$3RAit)8%9`DD&yem$WlH&>5hhhZ>PY^z!;-hbKV%A}vF+XFa40J(e+)i&;&D0+J ziPAOr2zf>ue&r;WLi`Y#EtN-1GI+h6_bw3*c6GJ%iY{QrQ-ms(5o+mCr~~Poqtr{* z@+P0`d|2Q^bZL`0w-@>8?;b+xXj&dO`~cI)2QkJyLQ z($|cSey_1pd(~fxkl8QG`&xLvtR}IPI+eR)K`lVcmt=Jub9&o39hn$OrvYx;RL=1j zeAb=kSkyPNn9SNA$GSXarD zWv5|xI6mmj#&;ZtV7gqe_RwwV708EZYm(@nYGw1mUkb=6QCD`c-4QoYZ?bwn{xy~-cm1^XP3lpQ;Me`}OWiuj>sm8ENHUM#_he2tX@SZtfuP@07If z3W0qX5A-F;o_2#5chV`wlG+z>QnEbDD<=Vdoa<%(doX>3xH04po0k_0cuXzIS%xtXZ` znf(*idT+0Yq+1_<4+l%>is2~Eku>L#dFPU{im3TDVNmCme%Psu5&WDrKatoHo4a-O zhpW#A6E}(7(kI!i)z=3cT9MNB{P59;RB3vq6py;el^nlrv-3_(WYkO)Tw^!G63DI} z@{YVDioKM7enn>dP%u#iNg%pDEx7WOW!F4MY9mGkMp zWRYzqY!4V zecChyF?MekLNM}Eto!zgoY!kmcW;(vt!lQnBNq%>>fKwVS2A*Za#Jugi7SN}I;Oepcpsiak|EiKum46LGHNoT;voD{J^N zIvMrlt2GE$m6|K8?G<~x<^*csxP`N5;atcXP^muwY7MPJ5_i0(C6J4iJzNZZ8Vf0# zr|?Ab6ou@G#lXGyf@f$*d=R>& z>x?yHSH{_&N=8*@WFJqzjMn3AO%2R8iN2_X&;F`}P1R%mc^Vd~Mwg>w z@B49Fi3dxT6C$^&c7dQW66*6P*H@$IPzT5-&-qLFb*IpBrLnS$r58`S*{AVEFZ|38+eP8Vp0$le@t%ojoj025 zSZzrZn}tnaXICZcBvDe|aYrqm)_=Ml%CDIjOuMta&cZp^(d;t5gkHT_#WUtLGudw! z!$XgXmOoe~fc?eijKc{&aL?cEXYjao(XQ}t0_#3ucr$sr&@ z`-@oOiZpq>bVRP!^ut@47>%iRd1H-KTY&3$La0npG21Pm7E3VI(oyTP%SjyHYU=3w zsyeRxK6L%~xcM!b#Xn*C*jcbn6KW1 z^}dLfD#f`)?BRKu9}2K<1#_i?c=UYzrwf*(z~?=Dru!d=9x|_oa6&Cl36(&V{Jr_G zH-!3n3H#}h!Br)vE2DVqydE;O(!IjL zrc+;T{nyPZn|?_pz1agsvxeTZ(Opi&2FV}+-Tcx~jq(Xt{r7)I6+yn2GOa3H*i{6( z2|xBS)|Gy_McmcXXy@-4uWN|Ld+LijHa}k9VCm#;OLDO+ST%3EizUU`e}9+Y6WI9+ z?O8KytezGme_$QKFTyp%FsJwHyKwL+z0_FHK&8B~-Xo0|#m0hY8TpABZCWAc#j=~# zyE0e%Dp8+%c)l7D(3@P zHXNnR2I26d$Q+eP%w#&6=w@{%m1DMjZpH7-gRGwWepH@JE1)usb!8fFsOj>}O{yO< z8Ybgyl|hS?=n&1V%Z6^8d$Ru-5}oP`3k~QWHuCEiiU^cq*qd+uor&>S^WpgT;+&&- zW>A~_-Bi26A^%S8c;lQEz+MdnZN%dvKbfFty~(7{#-e`FgIcVJ_yhZt?E z)e;Dby>^~f16?CkL8u%@nSEXlnOtes2mEbl$TyJdKFBf5p1D188UwlnxeA)>pS*^F zEUa8uzpyJ~p?ATM4%zkhsN55>`(5|XT#8o0eKr{6dt`l+) zb^5^RgR&POpkg4Y3D&b4)Rs!R1n$;Hcvf(D{;D3+sq8NrQ=5wZpH*{TD8#hqOt3?Z zY|^4ygPcY+Mc7dFPx&Z62MiiYaXl5@5&VPE;%9Xq9Iq}e?lLV zcG7HT5BU!5)+Nn*SRFslID;4b6q=REBG*oB7z=}woJX9`=-4qjFpI>H*{+uDDT&6!}N!1J4^RZ=I*cfobe-c)2I4!Pq0!V8W?qj4H34) zZw2WkN|(fC%3Zs$k>32+;?fhzLAQiE(N|sF(LB`E>v&~hOoQjF(yOEKoIa>qDXhOrbt*&o zJKq-Qb{Uu=rxG#yZk@VhjkorjKVdK#IW|u-Gq&)n_hr#Y5*_v`zQ1 zZX1Vh4j^6Mso^B5o=kM`F1dl_1JPcm1<|Q zXmuO6PBs-MIgfZUqhsgL*7aNu3EP9k%261%CDOLtHLx7O({&W7rN)xG(^M`K%A3bk zf$|tf;V;i{3XCd&wO)Z}E)xpm1o+3L28~qXX{?&=%u2S5tD&~}R#lLZ_t&$-K5uNQ zz@MDVJ6T}@8zTXu@&D2#NkHl{8rLnokQDUF zIa7T;UrWnye8Be3-ib|~Sw$s}&U1yKKB}e!k7+OKRuDdfbJ@vZ2)=^DoWyA>g3~NM z9C2l@x|kLYhZpHr26YiC+c%5U;cruG(JC^X6>O6_sykdpzR;yaj())*DzU-skKUu; zPz2;}fual@{qV+HjRuE%x3v1wa_QRo8xQR>yd*8dC7Wvzo@Xp&dMd%qSMY|`I;tf< zqiQuGdPwGw3%+r|&+1(^6J?!Ouh12(M#@0d|309)OUE?0;%owLOpPmnTKIg6;dMXePXIH&SF*wpyWt6qb}hJo0jc`A*Jt1I_A^3Upc6v9N&b|Qhq zP`J>nFioZ6t?_Ychv(cc!RK4@ONjYM66HQs$M<&BoJe<3(&AfE9k)_V3+Ywpp%1hO zzbD<_V|E?@8vJPLX%35Ftt1P4bhU>2DjBs8N5mJtXMul_e-2)BgTtcPonGVZq1mdzX05lFiKhke0(jV{cw^IO1P5@xRW=V?+nK+v;pg2jitSAI*-@iBU&|U z6Jd5#Ld?2E1MD5y00Yb$0a)L-rN-|epdO(K>xr;G-cu-8B!X6rC$cSJ|LSWrcmf~dW%O6_+?4o>YrvK)f9}Wec@J_L219uVe7GHWLxYH*Wi}xvZ9}3*?U$;W0HE!e z%)!Vh+o1SSEa7da*673G+|Py5odiRZ2oQ3A;MjxE9KTPC$7xF2^_|YEt}uWRKX7z8 zJdw|@EyXGEvBTB@fWWN3S$&^?`(U5xt6imkPeB3LeuYPpZ2nQka}oD>^NuhCI7V7{ zR~UNz9gl3`xj~Nr@rOH^yw8d~vo_hjWi3XIJ0-oQ*T~OI1?hTter9aoxJ{V9Zb~kZ z)C^N{_MDEK$23q=hf6`7scSTXvv;;Zw;Iw^ub0=~`U`Y*tU;wVl^dl}vB{`b8_QSA zWvh*aF1MP*QrQDcDz)Ly`O~chY*qo4R={Ex(CUv4IDJ}c(?D}(&a#f2-JfMLe)Txy zaxd!#BI0;wCBp8NS)1Ey(z55a=gj%D6-$Lm6TC&&{UuC z$?X*@fZ0nr?3Y&{L!ov!cACpnn3B)rxy(LCxj0+-3&Q?UismJ_?fMGMI=<3M0##fz zfJv=uhXCCb2%9)X`RgUc_U-HIXf*PLzL!VT8>7qZv4?*(}{-sQF$y2X)W^=ly zr#U<>i2SlXjee zu0L=Z(`W2Q4+CD6;^O83?4T^xaT>ZFkmdUM#W899paP++C$-eB;vu#Tb8BXS4EVW} zYgh6_UrlJC(>c4*;I-I==UuP4#e{2qt=pldll+wuxyo%{!^FU?P%!)$6;a5fpw)O0 zi+9asN7BJj0qSF-X~e9Z|C`|Urd3>FS6#}Ro|W9*()}3EH}k>hAE!I=(}eL$7ZtdY ztivyT?EAn?Ljx>wXd4a7 zRM5qXPp_MtIx(obQR`BTOlX7T2y`~T71f=?9le(mz0%#=@zZyQc5}U-BEQsTOW5lx zH1tb{mj~jgDl*?t;b3+S`U+I*2(*CI7>tZa73H`lj7(WeVOf|eb*+ougisO46kCX8 z!i4M5dA!PRw>cI3Q`lPdBnoqdC_X;DyXnOQ=i|}IS;^K~AK>Hc=`7`^bt|Ja4wJrh zg749uUQ)@@S3^Lg=fp9tcnQhO`d73C&CFK8>Q}U zm5rI(|FZq7n6d1lwCB(&XavIF?<9;at_FzDH}$LaHhaOJK@P%iC!e6DMZyx8BAKeJKe{1$y)OWB<{qun3zi^v`el^HtqTa`vLU^Z*| z*Qw2>0kyUtz71*z1~exA`yK|ZS}dXYJWK)K!({lyVn(%x!EgWm^Ap{=?EJdih_=wF zloKgikuVYlK`9PhO%!>XiS!te-jU}0Wn)v;A;YoLEva5202FD)!u?V8#;wJF`u=<@ zWwG6DQS(?89x7Yqwy4|vslo1NRV`GVDa>q6=Ob<6W&+m%VR5e$Z_dF9nk=CeX zYbI`N!Ax7yYuspaXNDsJY&HmrzAfs%aYHHLI76J8$`ZcZ-a=6HXgQ*)mwqa(lw?wm zXKHd~LMDl;duqF0Aa*v9RQv!;AaRHEq}#<1z}n|rzMfF$3LKwM;P~7>SGiJzW4d8D zIu6+b!-muEN4hV4IgSzSeg{oDM#jF4CLJf^Qco$Ln(#2bUkyn5nbi0%ev}n}EuhO5 zrUO0G5?NPO;fk9fxtxW=$O33|=eEfGFcwMp%pU_H575TFiP!R>O{Z36Nw*X!8EkyYTpSMJ`1+zlctO+4k z7h8If`ghl#B=8|O>u();%{0s!t=s?d{Vs_J9J=&mCBgW<4Uh!gPwW20fiwZKS{bs1 z;Xv=ONY>+kB<=lBqBl9U?vGx<%C#BoGtW1r=a?;{WEXK~_BVN-su8a$8CC|_KZ z;Q?0DdjEQ+L9u#yxh@_kQ9#Elw*b>wmv5at3Ojq|QfKd6Xz|H!ChqK&Go5v5>guIroOW( zA37`Yqs2LmETJ~zS)T0*Aa zAEvW&E;*Wca?DDsA!KGBLuQPQ8SK1MA!VDK3Tk{Zb0zXgfO}X*n^mT(sW`MYw61MA zufjsLp%vQ7!&2G+T+rSo;&Q7U4Jd?GE_oAaFwoOFpOUHU)UN=MUX$W= zi1-`1?HZSCwd=+}J*aPakcE24gdVcz(dRDHi>^(a_9XA7H25|PqWK^|*;_ZzUR?EBqTED#Ha&_&`?n`WF<#$6&^y;+vvfD8iAx>ry8}3(GLcf8wv(cjA z9g{Iv!e2-Hl%w#=j$Oky%}MMe zIRLQE`a{D9pa1tn-)z)BAmF5F1Q-H)Ya@a^Z@WS-ZCGV!MG3)7ZN4q#D1{)HVUIbL=1 z^n3Ak?^tbCIgOMIjco74qVkK3L;4)jB_F?6E4zbea$UmXA@>v(} zjxXkHL!a}7807C&JngIPP}X`CNLPhLmu`Osbge6cWfEy<{}YYaGVxEQh?d*$Y3su9 z2GwF+Y#1(n;VXI4h*3u<^t+21)G?%(&YO{BsR-u&$BD9<$jN#jaaz;f%IVx6O~jI> zIgi>PZAR173Te}x##ZV#n=_~W%NSoeJ0x+|=GB%eoUb#k_iGrsAwTDN*C|~|_|L9Y zG~Zd5ufE)_mrA*~gv+K8=*wNQj*m3K*jw)M>YZq` z1sY^Q4pJGnWUV5InK7QzCOw{-Y7a7DNKdQxFu%=iv_8`{dGTLQ~@H5Bp2Dx z^aE^ny?;?|dR#GnFV1Rd>3(Wso4TZD_qq>oms1)t2-}c|O(AXOFFFIT)-c=a5UCbv zUte`B3IZTSZDmHydA0Sg zpK0I!;}J*WsKjbtfaDZAr?n)w)E3crB3cI^2iY(z0NLY9HcdG-z$#YH#oL@Azi_dD zHwo@D?YdVTTbyhu8$cZ_t4+0rd`;873ROQG9&lO%**Zjn#@rKk5>0El+Yr}bp?zY> z4mnQ9u!dYopMVeG0-J^l53^_#0mUb0*US#H%UX(xN4daKbB&=XQhXp3-}E7hrV8gs zCzghTny}DbfYTAaQHCWtJ~4p7`YtE*$%yUg>s}C;-P`dW;BWm?iQ?(5A(RrrnYEB# zGH$J<_jzJEIG2qJ`r0g3fLC7S#H<2@xl8-7zNmI?QfN9OVL`HRiJktUIZt5g?3GrjjPOfgS1HE(IcPvqbwHv?gNhp>Z^5z;# ztAyEjF~``+OJSQ`t3k48VD5_DK!rH7B2CVK)i9RLcoqCO9)#0KLni=Ce5>z>=jx?|aDK97;y_lC8!CbbO*i(GcAJYT{m$qe&mNakd2QG?n z&e?lK=@Z9*nVQ65Vjk@F6xZ$`Y1P5IUayZ3bei7;S>A!Q0@$5s~W|jl<13biirL*?3BX=yduZlo9 zy5J`7FwknW!x$(1t3P=!B52c#lHUAS3k-yFL4-BLqHK%f5lce2MTe7H5Ln?Y&lV%2 z({bQjCNV70oo1rnaQGG0kkm_t6aa-4}eYc1=7Ll zr~<6uuISR4wr`s>T@miuY~=g?D$m;GjDubhg6T%eRy3CCgB>3eR~oNONa^pO*P@tZ ztV?IX&5p|ULdU;|4$IoBTf^Fxh(knGb~?Q{#YGj@$fV;UvXhb<-#Wk`&;4uaQtROb zWh+)#7^^)D=~({Zt9dI#Y?7I#5E&UikEl>>$%z6J7%xIwE!p5Z-W=Uw2iG*$h!Y3h z)g_uSeXxE}eOHS6n1Q=e@tDQ88nT>Dn2d2fzT|B81nxFqYb^BA6}ckN=9z$lE`n6+ z*mk1ufj8)@$hnysnwpB|wJ(tCHXNSp$QS?>te6CyPIsz#^W}0ueDVIv->+XTuP&d^ zLmr#}V1YCoXA~ujThJ;3pN9q9G3>|@Lu}Tp@U;xl!+ ze=IxRkXMm3{!a*Y%c3?<5UVECOBJ!8-Ng{r7K_-=Ub@@$Yrl9m`F&1mh;s>E$jvhF zn1}g4tO6#}3eJ?NfHGH4UIS{iHY4x5((w^*sBiY*q0CO>F&R{ADTLoc7tOsqkk!3Ee9I#q%K2LpW$>r4qBM7@n#RlcE6)Y&==2^p- zywX}PyCxsWZkoKX^!I$k&tz)DLqc?QB>H~M>Q0F`+m^0x(VEo>eAhfln7qY_h;KxP z4NW)<9BABNg?bi*)jDl~lguYx$6SUtD{{U_zR+A#r4ZMJh>A-Y=WFwU0ER8PU9l^p zrn|&$TEpeaLzAq@422M9frvAPL5F&}*Z^H2zywBX_51zL?tmQyx?#k%-CzWyG+ekJ zTOf$TkSB|ncRMT93pQ9KrE~yZ%=1P^GD9HM1QFBFgvJes4Q0)@I3GcJ;dPXA`ocdv zmxSTb+QiFjJr4#ZO9Dk-@n6GyoSl=o&t4fNadKI%iw7bOA3NlP-t9#5=wTD zlNtakhB#=?T~o-9-Cd>@*o3sJzCglbyMZ>Uq^X0h=y{GaR9gT+EJ}Lt&mGtOu7Og$ zl~j295|vO04N$q2JInR%x9i%bDwGQqIa%T+V5LpyDU=ve^+5(VDNG8S6-KA*ojTLK zM`D?8bl^ew(3kqTpImp|f)RnOHf@9G@U&J$7*YKME<*}L!oh{v9;6V!nKlnAB+vcP zj2r-75|lHgw@gpAsL2p=mb-4QTw=|8W1XhA*QM*0_shHUv768G#rY9jY%CCcLY$GZ zb;?_ZXj`LVgiFsmy+&uk&f$DX&ewGg@cQBigV?nmLYULK1ed&ia9tJ4r^8@Y^sRnm zI%1xwAQq&;w^RuxffkUM4|tmyh-(sKj_7ZAl^Zl-C?XNssQ$Q`9Grw13piH#v@7Y4 z&Cd3ps~-nu!r&P5K_XESv=cT_DBEFK_oYmU;gj3yiMdlF&IdmC8dGZ5Z`uY0H7x*W zP50M*{)i3q`Uy=ma_YS$oD^uRTrwOQ3+)NAW793Pi$EH`6J4IswA;jwhsG0Y@)-r| zZk!z9bElhK$?x~r*X6Y1*+4<4x~TgtMdobG?cnWY9vaugE>kcqMjM!RYfD^vfFAx7 zaX=~nUbr@Uz%UA)%-n6rKtkMM!UBfnK04{MKYU+?Bn(7 ztmcgfQ#hs5cLcq3PVG`HeQ0n_HuJD;a?ggSH>`GWLb zgC!?rl6n_)VL7c!LFJFd>rVZA@BSi6(ai&a5$x=TeI{}rl(2!vh$pO|I1X=(&DeX2 zY%%vcO1)O)f>EBnL4BZ*BwTG^Lr}d+;FUF2>a}S?*K3W0=yFo!vYf2*t*w7q3Okji zpp^fWYST;ejD{gUY7Y%myk_G5Qu4Hno`4+Qx#qzM0CE5E>CNQ~M>s4KYPhMvL$WC} zO-Nr3xX`7h8u2dwb=mfcCJ^zzI9J&=6FKC7rM!d}7#&uBgij0CI| z4}mrl7Y70Hko(M#B6tmVxV8iM<5tgEk?%C(+RXeYg-iqupH`~d$pgSZ00q1)7(Nsj zA3qIx==DcD1aJas>D-`2k1}h0%Llj99_H#^9`p_%N&(X!UduP>D7H=j6Bd-7&4r8$ z;hB=vMcQQQY$nlxAN%%Z+VfMpiFAT8i>zy1V~g$V4;JaPmQJp5l_O4{a%gL`WYPFp zhE^v51(8bvm&RIzPC$12`!RZM^Q251dsZDdJI;A3is}9IuJ8pMVYP2u62`F)-PTt0 zD=_y4F4|080Gtwj_>CT#iruf`b1ppWfRVRDQ#Xg4sNn$9hqJf3jYmqg!Sk^=*wLJ; zS$w)*m2kH6X%%i9F7x2j(=0X9mR_TY_LqLMaoAy_=9`?}l@3m~?&yK$V=Gb24`xC@YEx1g`A2faHW!}=s!d1<^{|6R`Xl`zAw{-hRZto3BN8?wR~JYRC6_*{Eb)VCxP0qu~5Ju zu$LNK@XF_#GP$?685;FyQd`v=y@vIMfPw~9wdv9fD&Z2HR7y9dUGY9wZs-lYLW6EB z+^b)!+SqSCkn1$f0PaXBwK^@~596w+J~?+nP}`E;TwhPtpR$Nef&}VO(r`i3rDxM< z-0k4esp8yHdD2F8anqrrPHpZ$7}QYsh@n@7-{NCqRql z5`cevnEN{~l*dExf}Z6YoV+LI)~tFPpye7M`Qr*Eq0>~QNFq2+%7t=6H^*%(D?HGi zjBJi%%P>6llY);mWZn8oRsLfOYHfN1XTBEtNUKH@vq} zl6J4Ogwq&UA0RC1{3w-E|pdH)C=w z*1Q=dD=V{(76PiKs#R4L!2l`+x%3@atsIrCsSG_gOn?U5XJmy>X)?p_hQ7I=HKH*CH<7Z5J5Pmd)DU*Fq(cn2zA7i1p_WMTdLB*K*n7hsY z0#!|Jbv=V{l#a|x9nYDAPyeR`jv;Q;|HUH zBr1fjX@C3knWixTc%Z{!bW37!FXx#}IEZAQTVtG54`im#C(uO8u7CW!0}-eJq9qW( z@ev-MBxi3*8@YF2oRf|hMAAwoKhz2GwBKOu69Pgpc3St3>AwwxYtD-m69?i zOG;k36#H&BrUYpmq0Ym{6IJt@>eIc>)Z&IO>uRlxR_uXFUJ@= znRB|%ZO921?Lg-$lkf``+P?^eoFX^7F zTxG2G%;oSQv&+aekfOxpxo*iXJF*xZxcwCet^J^G?o3{PmRMQsO7aO_r>4q!Ojg?j z%1ei~uBb=A$dey!nhP4pi1rgGRe*3XQ{R1110#~6zs_OUS6#uC9zdb0Oj&g;vZ zQBBeg3<1cM4uA3uF;G;hs%9p4Z7XZoaj~e5$|U%j8-El!LpEC8bc7p+9W@B0g}wA=?d{n( z;I%)rY?07PnTVxy6WdEZV%~%Z7&D`Ga6fNBD)j&GX=pF< zeLD`mD5rj3F++?mxeKb6h829cy!ghUnd_-4Z;`)sE7IV~>Z0 z+hHEI*0R2~RwY-v6@-^q6n51@1%T4?XKyd=kjp%IaNAI`#eZE0@{^`|jxF(JU}T zNx2K8AS_`KG>VL5>PPG}snrRibly0q4~* z!(kzM++gIePxj;I<66p|<8iEZT4zH|{NzWUYR<@nxYRsJgoNBD_ISoWhAa!GV;kUa z6FJ-zPqP|TZ#=ZUUltpx!4EgkcrMrp*!BpE2dS$a#)HNqoRcKGuK`ph=)7vU2{1zq zU=0TQdfvFNr4;4-!(-mo!Tr;mRW*fN`^PgkfzgK+#)Ox|9u8IG4)K_Ag?K!;LF~^3 z;<0Ic$33K7I<^%qthm92bO$D0JIokm08=mL?TNVEy-R?=y5c_v=qI|RTZ;b9rKmT6 zZ=X~)#+!fRBh|mp|JClEyf&b45P*O+XHwhG2c+4!JogNrhsjNA3#FIf=WSFsp3PY^ zj%PZ@(Q^rMY`whGh=&D^NcEJq3fh@HnG)+d&L2y#|KN!hr~R)pIlhTDa|y4J51L*a z${#RM)BgNz3?*wa zY4_)oeTQ%a`|+a=*V#{sdC9Y1b8Ua8C6qTz^OD)?uZtb3LCDzdhML*;9F=#Vu05?r zE}i9jcgKIOZC>huSEBY-J!rZ>I)N-p%V&JJhz1ZUJZXf`!4mB%#k6&7A`7acB0{?7 ze;OeqUXf`h4iWw|f$FJiNJaf+4+`QT<0me=H13YRoM@y~`cb%5@ zrTvL_+McPJgVI&xo}li|)9sL;3Hh~V+t}mI#nwvcf=gsZDonG1Y}jRjP1L_B z&$3#>lUD{vYSXDRxjtY9b86!xjnh0%j?K%6?rniSi^~RT>Ek>hQ0DH2_^=wsF-9RJ z8LKxx$<9IK;b|kdlvp0E50eW%{io2zGu5HaS=-uaH(U_+i^TFC?Jo5Z+9a-h%}vHs z+KcvranVQ_8%}geyHH=+k*cX~UBnvK4?5=d7OkJS%~t`752;hkdbt}o1LD@Op8Zd6 zZ2~dlXc*Qyn(-lB?X$qqaxnSSO7c3oNlGL)OMa*{#`#n$X~>SqxKKxWM5>WTq5p4a z8gC8AEHUwPwp&v7rDcj-gMMFoW^_(sc7-*xu&p$QBAT8Ln-1HdA#jj`f{O>>U6K4zNTTIYgq;VEq6As-D4M&nN3qBxKZ;E&K#I;f z@GxcGR;ml{;X|32<#)1dM|FnE!u%Ci!Yr4!UZQmuEuUGYc$ta~glc`WX zlm4=qRdz2?j1fS$;H`K~GStXSU>+)EKU@TgkRVdHKo9<^e)cl5mAR5-QK*nD(ovaj z?HMK|N{xg{nx`07(lD3-jD!KrmOZXiMekIh3XLw7E7py5L}jud%w;Pyl~V$j z=r5-e7HtH~uV+;UKcD|5%}s$qQ9JLPLAEp5VKxn|EH2)1m95bQ7rAlg!P6y|U2&Bc z9q$PE@Rh^QHP_|3X^x$C@%K>xJ%f%qx#hMzcXZZ8pdjxBM?s`~1quyTtjH=+qLt|C zofxIeh8m)qSaG_$tIRONTMgxUv<7XiQ*Ofl=XwMdpMp$WO0l< z9pV&4n8n6csiOY>mr1vWqR!EUzrN@#ggRxC4lHd&TZ_$#(i$v$P9(ykN|Pakk$`Xo zwb}jcwTHL>n{8Q$@vTU#BioCPo{Ml zao1VN8;+~lzJn-243e%F-w52^AiKR1LiRaJTEiM5z>YdQG zVOH8k)5qm3KsNK|bzZkQI9^ha>6?^!DJSxb%PTA*Ch+B@xBsn*<OZWxQJ%h@NZ&E-aaJgD8nW=T(b z)0J?e0Ga7dJaNwf`FK*xQYk`ABvV65pB!NGt<)9SGI8P0RAQr`HT9&r#3I$b-*?!g+<*1{Pb8vH;SQOw{zU8vFk}JT9)(Co(N+^OX`i%7Ymx z`+cN*W(mT$F%xHmrM*v=q#%+uMYP$SYl?ul-_Us0vm0^d-OuC4{2c$$Zs6SDdc5t= zZ5j~a3moooCl*iSnh*Yi;lSIwZ%&KDO*+nOcGWJrbME9Dz120kfub8+pNIVXs6N(* zdNdw;cVCZ#=c(;^l8iQDdI}=HsB!Y`J-dw4i2}*ew1+#)9SxW9WhQ50Hr^A`?GaDr jmK}lz<3X_Z+?d4?x_=JaCwy+q_;_s|`HhveONu-VDS4(Y literal 0 HcmV?d00001 diff --git a/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 b/website/static/odoc/next/odoc.support/fonts/fira-sans-v17-latin-italic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b9619dd5d7e7d0fd16d0cd692437b3a76057ad80 GIT binary patch literal 24936 zcmV)2K+L~)Pew8T0RR910AXkV5dZ)H0QUF*0AU3H0RR9100000000000000000000 z0000QbQ^)90vwP=24Db%EC_-y37QrW2nvDlXo1i?3xyB>0X7081Bx63AO(Y92aa_N zfmIt3;}_UA?S^5!Syc((yZwZsLK(M{=uS{=`_z+n0XN2J&>ft_6#LcW|Npa+6B%PX zVc#{=>{bx7P1BBo)l-5~CbFD@qfjsmEB3L{(zdP{Iv?Xn_Uz0uv#18&@luJ5-3ncz zhp@$}>cR=Nz4;ZlPhrHFhCU}MW)y#-U>qUC+LA4bXRBKV%O$$?MlR!;Y(h&D`ToLp zKI|q}5UYnAv*2L*x7iPYvs+n)IZ z1R-EZ5g0^S=~>xL06jY}PmU_k!>zs+9nP6SjeKm~~kK`I~F2H4H=y#1AP zYj4rtMX|{9B3GBSyr}x$sR_X`T*MCW8g)a_8>mm6TU{BtvHtUxGNk&xok($hhWt{f zYPsRquNsyRf=W?h1V*|(oO}GVy*8KYC22}Y9?*bLO(-BXhK-rgW6j1+^8XA0&RMQ0 zAP+J}#(aen@A7}_0e32*TjkVNeO3VfKB&vDCt0RJ6OV04wg)gUlaETWhfA35sB7+b z6;Qhn;?yp&G6C}TL)$kiO7Jvq7<>h>lf|-M!0&v5Cf|yhqE1)6EWW5K zJz~-~LJzR$f(LxzR~i>AHwsWM=_D zioAsGtBPQyO(g@t88j!uZBu#Yiz-$4ar#7ob!{nL$x;OIZ;Co0 z*r-gTjup9oo0WHG>aQLx@R<03Bfkrh<;Xyx`Q?t)RrOW+zq(sH(#W$KEzvBH%uD(W znpV#-M+S}vFi0p#03#=flhDrYvb)sTW%vL4)3UwyJ!>u5vnT%JfF|rkPuNB0@iJ7Y zQv&P1|D+F3Ulv#!f$jNYEy&i8B+nRkW5MLe_ACGg00aZ%00EaN)7C&06=j(!70|ISqCnqb^T!fsNQ-%KH&@_{shv`Hi`=)8-r#G=S-awjV zLJ6TI;Q@Ov!H1KnAUMU>cI;op_CeHq#u+yOr^jiH9((Sv>)_3CqST*8Kr zwZ;rGSYxcnvY7Ldc2A_f9UI)ScV=d4s-mJIq9USd$A0Sfl#JPF48rA@3K&w;w?5z2 zv_1T}`o)E!LAn7wH1a$qpyZ7EofU5$Wgd*nx0|f(HF|R!?kYARA&~*y55B1+?`N-dH{0O8=wd(=-jfKD>E9v1O&q+q=92gv1Ly6S!lkM>Y0A= zp7}4ncmB3y&F@BeOfhR~)O0qbKa&1J^2Qo1bYpV?L;yj#)WdUPju}6eL=nUq8y9?V zaO>cvT%T)lWiHFPIV-2$tWFWfQmCI7gtuS@IfI=&9B-D@lS%dk6ybGMu8hwaJw zYKO_K*iY8l_4X544a<3h1@je66`|PZx-QDwcn4*ae zh*YP^L)3Ix7eFo~p6&8N2<_m$dgb@jle%9w3BBCib-qs4;q&*_ z_8Mvb+E~BUPuYIcW%U`X=Uw{k%1u%|ym)8LskUmUs_kZ#l%qA3Q&TFr;w!2wn`}oz zQQM14k9tbgo68JKOER&1OktThkbz!gEO%4g9}0;@fcyj`<|fzD^IME;3lvvIBWqS@ ztU#$tT`MSVuwtz(9-I}`UY^df*`gDb>S`aTuK!C~^}p9kUz%KujIB5)0g zzIs8Wpk`d>Lw@d_#eo``#OP0{Gn60moU zrjmE<2^g#pnr}bGLXEn#Gw;2KBAE$)wHwx}dxMOD#!deN-pqyg5c=01W-&^!f__8SrNSR7omq z8&r4Oo4r$nS6rZG?0a7=FC1owAR9e@73L6!ri;0C^>6t~qgrZvIK}PUfFov(!R*II z=+8bhSw_tR0u7-t6{-H65=QFA1@8(JAk||zxrJ44+d@HoI1KGA1lkXL;gQ0ALHq{; z|5KV?189st4clO&zdA1e8ey|7U$etbyX|$hO*r1n)zzNdX1XEFS*<)l|K0E zZn#-72`^4=-u(0`t&T(4v8bp}qG(7o@L!44mPo-qAwiKB8s-s`r_CuC&mU8en(3hD zDzfYN0K|;VCv(?)O;sN>Tpb1)Jcwn9hm1Uh?dmbDr-gQ@UvRzA}Sb4DZee?hfzXsNEmVg9bfD zgoZTKD21qt#Im0h?W9}_GxeWH3!ce~`rAp>ougJ|N@Hy*x(L_hCqoG4{s75E(Jq`3 zY6`|hBg#XvwFAhiP%U+>rtdp9v#8{NG5FoSP%nc*f3QZ>3^K8T)KTw26Nsc^YRCLY5NR+ncY z8P%)Cr}->Gy{~r7S!{K)h~$+@q~Gz&Y4n+Ru}1FA zD7+ogyC~qaE@!6o-bUu*0G}%Zq~M|2^d;s?o?n#@=RFh!PuzYs?tf%YgtX1d>NYDk zLerU;NC&!vZjdJUq0=<=$dPFe|FdLK7qQKxe^`S*aGc+nJ!b|K389oUR{pkJzkpx< z@Tb50ZvaUBm#@$-^1?a@0$<868Boa;0!MQ2aNOBhljF|$PLSGQZ}T!~-Ys#Vbnl8-?829- zQ)Qs5w9(0FnSuBp-LJNmPpT`C#X&;NA$&U0b=j`MErRYobKnBwZ+LJcC(1z{_&r0T zp?+zzLk@=dzjxeBWo9;ZB%VoOAp+Zl2~)Lx^BG!?Xob0hEM|Z;hh_ydC=GCeaH=M##RjPX1;+2iN#2k+(Aqzk%g0d}J_k z$Ou&(RF{kMb~HSd1I=WF4vjX*ClhLtr-JH!Q;fkBHz$9`?PO%1<{C3|5|}h9&~0u5 zPa_sgcB}j>M#eB-9@Che0CzuiRiCJq_{x8)CM9Pyc@5P%Ruihlw6a*jsEzd#1R|uXU z?%c46?ag&jtgS2p`*RUULM#ECnb87QM7fwVa43M1>K^QLXZ>wZe29+V z*$3A!O8~_o8@7mAVb@D_4nQpR13guqKcbM`26L*th6MFqjgGt={QvHsK-?rs<&dvj zg-TVb)u>gk!9rbnZMDrg=Up%g%R=B#;o|bMyN*B4{*mj+uOv3>Xj9nQv`kCOtN4tH zZ*Do!(w-&5TcJF8@#dKHL%n$Rqn_iwJ=G-*dxO+0^*4f zspX`nWllQf{ZFd7v+*{Fp7Z#p3@~aojzczOCnSK1BN2NvqM6yX3m#e>nyhmL4nj~O zCmu5A61a1UuHo%MRiiRirhv{@i=keB(_S1r$oi3Vk2U8(`Lk=-{kxJt{>b0R0#!4M zIf8K1bsV_$*9V+$L7dWDK8BTmsixJXEEhAnaKqZlMG@x$K`tUQZI8_MIUS#AD&2OJYdD} ze|)fC6(>AG78b%w{^%A5@%REsZyg07Gvf2(2D}X~!B&YBrv3Wgv1pJJ%c4TU zBZa$QC#iK^Hn>GAJsnS7=_x2nk!^}QZiST$EgdrXAI>>v6DO%)6U0Pu1>vHasDEL{ zkdAcTh90GYpe=V(NKE-6(!JzZj|?D*M0G^?FhPIo*S&~8NzMh%9>6_BxFk+MyWpOs z9SSKG1snyN?bEY^B-GW-^8h7+t;BMsd3XI(q|62K#C}ws#rNThp^FVHPGp^4=%#=2 z4FLF_U7jpo?zz%xtWbxvq5eID^0#OFv1GJCoa~J0NEHDBxsylQ&x;JHfDKaTLxD@L z+Xp(ZG;(@15eWuT6#NlgLozY|fn<>VzS54j29W8*Z1t^ZO57$Uxa|OOb5+(z#>Ogu z!mNfkf9*DK+vP}J%av1nz!UG$_$&3o@nb?sw8N*rUwdWHe}Yy7ZM*Z&lU(o{dWjG4 ztBuBg?HOB?j*utwK0^DsFNGB8fE+7DO-!{DHAplVlvbWW@>OH#3qTIwzqyHAOMpaZ zKWF4O)V*k6VLo;wgor1P|8qTotOk-U)!7vPf+Y$3M9yBa9xqMuA;WroImG;i1L&Cp z=o-(~i)IoPTB1cUMD>icn3%ZaeHb^8oWhl;S_2}`ZCNS0cE5@A`dW-QYZzTilAtmNWPYJ^+om8b&s`-uo=`A!vYW# z%YRzkg)CtxFRrv15Uu?Sr;3Ozg}hf@61^F)2WAF}-F*4W*7a;=XxTX1H3G52@0W9+ z3ccar)I*uJQK7z{%_=xgt_h4>b5xn+MYnIfB$V>ilc;kh2eLzRO`V95nGExr3vmX{ z>&W)%?p}!z6((3~ggY2c*}Oz}S%m9LR1B(Iqt;}SN9S9Afz^#mnlk|h#v8eyh6)Qw z=O+JJd$2L%P=GMo5{`R?(_;8(=@$VdiYBvFBs_r$f|-?ob;R@)Dz|`$F0KO*ME(i~ z9!J&Vzvw{pR}SO96ZORPx71qMGlvWfj3V(jRct$nPG2^EY(^SVZ{^+tEG)5f?c^qM z6A`Nn)_tjlmlzAR@c%BA2;N7fpx&E!v>8NIRDBJ}uK@@2s(=6dclIMJKr6w2^AX`x z8S=|qNjHkAJ;5n@qJM%R_>V)Wo2nHqel=W*S=1&Id?3rnG0x$5aDm}|?Xc$VM(YibL;ukMJ11Zj` zpp2M5y-gZ0sr%yp_K$ZsNy*a{V593_thG`6JJQYi*oI_`H zInvrQzUaWYusP>liE~8TZl=$Ij=Kz(*0buv9|2}UiRQ$UFO3jZNisq`WaiAwCgwpY zh)J|WQP0fuscH;jmWlzPH>)MBRRF`7?mVM<7SWQ(_Mx|6j`II7XQ;J?Za%N*28q*(r zoTTV3$m4g^>wE)KK!ub;5d}(6Oxcv8EJ{)u#iDP$2!Ri|W<5Td9ZuX1dd~GSN7)k# z#83L|uIZePsq+_LNrHy{%EYT-iJQ&u}^&JGoSn7)4RSa z6P4O-7)B|bKY3_-;zn?t!TedTN4_||v6_k$n(^l4xZ&YX}~5}L4tCnAw$GN}~i zf?K*?RKsLWXvHP3J$DsC@xuZcealtMOthLK6x7~5qJ@-Q*7NQUv(TIb% zh==${fP}~=G8o%3{op-^;>uV_J@k^(KoMS}M0k&nseDpDG0QBs!b+?3>a*IL`i;2a zs%wLty)F#L_;?r3UmK>s-j$^=mNnJ_UsP?bTkhk9L_%=N&GhaF>R+&tY{YX=@0_so zrJpdJzve9=6f;W6IiWdo8!FvV;^}4(tr%tS-|Dyt1bkE#S{>~6!D>PXBLXloaq4Rh z;MPXsdr~TF`yv+@cb#A!qZpk z39*4n3zM*{vZHlnPeL|#&QC?=MAfVj>tV@8)}-`ffqH4>&0}eH8bd{lj|QMlu!u`2 zWl9eM?&T}=dUx&du!!Jzh_8=Vpg$B21HB7Sr^184xe@o^dQOkX{FR@q_krt*#exaw zgzGec49Tv)YkQrpvyBLn;1Iq&>D)Z#^o%DXW0Z_P6T#T=9rzy7$jg^0G zHR77rk=WL4_-F0E9k@>F604g$ffc zLX^FR?aRx~!dN9rk|IrpOj)uy6ev`zM7es6nlx+GX0|!znrETidD!EHOa61k4OiXF zGcE~@s~#u4bRxHeN9ws>3}*H!&NdX{XG@&&yWjj_3pNr92ZhEZ;KGT7GjAR|c@gmy z$d5m@0AnVxFfj`eDOihmF=E-pu}P3@s&tc0F~c;urb|_(T7^orsytR>mUbOxny$Cy! ztBnKj_8(@!TN-bljMsY(?{S6vtC4E@Z@CVNxz3yj@kBi8XaE7DZ%Dv8T{Wb@0{qh_ zi=T$Uk2s!>X(T4pG#q?3QE~YX@P|DUs^Gv&ZQ32;M(|D~kfaS6R8+7i zdhQ`)UVEJvtP-J_x&_ppvJfG1d`RD}TRAi(S=_g{=h8ti4HB-XIy7sz_HiF%IbH`% zRs(3Xz|c&z6og48(tM@#!bPY*UCadBO&@dqkGXtJzG5l{2*pvkHVcEGl_3IE4j&~OH)0b&!rQ6V>x-~)?s@F$#F4d>{D6P984$6S$lwtHnpP>a%_R@sx3`C@fD=dk)*cGx=CL-fGD$Mex#evJsroWm<8(O5 zNDVV}zH_|0-T<&Hq>XE1_Y40>5e)qL2kdghEU- zNC<Hu>t`fngc9&$DF@ zU|P5*`!sFoRk3)K;UWMB_p&xwasMp3Uyki=Xr(wtr#P9!33%kQe#Jc=5<_tkbD*GT zgNS|sz~z~4m6H!!csIEQI!v985Rc}asNoIT3thuoc|XZi{xbZGLfz^bS{)U5)Xt zfn&JZx1aR9S-WZ=Zf3y`rYVcaoZ#1qKTgKiq!9-+{-vV=Wn3sVriIsNsk`2YgIQkM zLzNUDi#kbLPHAyMszR}Jyb;V$&~<9WL_~E>Ij>}lEOtt$BX*5^xSU{53%BoCEObo5 zdW48}TkrMHL$om31ejsggT5DHrA6*2kHjz5qEm6CXLSltPeZ^^V$$m`@H~M9&uw>a z86m%YFYlEeaBq$HbwJ*Bds6Iwh0bUr>B{SNXnXD;7`o7woewI;ys!6p;P$3h^rA_( z^L@>W86Evl^UiX8?sDt|=8Jq98C&iIJcbbECyo3pwiF$Vxutojuj*no)Ssk?R=*R| z++`hM!_=*Iy5%HG!V>(1zx3i##X|op;X1;iGk0gymgC>N;YA)C@OswH%`Oy5||nYXOgj% z#W!X6E0nSUfZF}Y0RZasBNqUu+s}~)3a*+&d2%MG*s+&V?K|*TD6R2%jfnHURrAmNxc%h1k_k2mEF-heyNtH24RSjON;`J(KzC;=L+w_3=|;L*lPk8+!lNbmd0~)vd?B6#s{E06{Zh1CSd5>XjfD1gHH6 zaJI{Nuss*_cfiH}0|`*`a10?JrEn7ogy8THLHq$Nix@vDl(uteno0zM6iY6iH325s zgR1!`eL?jBZXguFG%B^W{QQAks?Ql>K-!=}T-ND6X7GNHMh`C8wdVp?qKIIo2S#-e zWkmYSev{R-T`3k^mFx6@aDQA8bH=R7tis_2Dvf2DGL%ph&KeF%jSVZKdZX0}?4)Kz z-mD{C>A23BN!h9C$avsEy(*a4^K0d()Ksz4>6NLL?H`73U>};r#=**k0z)u0M#fck z8cIuZuSb>2xWWY7sxk(GB&8WS z9r4N)3qM^eDl@Q@z5qjpn57()(Rx=oXR;eAp+z&G5o;r{lpLwemQn8R1#^UkJ6OH+ z7y#*tUoiYeqhQ`hfUZULvp1)`VffL>$6||_Brsw)_G0+0b8d;24WP%+*gMliO=%Fg zSl5Jk&k#tEg~9impUEl}8Au2=Mh8tyQkqJFDqgSFk3g8o`;%4|F_a`A&s*&djxkjH zswyY))7YEaA^@zN+UXiU*hGRLau?PcsWCDmin)HWFjBpXqc#lIz^L*1jM>&H$2~F* zG*g;(J*L3+s$FU5Bf~?ePJ8yWLa*;Ms5KDKbwsp@FnZ)|b=67B8w8s;V6oHMG8;=dDp@bIN?>3zsk+*5D@)w>^2jM-U zs&(-O%0V8w6p7%>OC_nOECLlF=}JPJx=xk~H$@i@?-5vF1AiKXYw6XfW`TyryWw6t z)MK6PTUJ;gyLEUf2YCff9&_4j@kD>j0J{d8)ZR>)ysf5zuj5tQqXTOLt0&ZmLtXS@ zCT#dGieK|t(#W{*!hXt96c-LIsP;|iHL2a^jY`!P38L80BBn>1fx1d((15c4#%9%N zW%r(1?&-UI+4H2;K|#G)Eah`lIi72cI_~9J!0p%*3A((RI%OqlJCpnn$4it08pEXv zPOiB>T~oONjx=aRVs^!9Y^9E?CU>$dTo`>AYjGL!*6_ZOxIm5{60)ASCn>gdLC z7AzRyP6c`{OdKs8DX>|2un?iH1^emfL*n1Y1mqv8QDOUd8hD>?oD@6Br#DH^8~xpG zG?UW#3fcu?Y-(=L9eyP%)u{OVQy2@BJ~5RuJUM9h}D*?{4BG-=JcjyNf~hv&0qG8nKJ z%q^N?MF97@S-b$&yQ&EMB|vZ38X|wZW>*bxdD$u;N{jp}*_s(^-i&^-p)bRm9h z-w)CmZOqWWoyYV?aj9Lp23N|MYc~$fc6pNC^-Jf5BG-I~^hGy4riQeHOjPwQ^SR*( z$Wq;#gW<8wNCu;ZD~sGos#Y^mS8Le2S0YZmz!6UtNn9DYLvBuBA#?m0^SBN^j+Uz4 zm9o83scMFl*#dg$(d2Z1c8G=tTu_`DIGbp+n9|mGr^ZS{G}89F zs}n=}Xw1vt-Yf=3INg=h(Ce;oP906%o-EzS<>>PFjlZONN17l9rpsG9x%N5R zX~s7aq-wjJA=`Ngn(j?0UTYwgPZDmm*OaE|-?D?Je+BWbY$QtfSDGB7)~I|@ki;gj zWnGy4Jd46>%PpXbrYW$GLK1Yc#E#}DHpoj;N0*}7!HKcWqLl=_JTs265x|1C2}s++ zeY9x1&nGBgzNGILfYCqMkN*H!7}wU(7fT0C%3ds6?^6%!@r|}Yc~h-2_26)KC!0m6>)JqP#nD08suURgo_)m zM7m^SsA`_}N73F?#j8&`rsqnwtU4%;l3sy)$dPUpWgl;0Xm@Am8AdUv*WAGOUMNv- zbw6SeQ7m$uAW!^e`vi{ktZ!Q%jmn}oW?aql`;)?SztUhXd%zM=`ku0gkgvA)axHc2 z>qx^wfP`)-jG)Y5CJt^@Lbrilp93%a-K!u!ixH%#>^WBs93L6h_4@_zeWG6X?DZ2_ z!_UeU(W}h_OVj!|@SW_Em5e(kE1lxdRRyXlEQfdZ*7t4m$7u+xCoRF7;>OCX!1a;w z?~TAr45iWco!zj$#~q?d`hsdc9Kb00$^Sx%eWTel__5>-Z#Uy()}-$mbLB`gKK;GA zsdx0+GTH{4^*cgZ7a6PRJjYc)c&$6cVSpH?qpUW9if5DmW3d2RJD`4h{fB;s9jAU1 zZlZ0UFUU_kiubwcn^DCr<9q+j(;Xg3%wiqG?1NS3o zaZSi!YF#-<{4HAl>_U{J4}A7KDbU%={eLL!O_(_*?9`r!eQ@C64J$I{t6Qe~#dWm1ZRhK5ZFd#eVyX&JBJX}Z^Myz9wL&449sR5nu^Z95>4lF2l_XU08h^kFQ0GB z&C~(*8Xz^&CfpNuh}=Guoc#pRTgp~Nz@{jJJws}_eypw7ySu=q-Gm>3`qCU6fZ*}xG)d*jAV-5$|7q6^?oPuWF%PX_~^L+Y(h8=q} zH|G5D=8uoiF;mZ_^1hLtWXYqAx$N@|Mo{Y#@o*IT;KIWjRjI6eDF+IV$t z)^v1R(xLQj#(MwsgyHj507X=9OaX~p;*moLHlA-51n-Q|GWMASod5@ z#1U0X3~YOpHNDWp7@z;o3M`ddDW*5rtAnVd*CSVC#x=2Zp7_Nd-9(8qVb`#mE!9bU z&}HVyqMdbit{{i-JP~L}1sa|y@(}p%!P;lC{jELiQ3P4{YD)VG1+F-(-h$k(y`DnH zbBbKcWUe`E``1R044(cfH^I`rq8(-AVpYj^ldb&Z)g(=t`%JZSux)^MgV&MYJELoB ze&F;2)Nroq5EF4pO8vlvtw5lu!N=4Ce|nF^a9(6}aAS9r(IRDLBOAA7vq7{mn&tbu`IZvfnidYD~Z zMYVnC^U5?P8^_MkRI`bo3zt#B?q*-z&c*FbY=7y-%*{BIQlYWom|ClrR>_pF9IaJ( z0+c1XB?+~Mho4X{?;@n(Zih6IYVB`z$hMEQ$HnYHVTLVwLU=lWS7;VBdFZ z$gvk172J?u#Q!=X29^_iax0&m`|HU`U6Uf^Gw(GUu5EgYiS zLq6lOpvKKpe!)8%-B9LraZ9&Pw5GWH)Os^JT&JzBqB^`oP(KTQ;DQBW zT2g5qQ67a@xgonmi>@(le6W=Fup}YoB-9QzB;5}3z)x(eAii9_uUXc6<>OPGX1MSx;G|6&HGebdMiG|@Zy!Semrw?i8i^JU z$3=YzFzH1UKjhUgmGQQFaR^6a>&>uk!ECU&4OU}bzwx2c5z`Ox-MSbW>^80A2%|+I-Ro9QRo2+9h<2IP9Fw^R*6S9A69u7$Oq01<} zSzSgF4Y1y-kaVk-8}PD-Kl!w_MwL>>!uKCmmA=?2@=LiR#Ht!W&9b-Zt>f~}qV}Oy zyL4`%qp_*2v)d$PI~#R2X9zc`T+yx3h#%a;{`eL>sUfI|Iw+mAB9u!f=_yTZwiPB) zibeTX=uO5rZ=D>zUzWeIrMHnScWPKrWRmRTo5U@sLehR++p;DWGL?b4K2ygs18I3H zJEG9sWo}O&Bz*NILr;`)In0%>>vR%XK(M>nTeoXbd!qo4c{Nsqg}afDW?6$$kD>fs zY3my<{HgYhL@{`1!8xgwT6>q|R-H(S`kP#{Y;Fv#@6oJxGTH73R#Xs#E9sfbu_8X4 zNep7d10EX^Wl zWW|UR5NoAA%`gG2`Rs83sntsH~~kTx^}hg zB$LAlMrB&^YuzQkZA2(#1|~h=Wpjyiwer{BaM%+>nZW`vng7(&=c(uT>Pk>eYjp*) z^G>r`rBf>qD3&4)F*o2REQRIEvX$mR!RjKTQB_V5kHkd-gi_*57>>gb=7lEm8wJ$Z z;**LU`LMr)Jsq&L<*{cUBfJB90=5YK*v`i$c(7RQ%kwX{;a}eKGVN>Fvwy9vXieYR zd#me1RQ9J9|1+zep_V*Ek1gwHgFa}9=m~FTi5XaZ2KigFGGrMTD>>CH-$(yrZcKKT#YV`s?*irM0ByATNhql%w@It3&-Wf@42LW z@o6@kJXF#ehqiqb7mt*KboxMjv!E-^PqMz4pIR$l6;0FdQrlXYR<6Yzr=0Ul zsJZH2L5{JV$(;$eU_OPl-Ck1HIp3TBWU`Kp+h!)|`3T4VAohKm*KHI=_*^`jX&{9* z|Ip5>ceKqXqsDqi#9lsZv8bf-_5q_;)yVz&^Z_lFVG72r{P{XD+>F=T>~+i%Hr9k?&%E)mXps?V}t4m^l{wp#8Cr9ukH=&(DiiLx1I zmVU#mv)17QjP7*pjhj}kr?qF*#b_d^5-;u!dYWPreIw@ARxNLEtXi{HYVBAFAG8Nk zs7bvJonWEhfWI?TL^a^R7w?(<%rkZWTzyi$#5xWn$mcIgsoj7_K&JM@DVQ2`@9R}`O`Xp_E^ z-P{~YWXIcNYCU?ZcQN@&Jj}6kwZ0`Udx-lRiyg47h1g~xw!`Ls4<>NN+eZ3ADc+{ zCq1Yq*_k3+Xdfn^2GsaCr!`ai{@*}eRoREI6xY70R68OGpGLB1%%3#ucsdaeYJ?AW zMSbb!Z2!3B{h5``_A8H0$?U!B;S(u8gI_kSGgUY7r2n$He(~SrD!eS}+mNb7aj8Cf5o)L_hN!PnYvH-pTO^4Aj2r{`4L3t04d;wMS^fK0cht|7eji{snC~mmaan`_Xz zt#q*E)N{I{RP(pWycsepaVHu0qb!6_V+aTsGx?Hzq%z*u$Fe`zh5c2h%^r>ub9 zQO~E{$TY~MLA6>2NIAsir`?C$Lm7Ujnh^>b8d@7Y{Us^x}T&#*XcQ zzR|-pkm=lY5yC>2=OX8uEWQ%A7Ic-rlMotoh?Ua~(^}E!@J2kzy+T>AD@ob8LB%Zn z$q%$C>nsBeEdnLJC!z7jaJ8xOV>s-+=i6Bli$%n4J3iA^5e|}FEJ9bDc`v-xpgp9+ z;f~`l=1-(ITI@HHKg6Dr-IMk_M96OOQ!Un~JVj49>fSa$j1Ja*SAsckT3U$F_Ts9N zCL4X53trZS^VkldujHE1g@~tKNYMqZ>UZA2mb1JiiUgEhFWzD}{vwX> zG@a%klc$r7le5<%Pbp>od3F+9eSPoiP&joISNDjI_TFM&k|>F~4sui8t5 za=}*v)Imr3NyD@41&1^2&D_Xorj4J$FLNzcywGzj-UBK*kZ-g&d#;Yc!)eZ@&ts6} zjxnk~)?}!OUuILxlnzV3_k17?(uOZu8Un$UL!B=t18d`RsAymFwd?_8%YoP0UwdTz zJH4Q_$PMrIUVF#1|FyQ)Km%XEsw*Zx4XsgWA8o**hcI)#<2F`Y?z|+Bk@wQXB0^3UJEkW9!olFJ%9K7TpYdE{c2to z@3hhNh@nF7fVG0v)|Y)?B$_oBMFTxHYX6prWX3MfBG1rP?49>9-hW>SCJFy+fpx#M z=B2Xn=3fj-1hB8r=IGJHN(Xdnbfp7DzMga_W8V3tzJF$Aadc&NWyN%=VtQ3}b#Zj{ z%)qQZGe*5h?ZQ{lJf(iwVET%gw z`xNo02l41HRtljNWMgGTQsUdwA^J@&$9?p~6gjdxq2 z(cmHresbGXMmfFDE(F&1hq90+(JDsD#^0HGw|w~lrn+OT%cpcxy7EOga&J1OXwLl> zdPug0niebGQK$_d_?GohU_E?uAX&3eV0ILzX(=~V%VXDmQvJX2wy95BCRa~(O=E4@ z$88E!UOrCsA1whjArm(nNS`H=ZRjRZurltS4-KwUv~Wu#^Oi}tc?|gEQ$Rhf9F>mHQJwI1lI8RxYbqhNy%@1BQoC5SblaMB8!xZ)-e`>j>u3Gxh77U7 zx;$N>9=p`idTwa6{hN>XoK*Hc{wndiuSqdrV{@A$dU&DHqv5diMt=9Ud7&F^_hR@h zN>{4QB=RL;JzPV5l*4riboz8eY@=A{Ts9D7D|rSJ2Y2x$9r2uouq6~n?pO^5w zl;LBK8&~EE-LIV*Z_smD9PMAr>}#XR_U zw#5J7SL-~!b+MRl-8y$DH0$2ID zdQB;_rdRXdOPf8Kj@7e*HWnv6|IM&bKVmlPhldRo(~tpV9-@&Uqp9xYm{^!pDut<- zL?Mq#K<1l#Uot9|cYi6pW*aorcT{)Q!CjMqbquVOiP(>+O`piQ$2n#P$Gmv<`U*Sz zEpeiIDOz8TL__`LSFGk0ZGy7NvM%tktlOp)a{XSOP;;;Yljy3l-WP$rhylhiu7w-!2j?scZ{R!EE5Vd&t56!vT z1QaI^wjcmMH1i=6EksxC?O%3Z303R9uf~jG(Ep`;jtbdCxG?b43qep`q`){n2x>u~ z3CHIC`qBP{em^STZ(PCPTMS|@{TcUuK_lA{m_ihC3?XZtEyY~=9a3@iH;p)`MLxl~ z{yU`X`QI8=J&M(!wwHp9rTDR@GSfA+WZWyrc@bAbqyKqf!pI-B<^2)2XoqEwu>KVE zpi-P9TeZx!>C82Mk?G{s`Gu+JEicv!aHf4wH~r|(m*S6e;x75l`|Bu4e{>1-zvF-s z0d#`%Gw@h#PTQcIx0(!DU4BgHGm6*-XUJ-E&IaXTLX+QJ8jGK#WJpSmqyz@!NjX4F zem;JUGNCV}t7P}@YO5^|6I4Da9Q_}V6$;`)5b}Y9fFuMeA-7!-yFX6}Q{Fz*=fwPH z$&&KFvAF!NEg}E9CFd_VC36Qf#{}?}0Nxb9X#!Jx-WNJ61VI4+1y0*zvjk0XzVu|9 zV!nTmdt>H&sx%js=AP2rRoWk?tPr1QkaHU3wg$PSL9X~De3d85<_u})7-Lu2^%sx^ z>-guC@lzDrKDT|*vR-iUwhwI|k&k8YtCsWmwUu{y`*3K0fbHY${zh!dC4CcfEqvGP z=fKfJD23O*4d^$oh52_Bgvq((pnzP-A$cH9^P5k*CC+$kXXr)gq9MFcGJlqaEgBMV zQv-JO2%!AROKq}(PM6!&vtW1xTu?htSscpww|7FoBQ+OsuZGM-c?j}7Cy)>MmAA5Q}#Gjp0y1HlN0vmgAAy8hP2ihU&SzVfr zfr~nmBJLNnr~PJkj|e~0u=`>%AdSPuZ!nf~a)1^wS{I`PI`uKDL7gOeK?izH z(+kO51-iNAOx?qJsZ)0^9nem{~N411RwhKJCy4WnzjUhJS>L;H%Oaz6BNE>+V)sF>Mo#^RE`pIyH3iG8aGpU%|`7tEF3#qa!sH`ZD$pq%=%wy+s?WvzVLK4 z#}t3n&3mY4)LnGgBHOs{*3s^HC~82L;=WIB4bJUxIJrjldcVT$4G}PY<<1kh z^0azIQq)W8X1=HgaCrFK2$VOn${x);PgUI&$G4H1&1`G?bC?w53nk;V_lk{0P*yFv zgNJS;m4(33k~CGca{XN__MPSr>q)yJiyF;UWqc_=Tdu9$&tXa0VNM0e!q=>2&)wgY zOu83&ly0T^8cnTPt;uj5;+W2)wPKPH!3JV^GcTXCRN<`7r!@i11Z*QrpLJ=j(eBY} zNqpNmrawP61$FZ%GrCv81>)(vdeNrE&#>@GoQKKkRce<<7Il%5IiOxQN6k6$!GS3a*lyu?UP%Y0|;r9@yBYIgJy=bH7-uOo9O2 z1cLVnSE8|+W>o?Q_rN|Vxfu{m7VZ#9mag>EEaSu+p3lW%>x7A(<`}tQvT}zA0u@3j zxfvU=SWpPuNBRk=NF+U%ROaI)azB;Zg%m0}v0Z>$6Q^#B!0Bm$h*Y5OwGctn+ze1~ zFR(V4puV^32h4~DgYC#MWDFwM0kVyfnER)vF!t~ zmS)Z zO_MkZFvVIwkt2tVO;m{ijM^)AI0Y;Vpo{KGajmpF<*K|^+=F`#-BhAvDTC9SxY8&C zD-5EUAdM0{rQ_nT7<>^WcRdL;Do_Lz`)(0pYb3#na+3 z4k&qZpi;LG%&Ik{n3aw&Wk_t$#I$-gm769>nq@O2b+TAtY^c8em01&#z4ja+HKcT4 z7MDE^>L#REM=J^>sXapu1DqxL%@YlBa1MtFPlm1G zLUrdsR!)-(b|)l9$xvdvm>K>#RX4k~0IWs(W};w21|Q8%r*+8=WOdQq49Z~6cVU(e zxn+T3GhMa?z?vcRk*P@3wVAY){({1I#mBq_1tF^nFm=FrRvU_A;FO4YRUksRyZ8p| z>$l|(f2eFl8h1F6$0HU$m5jw=6Edps1f@5&@vw6+6!fC4EJdIhnF3Z{+XRr1qdEgY zZ7DlZ9%d-ZCJ$9q>2?cz^!#$(-fnNO!CE}T20k&18qX&%o`hCT``W4CY!i+HoG6?; z4lzd$b<&Omu-@u8u;KMOT3M$Ni@*yU9CvK#l5gDF{sX$2eIIKoRymI7Iwxta3Rik! z9o9ltVKn-3s$AuJWqyt;Sy4@sFsO3NL2|t_E|Ym=E+eVBD)KCe!@&1Om;uQ#TR~8* z3Ijvc^TwaU@I4wzlLjkDsKTsY&mj{pQgADIbmtxI=NX}@_Qa{ZO@H`9CF6dm-Wi2N ztpO~^6;uQ!aZY%&JJ}R`v%uJ#yZ*!UcS_jJgjRG&l?1(tU%IXF(s6SH_Cn-j;1|P+ z0yw`c1~UjbGAY3*Gz7N1{6sW^RBk7A!?}hCeHps_?RGBeJXp}MiBAlI!#C5h#OiAe zl=dLf~y$J1`Q=f9uvhc?rQC*5Ilum;&e(DApsuaQSHgOs~g@_rUR`Hgq zj%&<-MgyGKw{TBp8|dE}$f) zH}UAQ7}`X9Qi&hh@Qv`l)Qc)l10PeY4IOEfEEO~X7LNZgi9gyt#Du(ktF)D2Iq#}s z+oox|YL{t~)_2T>tV^Fx%_RdNyyjAgS(eNIQdViNp~}^8>U%D^;8L4e&0CFbJ<3(} zgi~Bl!63Bw8VJI3U{ueG`o-iG1;+)cbPMV@UQh9?D5e*vVa%}E14zEgwI2j-2gM;A z%td4zp2bOI@pX+2O3FMaYj?`nO14hLClMd}N==gqngt>OWm{F_0WS_U0a7diH3tl3 zOD-TAdmEf&ZJ^iB_=B;7@H;=qs07{QrUh4Z9h|TEnrAb#OF*jr2y%r(jHBdTZN^B6 zkLe}C+|i@oN3><$Gu{}xU@J<6Yb*556c0UVft+cB?}kEr9mA~i5`du6Wj0FZ!9BO( zd*p)dk@@i)$|g5b*`bRaVX-|Hsd564>{yuMWuNCJ8qIOEn7*jhmM>0u_^y32#ek7i z5t#{*S{D+K8QVp8q@lCHb0NvMJkz|U{R|3Kg)OM=*abXJx7B_CDsCni!n{rn0pG+% z*%5TWfpd>;x*RA{hvI#hO+@zUNDh{0K^T3z;2=ig?1Dora@PNMq+Hc7KqanwX3UaZ$` z3*6hq;C2J_)jEL&HJ4(%qZ>|Y)S!S1tr=d>8~@8eIDrW$m9F$cn(0g)`(>i6+z z#-3B1DXIFdhkRc!Qz8==UU1#^T=*$`;|u!nEc;uJ_VHkbw_*?|^ zi3S8gfe?OVjxgPz0)8I^Q+vzag3|UU^=|aJola7DPMRy!kYc{}5Dk}4V$x4y7 z?zQlinn`r}dWGBQMI+?;n5DhQXQWH`Q3}}+(6En&NA=L_=Wd{RfTykCMo)!~kc>{2 z_|ulZl?S~ANHr}kg|n2GylP0Ax|8>T+ntA#ETie z_H(>a$XtlaxdT%>G(W_X3X%jkEfY}{h!OGVd&>t&{FI4oQ1Q^E@oK@*%Ff%O28hpO zUm2XC?AMfx%Wj)-3g*uT*z>}+vl`q70QC*JE={{*cSvO_Rw6!|9=U8+JZtJ`0@@M4 zu!w|Yo?3MnMol#FZu=VzUx>fmiy~myMopO`M6fYp&5-TKbdqZky1}U9`xuNFmUxTs z$~qj3^m!9xUNm!?zN+>0V;D`)ZM5`a=rJ|+_J%j2=lr>fb|v8UTnt5s2~&a2yOF}ab3hj+H-z+vweoEE9A2jf>QuA=VQx<>6b+i_Kew-h4^>U4Gq;&7psX8D zWw|g=@=hKU^+E2`W#_125ly;ON6vOJs&li%eqA?lGCrxQ2--q*Rpk*mwjQY-vn1{@ zBdm?&NMiBTqMB|C{>VmB<>upY-vU>+?PloEpe`~a1Ep;BOp}J36PykSLMw6mTtqSXbz%X zDX z&83(XQnBpdbYBFoMhA?V&ljC;+i)Veh;UZsAI$b3uKU>!6&0Ao>_42 z+~gd~WmD8EegJqbZRu4a_hM3wE2!Pb4P0NY`a?lVOjC^oc=q3BVKTqdR`SLSn?J|1$c&Dg8-$Dov;?pD`KJNn-q;f)EpCo z?;n*2{*V1=YaIVyz)?zV(EZ`Ne^v1Pse%Qln#aJWWRYc%B$n4M1S}MSbj!Y2g$)S~ z2uj$h+ycb0C{jDCdn49R{OtUZnbb^DAS0_v377~jZMCnJZftR+>?wa*&HU>zIY(3C zaD6=h=B8#4j0s{8s|6 z1)G0^i-Mn*j4TvK(kk@8<6>1|JID*w25^ndKxWzzZbPl&vlwuz>^TKk4R8~`&{{#I z7f|$Zs3%Djsetxln5+<2nJzlK;GdqI>bH1KvE|J-mL23(lgGF~+;edey^se|yuV^Q}|n)G@6Srm8)kVU`33 zIllwi2=MIKY??J{EPOW=3^WElJSC8ZRR2QB%gRQ4{bXja>+=PXKK{va-ig-RvLJyg z)62Nzf(IUS(zT(%SlFJf7R z;C2-|$XopUwBN3mL*GfkFKzxZpF&GeLhIW)CFo(K?Jjejj`545sT?mR2eF8nWQlFk z4L0?1Hk02rFl-1tg@*IXBlU{Q;HCNx98QL0G~vH|?4v z=L%d|6dZY`*9MZiqvffM?K&cT|FbWrm1t}Fkk1TYJo;lPTCrpvTIoUW2e2CNDKg3+ zrE;f);)}V&HmCe6byO7=JqP8K%A6u+X7OIk&2T!V0DkY0?j~)PrE+zu_+boOhXJK_ z-tC|&$EN-u_ZKi~8&if+{jInT&5*_}t%I24K##N)~y! zGqLlXZXl#P(tXaHY$#In?8qibE}n-b56?rFgXeVqd(O{yWe`i4WgG*!1>X=~z{D%i zlxKDTeRj9G+~AqWF9Zl!m;2ZI8Wv)pl;q8LQ<$cbl?cPg9_pLZE}k4;o3nbl{RG^VjK3`->9Z!Bdtm7Uil2+v(9 zc_F~pns=Be1^XDb>~N`-A$;t;A(QPp70-+XYvwb?#_N0YoLI&d3UA+xSK4eyIp4lC z5udfIbhAT5qchr1%~SOMJdct>C4X95`)sNV%I#E>5$rCHmy=E+uL%^^_maB-<<2}V zA$W8TWPeM42pR?XP!KnI(U6Q38b7>{g%$STr(?jFqTx@39_vs3{fpSDSF``pV4#f~9k z(@YE@gC|auwy7vyMb0v(xuV{LSg9L~%Sx5R(ObV}@qrm!R-ee=gbS(gY>JR_&-&+f zvCN7j=VeBS^n(N}vA%m4J)aRwOiTpl!GKG`YLXoUB1DRZn^?Lhcf@s<@q40e%%!UC zS4g|W&y8(u)-s#gs+vYgOqH@IDjcI%PFZ`AO)g1f5l*@-T|MT*I`6XegmsSGy~;_m zMg;y#tz#CcSPiBR3kvE}hjYhG`dUUedWKi%EO7i&FrN`2#*XhuobfIARH5d}MDiz6 z#a8*9WM_Wk_`JiJZ?9?jb0nT5J@V>Sn4jX(Oi!k`0sI_R+TRI0eALOYm^ z%Qb5;R~t3TFfCme z^bD#P9dt;wBi8uYFHG(*3tzSFU7k+e7U?pB zL%ssHZB!VII51*UT*QM9eH0&@xy&CB|L%VEo=jp?gv4{esPmz^9X`k-p7Dxzd?JfH z%ybo#zES-PN}ZDq$F=^RI$};B#+K<}E)@A5>2nk(EB0wwxMU>a(nNKVi3#Dwm-Zx};C?k%OhC>A|a z#~m1Z5|WstBqt@QNlSVrXG*3fBbmucHeVdeEw#!@y%sBWU0gYtmfTEFUS`CR{1l`x zMJY~6N>i5dRHQOhsZLF5QBU$tbeNJF27PcEeo)}3`e4(}L5Xl5{3cAa zVm6yDU;x5z+`?@vU}y>k!A)1(^kXmxZI~_vKogpSTMu=> zs#Re{bjY#J*VBpi)xJY0LitAi!NmE{Nl}h9EB9H3EIBY>uXAs#R`|v_0QT>;yWQgb zX0Yo~7Y1i6Od${gPNOk|6o4EcUZ8HmDuq05uf{Z?#?8+0rV}j*H)cQza3fo;AL674 zA43@M4S`Am@)!Wpk6W-?ztJJ+6-|>6WRMg<#NP-)^mIB6>%xj^>MD+sNbLg{Nl%TW zDNIi1*wFRFB9(ChsVeN-f~&$91-mlIR^UB0J5&!@?r4&P=t(Dxa~RL{&f!wM?%BQt z#iQZ-AuQa50y`~^PG##J;*TTjyPhV9Y|@1w*eM3sjJ9w|Zx^e;7m8h2Ddnw?U^}-VXyvQ!=W&vxD_d&;of4>3uYOA7+sw zyra192-yeFhcnAft&ybABO<$3mnKOhHu<=A=bITI?F;O@oi~Wk>bvC7UljkwuLpsB z-D`8+dREtTn*rF=yl*XDO1JHc_Nn`@1NA0bY`Wt2VW z_^kJc`-o&j7<)8wFoKO^lGlf{xss{bjQAApT3Vc&}__N^VOe06H7iq_I(ul3xx^*0X7081Bws?AO(YH2aZn+ zfmIvA-WM3B1;el2K-$f0>96ivASWAMZW}6C?l0YV;ZZqr-jwF-{T|x)Dd!{Eh<|1Wll4jYV+@!3iTU_ z4WTbnbuOyQD#J$MGbf!l{Gd+E`)(|4ZzK|m8E0%TItr&(|HJzwhldX`-7!`*?5H3* z#cZ>J*qMIe{I?TMPCU^NGzu+d6hEVoSRsS2IgrQ_eI!X6;wB@Aji3wLU6+Be%b-NG zv69nXo`2rI{`)c4+NbI^;oGkvej}42Gx`x2I((LN^0Ugi*-pn81=hlnD4p6DsfWcr9{Z{WS z-diLaBL{;XFd_x32sPo{}EraPy@ghZM{8vG$1XI_j|&Cb+}I|;680qGzd@=-|18} zJuFkE>6f96SvlKN0H*f)(x{}L3$6SK|73(yAmPcAxscT1VYrAPvBTlni4(3 zwD?M|ht4ypstZ)Q>E-=ErkX0b)J9M)yk+u1*o{o-U$G}f*)r4VTdjS2kMlA-&>1E3 z{k!s~%o#>Z>5^VMH`x<(?u{2EBy*r@Er$0yR||F>yx zd+!^e^^?c}#G;YC5aiRR=r!-X(VLk!q8Z5`Szbq8@LCJ9Z{oD zc)K^H;s$8g93BAivINio6!`!BsjJh?*CQI)G5z)R0?z!`K&G38Mp^yb9wMPg3HojL zS)Ovq-QOjMNEl=gu_7WOgXI3(c29iz*WLF!XQrkqDykwXA|mR&_FBK7Nc!k;Boakm z`z_O2R)c{!CU;HQ2@yn;TaZJO?D5;$V{Ns&7g1s~FyJ6j`aLsq)-A9~cLAcuui%jb z=ShHz0d|EVTn|4dWZ4$Dbiox%`AShQnN?W*Ioc*!lpcFvRphUR>g#j!A9roI5 zyNy;`YQCA;jn~R<02_-Mm5dB>q_Im7B@}YJcOX+I39_b-AV&uvP7I$=XNo*Wq$#%- zPaBQffvJ49S0*BEGKcyu^>;aycPnk`Hlf2-w_SU3q=eRd+j7uxtIAejw#=)_B5sj_>^^0w+G#A^Li|Lq* zv2G*A;L&gKAB{^6YBhQe^C%xhBY$L#lo2;{BiNvXFC@u@!*%cmgG9pr^^gA4Z!GXx zKk7SutuNpdj$l7_VsmM0dwDPH**$f|TQTs7rbPVc;o8HxrJDgO>d+&3X&1J>Gdihb zI=r>5FvvkbU^@Ggb8s4t;WX?|eX9@ks=AQ)LEWk=-BRc3M0K#Ux3G5>bOf40%6?}4PYxJoDcimPcF*kW7Spup#18lBeB5uaau@ikZxzv-c=cbPmaKqfS&AiK5!3x5(fiL9+jT(j(Se9wf`pL`<4XeN@Ty>oA{@F#I@ z;GLZ7Z6M>Dc~yivfCGFpF3UUMi zXPl;+xXBx~X!mV+^etxL{|c_tbN@{sV<96TgCYGOjgX$e)4-#UB1k?Y3z7nfgXo|c zsx8p;S)>|t0LFV@+OY}2#l_t~#SHucXI|Phti;-)zTJfiNtp=$yi_2rt&%7}>w@*?&{Dc>r8QQ%b9ec86(U^r$!ii*V2GsLACmS6Lb*Q-_@?ZI>^=?>C37o+u-y(j?Xr8~(tQrlLpuI0 z9dp7-r(Jf%Ro7g1!%er`_P|%){O~tUFgb8^Bn%8>ENp&Ux$@)5lYoqZ9~Bip8X6w7 zv?zjv@fR)}RfGrubaaFwMWKlnjV?wqPpNXL>FKfM$)jXcf>5Q3hDk4KR#s|_8acAD zan_{2AOj5GYM_DKv}nOM$PljV?A#4COfXo%Miu25P36W=7h@^cILa}eYE7U{CULQN z5JIdF+d&m}P==ipvzy~(rN}`GIRxsUBT(wFBQ%au+%YP1g8DeanIeRT$Q=uF-KokA z>g6U?xkbI)4n*#_PvZeaI;mP0_3)IkyydydgWJL+D7zn3yQQ&X`!(01FPV2MlO!?gX2Pb{sRsRByLk+*}C4=Pg~|!?&af+WqtWiJ@Ymk#6^yAj!WFdse*Nm6x2DUU{&@lje2O|zyYiZ5-)!bH7@>Cq_`gq<*YcDjwbM%`x4F-HRLH(1hk!AXF20E zHW`yAm{C%TIJe^Ga18@#c+AyTItCe+nXOqW9#>tw>v%13kz)4l$K#x7b%YX+yX z4I}L&e&Zh^^^0T-XtYe`cZ;t&bC4qC7J7~hPfl|5c7g-uLh_-OUvI2Dx7K#*9q-3ozweIw$ znZcQrn;eIW7Ffv7k2SW~^HXF^Ey3`Xjnwkttr#V%sy$KElBgpqQBGz?nIT_1qKk*K zbhWhVT#xTn-+UM&JUePd4O%s0O(g*e2e0q5@6Ix)+==lD6Vu3PWhE1cRd@ZU7N(9-jje_gOv^~;TEi9ZncA7x2ZNQcO&prdEJW8 zY}OtdpT&4kXP)K0u{Jn6G#rH-_RC`mAR*kRU>htr@d*2Dr~+vNk+XP@np(=iCMYt^4Gb$Ua0a5lT@8)^TtS4Z-rmX{|ctuPRchsz5y?keUCHtpM~ruzfeu+I}Xoe#sl zW}IhEk~pn)($ex+$TGRF+j{Au;`y|@TgjGu4Mx;jLQ=8rGy5Ta`t6Uu5$zQ02RD`+ zBK*?xyqavs2#|tMBvyQz^ue|RDz^T9aS5%|?lQ6}GMwc8taxipPC2RWCriT``&s`@ ze*2382EsLByE@!AaO4{~K}%ECYbFr7hl@JwVRIzL!+?xJCfQQ*ylU@6cy7e3Mwsc( zioU%es|U4CpEV@b$RUp|NORjcNOjm5AE_@KZUE=ia2wyRbT(XHZ1??q{jD|CbggX8 zT*+smLZ?oSI{uXt5x_}%2TEnoxwWSh(b;aIp+hS~TfuPvEhnlA(>#6cs(e+rtDfQi z=5YUiee?I-h~MTXbL!B#J^hBE(ttl=YephDOoQurWlQNA`j|z1bXH$!_GI0!4ouE= zljwWMSj4Fi5)$2CClG1PrZL08Pl;H^W0*qo`m7SQ6IsAW5`K7*Lo- z+gj?-)3s)i25o-;53)1wI;0rKQfLsk*$<%uXPS>B?dCfJEIgim)7!8rol0x?Ta-Ngtn0rUU^^FV;J z51aCi?ooo&2etx|Z4ic?qvLjjsW6 z0qEVaIObAcilI~N$VxFc8|lsRr1Zna)Iv*Yt~Y3KqB?{ugByz6VpMq(UCqU-zn|*Gkf}_x$<*MT5RY*uWrc{rBPHh;ttD032EFbRq9H( zwT`7rzFcbI9y`6>T4TE{FZQI<*SnW2c6XLa*It*KL~8GNC5#oUBW7_AtQ(U>ycU;h zY_4_@tJ2l`WZfAqc1F8K|18mgxQmuxhPMane5-+-YvNgMyK~yi=4MrF+U#(4O8cR{0g^z;9bZ^aobkU2-0|IReX?nY+rkLJ42*@{vU34Tca|>YLd<#xmP`1gj;q z2M%Q*+>FY4%jICngQSb`_^YW3>t!N%@~rC3CE(4>zx4Z&BKC*lMrq%Hq)VYt@g%ez zD1Ih_38zfIipzI9wE~d-!)Ko-!x?F_xAAg{xRtAp{) zPWlwLDQ0?&o}aS@8Y^yDh0HT9SxzK35n<(rJc;Q14v(h^^HOHJ61a~0fFBZfnySr> zP{y^|vKlraRW;I==_s*@wdwKedfAs2odxW_0opk@E2D?TqsOpHRmLgm zFtq55o8P1h>k7d*R3L*j<&an3_JFukZq)ou0TK$N3)JXQP2h+JUj@&HyrKPZvK5 zoyetfG#J}Q`wz*!(>tqZf|N#Sc>E%@S427AY`vEL>s-oY;|>&C$zBMowI>0vh6AO- zGk2nkF#&U5X`N;=7?J2uL0v#xdR#1U&pD0O|m&krx#}m^Kh0Gl>WGBG0 z=PA#mufI*U_jDWf5}lfxpc9!a0T&g*@c_I4A{L`MN&pN1HUNitAi&CneK;Q7!x*U{ z@asaaq1oPBkfO%JmlF#I-&Vdd_QeJxyrN1`WWZVjnGSx9%cYdZ{T7Q@teJ?MIND6l z_uAZ0RHnK%G>xTg`yvxVq!__u<1s6eAH5 zo{swj#vMgcwVCqXO^MU)CdBxs;(X3NKSBHw>PE)s-3eTlb5+i5bo^pE#=Qj$2#)QR zQ)EMP9^bL(^5|tWCBNBeyA00Q7SN)EvgapEW8zE{7_h`A9`Bo~_%Ke48(&Z0s+)fSZ(?x)wIl5|b7KBI3Jtl5>5ab_t4d_COv^+ZhvEFl`0M@l>#>XURprQ2E2W3N2}c^JPQ3^OVY3i>b4z(dosSU&}R|h4yi(L z9{>K}J#KCnSh)fRwOx>oA4{<`x!E^oxlROyVwga5sWO6@@2*5>043iKBuD!uGqkTL z9D&>~nYqGxJG#$mzkBum zYuG!akz5Z3SN1V?GXspol9O~TU8_K`W%Dpu${>xr82)cx05RU>K)O1_Xc~_Rw6w+G z<-*%fSd71GRX=yBSm%doCOlU|2*Zqv;ik1!-uS%F>Kov6g02??&v*%J^w( zLvQTZ%J`YKDigMMW&Qm6+A3`Ov>}rP+Ze0WmYQ#-cH^Js))#j6wqf?yFaG_?*Z|Bg zf5NugfZ$-GK>!XzK}JGN2jp7)Q~~Bgda~|rCl?+Et_L1HjDv|Sx3+L_@Xo%_JKNeA z)>@?%l@n2VWj`g9&Uj1`FT;&MuR#g_D`%Tyu6gELV4+18Tk;gkCutL8#UB5W5HC2H z7zK<>mRe@H6;@hhwKdjS_w=ojCc0-|CS#6iPanH@5sWhigrpp1r{gDH7vrT21xVrD zZ#yDOS_+!nZ{KZ%IC`gI@c70bJWsVQ+C-r6OdhQA5jb4L1Ge;AxRU*jOqyVXuX-5Y2_9_ByYF|tqrA-v5UC1~YbS#2r zRod+Wueq3%03Fzy8LZlz2kKgcPCy?A)E?Lt;7GY8oJ;${&%gYnnhjhn4jG0`C4$}m zXi`x7>qOnDdyQ}sPRFI~cO;Y8mkjL>imbyJ5AL8VFf0_grSN1vVfUW@A1CE3fZeM$k zs}4G5x1)Z?+y5!#P&j~NV&UL%;mQr4ClN1V5;B2Q)HJk$go~gPDcWf}oC)8FM2nFk zRk}=idGZx7DpjUJB@+v)290c*3@}iOLF`V()hT~Hv|p!Zo_HI#I3y~LhP&>cYjH|k zT>P=Y#%TNx&(7$qH^L2DZLv)UDiSg}3K|ABXAT@W5ppNsflJDdHy;6fedjMsun?i5 zDD{ybR-7d95+zHMD@(Q<#kwifU4|a&nAPa1)(`diYt~mkgY`CqLa(Tk7-3|txa^L* zZmWzZ2-3?92Juj?nEAEs>S9=S)@s94AcMwAUF`udPoWt)F#jwM;TSia{&%Kb0vycy zdV#-jJVCR-hq<{+AMU|kN2|m+%oBW(oZD-}fsfx(?m+m)_Z4{i5B%3#8gHLGueaR1 zhaJ*4o>=35%e7p-mX)!V@FT*b^g2L}!Bs?HpX@4PU<3YZL=rxA8}G2c?$e0gQd6CL z_ExM(--Dlz>RlIJ)jT}+1Mc4ynIS)JxWNpJ?D3p}Cu;JqDD04ahi7OIHnGoEIPo}B8FjNL_pwz zNSy76>LSlU)QekT9%Ib}?QQRRyl#_rpg@md~xp!`-8of1Q^|p;M9x|>( z{@j^g(Z^~4@+jX7q1?ja)TLtZCA^_41^}5^V(^c+Jc)GHU^3DwYq^Vv8^ha~&!p(- z)v<=9{4luLXYAijn~<@q5Ty-~A>iBy)F?!$V_>ROAy${^0bUHzLO@NAU^ZY5N!?CA zU~KDQWwi5SmZ2e75$zPMq#V)%rLhL?S}RU0Hv{Y=Jt7ibbjbVTl^tO(1IL+XAP#-H z;^+v?#32x+zxj9{2JY$7k8{{q_^V=jMJvY05ET^@?Ir|4N-$(ZgPag3hz=z&pdu#J z#Da#{{TC41uSz3%JM)5?=zEdGm)0#oF!lY#F2Tw7|2^Gek7LsjJ8ZG1Z5RlKk!T%z)X{0~!ZmY%L$_6bJia4G07J}VS>lmo z#pbC@V*xm6zt=_!9v@lv^S-~UO3Jf!nj;y!1Rlw3TzOBxI8u?w1emewA|d?+fbC~; zlrMdv;CJL2XfPDIhw#X8-%sfV^@XP5EqR8hsg5+>A!E0=hB_4pVrdM$PCpE#3`h8t z$*zs!x?7LtXK#m*_aLNXkR|%XNSCM0Vw(;EH0i#tlZPB?ei;&zQWwA_5&(L^&OGf%djDBuetK?d>2 z2rUkX^*fvBgaObLU`W#pj_B1jiYH-#Bxog75LH>DbUAH0U9Z#=TNr5M^#FRLIeHI1 zb!gG(1E3?*8B9IvW(sLmZiKIWjYh07MY9Oh-H?G4Y`3Mr$JWRo(18I0FfqU_QpaCb3I9I)0W~-*#X@#`;pBRQN)r6+0FKpz< z*dWPUl@s3Shx@`7#=Ay*&s#y7HbQZH&q@}#-9bF-XIi1_$Hu%r^g)>cRkFN^`iDN_ z?mK+69;AIijX@Hrwd{{eKhE-_`-o4<4g-MgggFF3ZW{vB69jqf0M}wZK~T_!01X6< z>_*!L;3~pG1wr=+0xVJx6h9syXjBlCL=a%9g3PjM@fuQ2E2wBgfRzM6RXe~A>_HHi z+7O_bAXzONUai#79n?k;V4Z?wJ)i)4DhPT-5THdtdwbKifX<21ipg${S$qu`Yc?95 zRT!uDc}*fZu=$bFW6%|h!oj{M9O8>Y zyDtidY5<1$5e)YuV*~`FailLATYb?u$`_5JH2`D$2*&!+m~o12bP~2<)f2X{wCc~{ zvfBr&#dmukAZWfZ1!NmgZv{CP?Da3efgb>t*Mt5EIQ1VO*#*~~x4$7c1Sww(LmkFF zz=4AJfXfuE-MyNzhg{vm0U$j=%|t;JOur7UI|>?|_0cqqm7Y~>-zd1mxmMa5-PJ-7 z$}v`@sFPB0Y?s+^3)m~=DOtLj6I<(iZ!=uST&pHTW|dn{`Ve3OshZsaio$PXLM^p4 zrunvA9c{<+snb&862st(Ik{z3)U`c3b$okkMW#n>r?D?g%4m7uUgxD|_TWZ@62tFf zzs%9fO{+C6=E{37HeIJ|k-#Yw*OpM5)Rda#Hs}i1tUNz;DRpb!CQm72&3p>V)G-st zjonkkBmn{DOAe{YXgJgmPC&ZOvKR|PlBsF>F>Ouv)7Ty)C(HbV$Q*5&nL(&qw8q`@ zZk?Vw{)sbIq(aZKQbrtQHtrRtS$T{{X+>h1kmk%rJ|S-^i6^~yz?<|JOJITrVBTQ* zjyxhDwlaVj5^!8}8kG99TN zNT8u=BoVmKN`gRtmN&cq!?X%Uevet-_eK>{AvjX2(L*y1eCPvXM(j=Ve|u)FA&DDR zV}mm0;HgQ5L3D{bjZ7KOhq958P2*~a5&L=E`!TG~Tgde>!ICKSnIIh%J7*}#VjZ3x z-}WqY$?|P-LI+)Cs!VQaH!1|8@TtS zZ1?!Jb;Ca^TY*|gJ68Y~n!&#-TGRsdH#jG+^8W;1CZ)qxC8ON>Beb0POjg2jH-g>9 zfYHgPg>HR{zAq&y>GNk?Cu@!ly2$PzqLz@>{HeEb<5jFvEsPUy)OA8s!g7F>vI&RB z0}Jiy(lw0v++*5fhg53Dp6{BWAxbRC?>3Xd4*}$yofiSdM=!U~LZ(?}eIN0OroQPT zrGBO~*}jaHYtv5=_S7kL>aImsSxswE!d`eY*B)Hm`&wFaI)*aNG(F)83tR!c`VMLb zW!Q6)DUv;3n6}@_H$sY(sIKaB;)=Jb-;Pvqsyg_5jU-)qfhqm`L)vl{q1vP+F96+* zRy|gqF3~jy&&5(~X7Caa-NyXmVQ{pzgFsR1j z9q`HHXc0Y(SA%%{9@Z-BbF?FEx4-!f)4hZIC6r7f^1i*gcZosP$(`;gR3jG7Ngwf) zau)B1QVGVl>hkGpu7w~}%Hgfg!cKHFhQJ>JXJpaUF<&p9-t=ULodHN=250Qvd9He&JkeBt9yaF$~k#pYW*RZ8T|eYJxwmnun{Or7|qHubW9AiL4|J@G1iki_Ly zw&NL5svop8{qt7#H|Y={jK?Y>AVr`(_?>2b1Fw!wtpjNL$G8gbC|vIS%o}*_QG-6= z`N32}RfZlrmKu)Xzvb)|P8vlpCF!QmBYz4jwO?q?pWXaRM#(Ta(8{arGrTFnuNkw{ z3=w#tW?@2<-33}dM7}pU(8v$E7jXZc`E;=L@ZHCx_JYc6>=m0w#2$% z{H?&~T8n@M{5{T*tH`?g7CtN`g3O*TC(S@W=kSIflrq0nF$N;xPm2&fcC*Egcx+{o zs7KrC%=3G`rbT4k4LL+32xJA>Aqou!a+iYq9aa;df_oW-t4fhLR=DI;KBd z-{1d8a%uHWKOg?Tq$HNsa$`}i=u0ws zN1Q=z*dnCCi z!Fl zWKlf#N$ubHcy50#uAH6D7#>t~#W|5mzQ#Fx2^mEy4OG}hkf6Uz*uh1+WTAlFR?-kP zpW8X{SL^v1#-p3snU`>S9yRpG0bo+u7c+w5a)Wg1j_rtU`3t63yjOikl6~1H{-)Wb z>fzr)o>SP{k6mS);yq&1DY&+NxIt~to&GADUko<zB$Zx37sN*Jj_CTA=UxDM4R=;&EnhRL5uDsQmH`So11ynT6qr2 zgdOr$-9_CUihAy#ZpnL<>=WSt^vj_^E&2!eAUovV{`-gNPHU59uF=1LRh_5(G{-2z zf6;iySm#m(g&>6D;gbmCkymrfbc^&G8>}}P>6TwjJ;0&2w|UR-XrK6U@*$m z@S&&)&Lgu5i`3{&w}Y0rxV_ymJehre@a(P6pj-20nqDcPM8KZ4ftzKQ8c|=n6}#w3 zl#h|59Rn=mlW--&cfMn3?$a=iq3+Vo5OMp_!A-A-;+%I0gi07 zX#bams-uMV!-@ zc`HjVp2D~`wb2{q{QBG9^x~-LAkHSdRJ2Zfg}x58?0z-{Kg_(n`dv=RpY#QPqNk7t z?7GsLxxy)Ap0Ms2lgq!9L7)CCKK{*gr`k#`SXr3c&>l1WTzu+IT#S*Mn8Zs=3{Fbq zCeFOd-4_#o$|~+gdhSH#zx=A9mX=|90<(zwW&rytlOtE+O?=^_H~kGscF)luxn1rt zSwBoZJF#=_5?8UzXz|^A`AwY+7V~9Ry1hEPm<+2r%PV8aXW6)hUcg0BU z0yj;SYyA1w09ECjW7ltMYcp+|ZL{*;^xH{V#vj*lEFD*n^ZKW`4+=7Oq^GZ9#(Q8? zha1??NW5W+0WX+xG%`8%;kn683wKY9u}o;BqPufrv%I66prUPjJ)Xi3`sri+HR#3) zKH3a!{sWPH9f>zhfAjg2K2e^J%U6ww??)!e&%RY2EUxk8WNB}G zgJB`%DIIQKMoTg~I}<}O0M)velwsoSp$Tly6^H+YR1CwXlLn@lE|7Jx-A*DH>FvXbz%xW$-573kQkydI$7Qy|qv=UEjp zNl6PA9`zNA$6Yu+;84hLo1RS6V=KJ~PhhK}D;cjMan^Gc=3Z!>+qPivt93Gg} z@Ok+)D`YVkA+zmT1qL6v6A9jn1os*C845Tl6H6m~vw$I>dugP!rF33t&BD_5Qld6| zE8Mh&wT%_L-ZH6bS~7L%)F3uLa&K>3MeMz|>-ReMIt%Yc5NC=j-g*S~r17lG3%)Xs zWnSu0p1IEK^+3)ZZ^%Xzm5U?}OoqC$&{9aQ`d`K;QqqFS1Syhmx zK4hu86!-g`JfdMZ4(z(9uaVxoFwU9Q6mx%D4Xh28!YN$t9M?KxxsB$8RT4 zbxytwPg7BlL3^*O3P;un9r+!fiX9+{jPK+)G+GfA{ov476p+j3Is6RqO-FoHTT!bB z;0wfZ_ZSg(wr$*kwz^Dx{$|mBGWm_?@INkzBgma)^iv6mrHR=mu!cg9R&WQcu3TXj z{^d_O_56kZ$&$}5{O}dNa~VY|3kEKk>T>CMT=zEg|shjiw4{zC1&j+^cmC1v#jDl z7ZyhJzU&64Q7+GZ-QO`aWxS{LZE?&`tO9UxBVoofho)oT@Fqq*ie1zH}#xybZ3&cGlMOKl1y}eq9wM$ z2uWErg=kl9bG-maFQW7E^QZmlNq3vn<{q1;$E0ci zo0`wJoUg;Or{Xq8VAlAu9XNQUs&lyzt%3zhV@H@4klsxg@1tEd;7GC0VDVt*i!pE*86PS`X6m zojX$9QdJ&oEAiKaD$8rNdqBHvSs<`X&(g3b8_x?HIrg0;+v1x3&H`mrFDRrIe*9`_ zKcm4H|E)jlwOCo@P5u)4{5`Fax8H7^2!%w!QX?TiuNWE|Qw*yBJ5MeMwapHP>GAMV!~7+oVP?6IcZx&4ML0Jnz*gAu_7u|@2ty8< z_p4(Z4!uNJTFcYQYiRzeC@q$(gg}{E!&h=?$b$>lKcy@bt z=czBAgRw`}oqg-D^$2IDGv*_*$X(kSP>X|gBAvXPve@~CA}XM_7z`?v2z_d)-qz3@ zJnmq!%XN^bsX`*{Y}~iLS+=XqXNJF)Jrn62i>HOt$boqR5#lHEd49YY7I1{nre&`_;;^;@ zX)%|2Da^eBS&?4JFN%ELz9^Ha7YHGl!rio|c}eeL!=ANOv+-%#`S_99(TxFw%H}zE ztO}J@9H`()wT*mxREwknkSY;9CSxp>@ljqcH@eTw2L+&o3GWmP-Pz}^rQRyOE#-$ryZyY0Et z95PeUo8@7#w78zF)z&e^9&z71v5#XGNW|7s5}#j65St}jp>h8x>Y|YMEtuZ+!xB3G zvOq2|sQIMB0AZVl$TW&1dWC}5GZ|VwYt*=ZLttLKN*3eC=1psDM`#?ri_Z>d^pao| zU#9C7IHS5`)oQ8IiWsGOK0kFY(o$cKgkTs6>F5^Nhl5;h`CpAdD1_YZLXbd7-nJdF zSBlb>+6$)cHEMXc1cL~t*zsO?U`YHTR4FCDb=7oU&9QaO-vL>BvPKEaSQGz@x%I zBop$Kamf)Ib^7u7gC2c+9<|l)b!u0CWgHyQJ+~S#8?t7j2%0uLN%QdF$V2Va%5r z9g?=g9QcNo8=x~{zEpw6)U{^d8$eidG^cKCz~Fo1WpaIOW|Jq~6e>g}?y>#7X^c!S z;ZU!HQN_Z1vY%;{Ko1>N15@QJ+m$^CU~>JE0iHBzPupKhM~LJS2IXXXj7R?~N@{#J zA;$DoWB0i9R3eg`5FRwApr)TPk2ut` zIeD;2Rtr(`G#1h`y$8Orig6)x z>XmuuYV=yT#c&GQ9?9ay8=99L{v3Va$8qbpcY4jTa5%WiJ7bk)6%gzH2&pmS=R}>! z7(`4Kjhcg)K?LDxRCw58rm;k6bS$%r3D$sX7Ahc>N*tL~p$GJT7f2g^YA&yJ&Rl67 z>x;2je2}hMX_bo$mfjiP%5o_Ub64^n^OmN!lGJ-PeoywBIIEd=7> z-3D6Db!w+trVcp*L9ft55})b!;@NtB>rL6suBtnFUk(3tRn~iEY_P8FM_J5ds|&|h z+7wdUvd81K*m4gHRg_ucR#{i!k)r%e#E78?G+)=%JbeFm2c2tH2=1@2*kBE2s2d(i z8EDbHU{*!*LEO7jB+Gl8+E^jlL2D5w9Ln+sU9aCME->*%}!#`V*YjHoWZ={gnE%#)yPtYx@~KgG>Ni`(WH;KtvlC;dQtlP_wLHca}AY;8|MV}R*If4 zqJkoU)!$t`t9wBe#gIIInj!_)@Tk%>y3*X(va8B-AQW=GyR)plyrLir3|FNn7hG#; zzqV*j`>h*2^GPlFu748bb3ZUK5r!`?X(!NiRH@OaA{^XJw5EDoS-3FY8md$AD@qSE zGC*}TUE~xgbbc)r%P_IDWo{=)^ClD(FJQ>5&rfuoTe6bR2ul? z=s!sG6l@klns3MGReYU^^Q0}%wqMEiq-Nz^yg~a9=S_A0{PT#_KH~G)M@B4e_o&73 zl*N72>V~-ODpfZOt2#qS47Ui2wjnNzM$*3*^l^&S? zyhE$*1VMF2hX&GxHK0I^I>TC>__~kBDV0h&Wj?+{K`tmaP~d8H8vDDb+m1G!;W`0`ZY^BjYg4^Lf12@4>j$Homo`ps2tgMC~;#Q zjHnDkVo--#6c;uD#Ah_%-~kRD@#3!SIH<{55(L?@57a3%*4#o2OW*3sHUN^M5&X_M zc(B1@7rHQBa?PSfFX*e0tRZ2$!LO@wD{^SAG)XZNILF@AXAr{nag?AW9?kn^YT z-FJ1|UvWOxEjYSx1{Z_j_8Bz#Om^0_*R^o-=yTdnhUrP2pY#($h3WTc1=PP{xy@hpllyV9 z+zrXPW5MQEgYz|RumuD6eLY{0vxz47dCw05KJWfN0k8Rf?VTQAJFjx2*N|UW{syIYLNybkY>LKcAfJanEr-Due z-35wxo$S%^>H)JZap^zyaQl;LF_#6vk-s%=)1xQ`BhH*2`UrU7HUEDAtUz7RZAzTF zLG~;0NcvW0kU#1Wr)Jv$4`UZd^O