github / github/codeql

Java: `Assignment` does not include `UnaryAssignExpr`

Open
#6,446 1 comment 0 reactions 0 assignees View on GitHub
question
Dominant language
CodeQL
Stars
10.1k
Forks
2.1k
Avg merge
2d 15h
Merged PRs (30d)
141

Description

**Description of the issue**
`Assignment` [describes itself](https://codeql.github.com/codeql-standard-libraries/java/semmle/code/java/Expr.qll/type.Expr$Assignment.html) as:
> A common super-class that represents all varieties of assignments.

However, it does not actually include `UnaryAssignExpr`; for example the following cannot be compiled:
```ql
import java

from Assignment a
// Error: test is always false, as UnaryAssignExpr is incompatible with the expression type Assignment.
where a instanceof UnaryAssignExpr
select a
```

In case that is the intended behavior it would be good to clarify this in the `Assignment` documentation.
If not, then `Assignment` should probably include `UnaryAssignExpr` as well. `Assignment.getRhs()` cannot have a result in this case, so its documentation would have to be adjusted to describe this behavior.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.