Fix hash-consing of literals.

We shouldn't rely on the literal value given in the `literals` table, but use the exact value (where available) instead.
This commit is contained in:
Max Schaefer
2020-01-27 12:05:48 +00:00
parent d293388172
commit 3c1a68ee8f

View File

@@ -50,10 +50,16 @@ class HashableNode extends AstNode {
* Gets the value of this AST node, or the empty string if it does not have one.
*/
string getValue() {
literals(this, result, _)
or
not literals(this, _, _) and
result = ""
// for literals, get the exact value if available
if exists(this.(BasicLit).getExactValue())
then result = this.(BasicLit).getExactValue()
else
// for identifiers, get the name
if this instanceof Ident
then result = this.(Ident).getName()
else
// for everything else, give up
result = ""
}
/**