Java Definite Assignments
Consider examples from: Definite Assignments from Java Language Specification
We ignore the question of making sure that final values are initialized
- focus on making sure that local variables are initialized before their first use
The specification gives a particular precision of data-flow analysis that a compiler must implement to correctly report uninitialized variables
JVM Bytecode verifier also checks for this condition, as well as types of local and stack variables
- if reading a slot before it is assigned, complains that the slot is unknown