diff --git a/ql/src/RedundantCode/Clones.qll b/ql/src/RedundantCode/Clones.qll index 48650674706..beccbb9d1ec 100644 --- a/ql/src/RedundantCode/Clones.qll +++ b/ql/src/RedundantCode/Clones.qll @@ -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 = "" } /** diff --git a/ql/test/query-tests/RedundantCode/RedundantExpr/tst.go b/ql/test/query-tests/RedundantCode/RedundantExpr/tst.go index 1b2f59c922c..e4106fb7bfa 100644 --- a/ql/test/query-tests/RedundantCode/RedundantExpr/tst.go +++ b/ql/test/query-tests/RedundantCode/RedundantExpr/tst.go @@ -24,5 +24,7 @@ func baz(b bool) int { } func main() { - foo(42) + if c == '\xA8' || c == '\xA9' { + foo(42) + } }