google / google/closure-compiler

goog.isObject over two vars makes the compiler asume wrong things over properties

Open
#651 3 comments 0 reactions 0 assignees View on GitHub
OTI
Dominant language
JavaScript
Stars
7.7k
Forks
1.2k
Avg merge
2d 12h
Merged PRs (30d)
6

Description

``` javascript
/**
* @param {*} o1
* @param {*} o2
* @return {boolean}
*/
function deepEquals(o1, o2) {
if (goog.isObject(o1) && goog.isObject(o2)) {
if (o1.length != o2.length) {
return true;
}
}
return false;
}
```

With `--jscomp_error=checkTypes test.js closure-library/closure/goog/base.js` gives me:

``` javascript
test.js:8: ERROR - condition always evaluates to false
left : None
right: None
if (o1.length != o2.length) {
^

1 error(s), 0 warning(s), 93.0% typed
```

Which is not correct.

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.