Polonius学习笔记
写于2022年1月21日。
Polonius是一个推理引擎,基于MIR层输入的控制流图、变量信息、借用信息、生存期约束信息,推导出程序中是否有语句违反Rust对于借用的约定规则,以便编译器报告语法错误,并尽可能向用户提供有帮助的改进建议。
基本概念
Polonius的输入信息,通过「原子式(Atom)」与「输入事实(AllFacts)」两个概念来表达。原子式是输入信息的概念分类,而输入事实是一系列给定的真命题。
Polonius引擎则基于这些真命题,按照一系列的分析规则,推导出矛盾(即错误)信息,再返回给编译器以报告编译错误。(无矛盾信息生成时,视为借用检查通过,将不会产生编译错误。)