Java: PrimitiveType.getADefaultValue()
is misleading and might not work correctly
#6615
Labels
PrimitiveType.getADefaultValue()
is misleading and might not work correctly
#6615
There are several issues with
PrimitiveType.getADefaultValue()
:The documentation says:
This is misleading; unless the source actually contains literals with the default value, the predicate will have no result (except for some
BooleanLiteral
s which are found in the JDK code as part of annotations). For example for this Java code:the following query only finds
BooleanLiteral
s:The way it matches literals by using
getLiteral()
misses some cases wheregetValue()
would actually represent the default value (relates to Java: Replace incorrect usage ofLiteral.getLiteral()
#6612).Would it make sense to deprecate the predicate (for removal) and instead adjust the only query using it (
DeadStoreOfLocal.ql
)?It appears that query actually wants to find out if an assigned literal has a default value; so maybe it should be rewritten to explicitly test that. (Note that adding a predicate
Literal.hasDefaultValue()
might not make much sense because technically forStringLiteral
s typeString
the default value isnull
; andNullLiteral
has no type which could occur as field type.)The text was updated successfully, but these errors were encountered: