Skip to content

Commit

Permalink
Redoing namespace (#13)
Browse files Browse the repository at this point in the history
* init bubbletea interface

* init state charts

* first grammar for state charts

* nothing like truly f-ing up your branches...

* state charts support in parser

* lol jk! tweaking the grammar of state charts to make more sense

* rough implementation of state charts to llvm. Lots of cleanup needed

* prototype ir for builtins plus minor adjustments to AST

* a little bit of cleanup and getting rid of the loop on struct property order

* updating README

* fixing tests (oops forgot to run all of them)

* fixing some small bugs including returns on after blocks

* Working through some issues with imports and namespaces

* solving the namespace issues in the worst possible way. Need to clean up and refactor this ... to be decided laster

* init preprocessor to flatten spec structure (and resolve the namespace hell)

* weird bug in initializing run instances ... not sure how anything worked for so long. Preprocessing ready to engage with the rest of the compiler

* testing preprocessing with type checker

* halfway through compiler rewrite

* rewrite complete, time to watch all the tests break horrifically

* removing a lot of unnecessary code from the type checker and moving it onto the preprocessor, plus some misc bug fixes found when testing

* preprocessing wasn't updating inner variables

* fixing some bugs in the type checker

* revisions around constants (finally disallowing expressions) tests still failing but need to backup remote :)

* getting rid of flaky tests by sorting parameters alphabetically

* updating some tests to fit new outcomes

* added some better testing and cleaning up error handling. Mutant survival rate still too high

* killing more mutants

* updating go version

* Update smt_integration_test.go

* updating changelog
  • Loading branch information
mbellotti committed Nov 2, 2022
1 parent 7e5c8a8 commit 40a6751
Show file tree
Hide file tree
Showing 44 changed files with 8,856 additions and 4,157 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
test:
working_directory: ~/Fault
docker:
- image: cimg/go:1.17.5
- image: cimg/go:1.19.2
steps:
- run:
name: Install LLVM
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# temp files
fault.Dockerfile
.vscode
__debug_bin

# Test binary, built with `go test -c`
*.test
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,10 @@ There are A LOT of assumptions there, so the pre-alpha development of Fault prio

But then that's part of the fun too. Developing Fault is an opportunity to learn more about how SMT solvers (specifically Z3) work.

### Current Status (9/28/2022)
### Current Status (11/2/2022)
While working on adding state chart support I finally hit the limit on what the half-assed namespace implementation I started with could support. So I ended up spending the entire month of October writing a preprocesser that annotated the AST with the proper ids for each nameable node, then integrating it into a compiler. It took a long time but the code in the LLVM compilation stage is so much cleaner and neater now. Along the way found some previously unknown bugs and added some more tests to bone up mutation scores (will need more of this later)

#### (9/28/2022)
Adding state chart support to the parser and LLVM compiler, plus implementing logic around "this", cleaning up some dead code, plus some minor adjustments here and there.

#### (8/05/2022)
Expand Down

0 comments on commit 40a6751

Please sign in to comment.