Skip to content

Commit 5d43c43

Browse files
authored
Merge pull request github#11504 from owen-mc/fix-small-error
Fix `mayHaveSideEffects` for `ReturnStmt`
2 parents 2c50014 + 4789431 commit 5d43c43

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
category: minorAnalysis
3+
---
4+
The definition of `mayHaveSideEffects` for `ReturnStmt` was incorrect when more
5+
than one expression was being returned. Such return statements were
6+
effectively considered to never have side effects. This has now been fixed.
7+
In rare circumstances `globalValueNumber` may have incorrectly treated two
8+
values as the same when they were in fact distinct.

go/ql/lib/semmle/go/Stmt.qll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -569,7 +569,7 @@ class ReturnStmt extends @returnstmt, Stmt {
569569
/** Gets the unique returned expression, if there is only one. */
570570
Expr getExpr() { getNumChild() = 1 and result = getExpr(0) }
571571

572-
override predicate mayHaveSideEffects() { getExpr().mayHaveSideEffects() }
572+
override predicate mayHaveSideEffects() { getAnExpr().mayHaveSideEffects() }
573573

574574
override string toString() { result = "return statement" }
575575

0 commit comments

Comments
 (0)