How meta/infer works
Infer is documented as a static analyzer for Java, C++, Objective-C, and C. The supplied tree exposes only parts of that product: annotation definitions and C++ AST-export tooling, alongside the Rust-to-LLBC Charon tool. Charon’s visible workflow is CLI invocation, Rustc-driver translation, AST transformation, then JSON serialization. The main Infer analysis engine is not present in the sampled files, so this graph describes only the evidenced components and does not infer links to that missing engine.
Main entry points: charon-driver/main.rs Rustc driver · mod.rs Transform passes · ASTExporter.h AST exporter · charon/main.rs Charon CLI
Components 15
Infer support
- Java annotations
infer/annotations/src/main/java/com/facebook/infer/annotation/Nullsafe.java
C++ AST export
- Clang plugin action
facebook-clang-plugins/libtooling/SimplePluginASTAction.h - AST exporter
facebook-clang-plugins/libtooling/ASTExporter.h - ATD writer
facebook-clang-plugins/libtooling/atdlib/ATDWriter.h
Charon translation
- Charon CLI
dependencies/charon/charon/src/bin/charon/main.rs - Rustc driver
dependencies/charon/charon/src/bin/charon-driver/main.rs - Rust translation
dependencies/charon/charon/src/bin/charon-driver/translate/translate_crate.rs
Charon IR processing
- LLBC AST
dependencies/charon/charon/src/ast/expressions.rs - AST visitor
dependencies/charon/charon/src/ast/visitor.rs - Transform passes
dependencies/charon/charon/src/transform/mod.rs - Transform context
dependencies/charon/charon/src/transform/ctx.rs - Associated types
dependencies/charon/charon/src/transform/expand_associated_types.rs - Control-flow recovery
dependencies/charon/charon/src/transform/ullbc_to_llbc.rs - JSON output
dependencies/charon/charon/src/export.rs
Other components
- Developer
Connections 10
- Developer → Charon CLI: invokes
dependencies/charon/charon/src/bin/charon/main.rs - Charon CLI → Rustc driver: wraps Rustc
dependencies/charon/charon/src/bin/charon/main.rs - Rustc driver → Rust translation: translates crate
dependencies/charon/charon/src/bin/charon-driver/main.rs - Rustc driver → Transform passes: runs passes
dependencies/charon/charon/src/bin/charon-driver/main.rs - Transform passes → Transform context: transforms through
dependencies/charon/charon/src/transform/mod.rs - Transform passes → Associated types: includes pass
dependencies/charon/charon/src/transform/mod.rs - Transform passes → Control-flow recovery: includes pass
dependencies/charon/charon/src/transform/mod.rs - Rustc driver → JSON output: serializes result
- Clang plugin action → AST exporter: runs exporter
facebook-clang-plugins/libtooling/ASTExporter.h - AST exporter → ATD writer: emits structure
facebook-clang-plugins/libtooling/ASTExporter.h