* Reworked phantom reference handling.
- Replaced IDecRefQueue with a new Z3ReferenceQueue class
- Z3ReferenceQueue manages custom subclasses of phantom references in a doubly-linked list
- Replaced all subclasses of IDecRefQueue with subclasses of Z3ReferenceQueue.Reference. These custom reference classes are embedded in the class they reference count.
- Context now owns a single Z3ReferenceQueue for all types of references.
* Made Statistics.Entry a static subclass
* Made Context.close idempotent (as recommended)
* Update CMakeLists.txt for building the Java API.
* Updated CMakeLists.txt again.
* Use correct SuppressWarning annotation to silence the compiler
* Formatting
* Generify, needs some testing and review
* Remove unnecessary change
* Whoops, ? capture that type
* Misread the docs, whoops
* More permissible arithmetic operations
* Implement believed Optimize generics
* Missed a few generics
* More permissible expr for arrays in parameters
* More permissible expr for bitvecs in parameters
* More permissible expr for bools in parameters
* More permissible expr for fps in parameters
* More permissible expr for fprms in parameters
* More permissible expr for ints in parameters
* More permissible expr for reals in parameters
* Undo breaking name conflict due to type erasure; see notes
* Whoops, fix typing of ReExpr
* Sort corrections for Re, Seq
* More permissible expr for regular expressions in parameters
* Fix name conflict between sequences and regular expressions; see notes
* Minor typo, big implications!
* Make Constructor consistent, associate captured types with other unknown capture types for datatype consistency
* More expressive; outputs of multiple datatype definitions are only known to be sort, not capture, and Constructor.of should make a capture
* Be less dumb and just type it a little differently
* Update examples, make sure to type Expr and FuncDecl sort returns
* General fixups
* Downgrade java version, make it only for the generic support, remove var and Expr[]::new construction
* Turns out Java 8 hadn't figured out how to do stream generics yet. Didn't even show up in my IDE, weird
A lot of existing code in Java bindings catches exceptions just to
silence them later.
This is:
a) Unnecessary: it is OK for a function to throw a RuntimeException
without declaring it.
b) Highly unidiomatic and not recommended by Java experts (see Effective
Java and others)
c) Confusing as has the potential to hide the existing bugs and have
them resurface at the most inconvenient/unexpected moment.