├── .gitignore ├── .travis.yml ├── Cargo.toml ├── LICENSE ├── LICENSE-APACHE ├── LICENSE-MIT ├── README.md ├── bar.rs ├── baz.rs ├── examples ├── async_await.rs └── generator.rs ├── src ├── analysis │ ├── abs_domain.rs │ ├── dataflow │ │ ├── graphviz.rs │ │ ├── impls.rs │ │ └── mod.rs │ ├── elaborate_assignments.rs │ ├── gather_moves.rs │ └── mod.rs ├── build │ ├── block.rs │ ├── cfg.rs │ ├── desugar.rs │ ├── expr │ │ ├── as_constant.rs │ │ ├── as_lvalue.rs │ │ ├── as_operand.rs │ │ ├── as_rvalue.rs │ │ ├── as_temp.rs │ │ ├── category.rs │ │ ├── into.rs │ │ ├── mod.rs │ │ └── stmt.rs │ ├── into.rs │ ├── mac.rs │ ├── matches.rs │ ├── misc.rs │ ├── mod.rs │ ├── moved.rs │ ├── scope.rs │ ├── suspend.rs │ └── transition.rs ├── data_structures │ ├── bitslice.rs │ ├── bitvec.rs │ ├── indexed_set.rs │ ├── indexed_vec.rs │ ├── mod.rs │ └── tuple_slice.rs ├── graphviz.rs ├── lib.rs ├── macros.rs ├── mir │ ├── mod.rs │ └── visit.rs ├── pretty.rs ├── transform │ ├── dump_mir.rs │ ├── mod.rs │ ├── simplify.rs │ └── validate.rs ├── translate │ ├── block.rs │ ├── builder.rs │ ├── internal_state.rs │ ├── local_stack.rs │ ├── mod.rs │ ├── resume_state.rs │ ├── state.rs │ └── stmt.rs ├── traversal.rs └── ty.rs └── tests ├── compile-fail ├── cannot-leak-scope.rs ├── dont-delete-unreachable-statements.rs ├── forward-decl-type-err.rs └── move-error.rs ├── empty.rs ├── test.rs ├── test_compile_fail.rs └── test_generator.rs /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/.travis.yml -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/Cargo.toml -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/LICENSE -------------------------------------------------------------------------------- /LICENSE-APACHE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/LICENSE-APACHE -------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/LICENSE-MIT -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/README.md -------------------------------------------------------------------------------- /bar.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/bar.rs -------------------------------------------------------------------------------- /baz.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/baz.rs -------------------------------------------------------------------------------- /examples/async_await.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/examples/async_await.rs -------------------------------------------------------------------------------- /examples/generator.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/examples/generator.rs -------------------------------------------------------------------------------- /src/analysis/abs_domain.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/abs_domain.rs -------------------------------------------------------------------------------- /src/analysis/dataflow/graphviz.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/dataflow/graphviz.rs -------------------------------------------------------------------------------- /src/analysis/dataflow/impls.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/dataflow/impls.rs -------------------------------------------------------------------------------- /src/analysis/dataflow/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/dataflow/mod.rs -------------------------------------------------------------------------------- /src/analysis/elaborate_assignments.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/elaborate_assignments.rs -------------------------------------------------------------------------------- /src/analysis/gather_moves.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/gather_moves.rs -------------------------------------------------------------------------------- /src/analysis/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/analysis/mod.rs -------------------------------------------------------------------------------- /src/build/block.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/block.rs -------------------------------------------------------------------------------- /src/build/cfg.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/cfg.rs -------------------------------------------------------------------------------- /src/build/desugar.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/desugar.rs -------------------------------------------------------------------------------- /src/build/expr/as_constant.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/as_constant.rs -------------------------------------------------------------------------------- /src/build/expr/as_lvalue.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/as_lvalue.rs -------------------------------------------------------------------------------- /src/build/expr/as_operand.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/as_operand.rs -------------------------------------------------------------------------------- /src/build/expr/as_rvalue.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/as_rvalue.rs -------------------------------------------------------------------------------- /src/build/expr/as_temp.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/as_temp.rs -------------------------------------------------------------------------------- /src/build/expr/category.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/category.rs -------------------------------------------------------------------------------- /src/build/expr/into.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/into.rs -------------------------------------------------------------------------------- /src/build/expr/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/mod.rs -------------------------------------------------------------------------------- /src/build/expr/stmt.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/expr/stmt.rs -------------------------------------------------------------------------------- /src/build/into.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/into.rs -------------------------------------------------------------------------------- /src/build/mac.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/mac.rs -------------------------------------------------------------------------------- /src/build/matches.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/matches.rs -------------------------------------------------------------------------------- /src/build/misc.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/misc.rs -------------------------------------------------------------------------------- /src/build/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/mod.rs -------------------------------------------------------------------------------- /src/build/moved.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/moved.rs -------------------------------------------------------------------------------- /src/build/scope.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/scope.rs -------------------------------------------------------------------------------- /src/build/suspend.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/suspend.rs -------------------------------------------------------------------------------- /src/build/transition.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/build/transition.rs -------------------------------------------------------------------------------- /src/data_structures/bitslice.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/bitslice.rs -------------------------------------------------------------------------------- /src/data_structures/bitvec.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/bitvec.rs -------------------------------------------------------------------------------- /src/data_structures/indexed_set.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/indexed_set.rs -------------------------------------------------------------------------------- /src/data_structures/indexed_vec.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/indexed_vec.rs -------------------------------------------------------------------------------- /src/data_structures/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/mod.rs -------------------------------------------------------------------------------- /src/data_structures/tuple_slice.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/data_structures/tuple_slice.rs -------------------------------------------------------------------------------- /src/graphviz.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/graphviz.rs -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/lib.rs -------------------------------------------------------------------------------- /src/macros.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/macros.rs -------------------------------------------------------------------------------- /src/mir/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/mir/mod.rs -------------------------------------------------------------------------------- /src/mir/visit.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/mir/visit.rs -------------------------------------------------------------------------------- /src/pretty.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/pretty.rs -------------------------------------------------------------------------------- /src/transform/dump_mir.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/transform/dump_mir.rs -------------------------------------------------------------------------------- /src/transform/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/transform/mod.rs -------------------------------------------------------------------------------- /src/transform/simplify.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/transform/simplify.rs -------------------------------------------------------------------------------- /src/transform/validate.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/transform/validate.rs -------------------------------------------------------------------------------- /src/translate/block.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/block.rs -------------------------------------------------------------------------------- /src/translate/builder.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/builder.rs -------------------------------------------------------------------------------- /src/translate/internal_state.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/internal_state.rs -------------------------------------------------------------------------------- /src/translate/local_stack.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/local_stack.rs -------------------------------------------------------------------------------- /src/translate/mod.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/mod.rs -------------------------------------------------------------------------------- /src/translate/resume_state.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/resume_state.rs -------------------------------------------------------------------------------- /src/translate/state.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/state.rs -------------------------------------------------------------------------------- /src/translate/stmt.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/translate/stmt.rs -------------------------------------------------------------------------------- /src/traversal.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/traversal.rs -------------------------------------------------------------------------------- /src/ty.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/src/ty.rs -------------------------------------------------------------------------------- /tests/compile-fail/cannot-leak-scope.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/compile-fail/cannot-leak-scope.rs -------------------------------------------------------------------------------- /tests/compile-fail/dont-delete-unreachable-statements.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/compile-fail/dont-delete-unreachable-statements.rs -------------------------------------------------------------------------------- /tests/compile-fail/forward-decl-type-err.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/compile-fail/forward-decl-type-err.rs -------------------------------------------------------------------------------- /tests/compile-fail/move-error.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/compile-fail/move-error.rs -------------------------------------------------------------------------------- /tests/empty.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/empty.rs -------------------------------------------------------------------------------- /tests/test.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/test.rs -------------------------------------------------------------------------------- /tests/test_compile_fail.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/test_compile_fail.rs -------------------------------------------------------------------------------- /tests/test_generator.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/erickt/stateful/HEAD/tests/test_generator.rs --------------------------------------------------------------------------------