blob: 624386d1e38ac1aec3b5e91488d54b17eabd1030 [file] [log] [blame]
This is a smoke test of dex conversion, which checks to see that uses
of a known-null in contexts that require a specific type end up getting
converted to the type in question. When executed, this sort of code
will inevitably throw a NullPointerException, but if the opcode weren't
correct, they would instead incorrectly fail verification.
If you inspect the expected output of this test, you will see that
there are some surprising instructions in there, such as using
aget-byte for what was a boolean[] in the source code. In these cases,
the resulting output is still correct (passes verification and will
throw a NullPointerException if ever executed). However, it happens
that during translation there simply wasn't enough information to
recover the "true" original meaning at the level of actual opcode
selection.
This test compares emitted code against a known-good (via eyeballing)
version, so it is possible for this test to spuriously fail if other
aspects of conversion end up altering the output in innocuous ways.