google / google/closure-compiler

Failure to type check object literals

Open
#1,502 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
7.7k
Forks
1.2k
Avg merge
2d 12h
Merged PRs (30d)
6

Description

Looks like object literals are not type checked. :(
The following code does not generate any warning -

``` js
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// @language ECMASCRIPT6_STRICT
// ==/ClosureCompiler==

var /** @type {Object} */ patterns =
{
PATTERN1: /expression.*/, // Expected to generate a warning, as a RegExp is not a number
PATTERN2: "hey" // Expected to generate a warning, as a string is not a number
};

var /** @type {Object} */ patterns1 =
{
PATTERN1: /expression.*/, // Fine
PATTERN2: "hey" // Expected to generate a warning, as a string is not a RegExp
};

var /** @const {Object} */ patterns2 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

var /** @const {Object} */ patterns3 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

const /** @type {Object} */ patterns4 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

const /** @type {Object} */ patterns5 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

const /** @const {Object} */ patterns6 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

const /** @const {Object} */ patterns7 =
{
PATTERN1: /expression.*/,
PATTERN2: "hey"
};

console.log(patterns, patterns1, patterns2, patterns3, patterns4, patterns5, patterns6, patterns7)
```

http://closure-compiler.appspot.com/home#code%3D%252F%252F%2520%253D%253DClosureCompiler%253D%253D%250A%252F%252F%2520%2540output_file_name%2520default.js%250A%252F%252F%2520%2540compilation_level%2520ADVANCED_OPTIMIZATIONS%250A%252F%252F%2520%2540language%2520ECMASCRIPT6_STRICT%250A%252F%252F%2520%253D%253D%252FClosureCompiler%253D%253D%250A%250Avar%2520%252F**%2520%2540type%2520%257BObject%253Cstring%252C%2520number%253E%257D%2520*%252F%2520patterns%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Avar%2520%252F**%2520%2540type%2520%257BObject%253Cstring%252C%2520RegExp%253E%257D%2520*%252F%2520patterns1%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Avar%2520%252F**%2520%2540const%2520%257BObject%253Cstring%252C%2520number%253E%257D%2520*%252F%2520patterns2%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Avar%2520%252F**%2520%2540const%2520%257BObject%253Cstring%252C%2520RegExp%253E%257D%2520*%252F%2520patterns3%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Aconst%2520%252F**%2520%2540type%2520%257BObject%253Cstring%252C%2520number%253E%257D%2520*%252F%2520patterns4%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Aconst%2520%252F**%2520%2540type%2520%257BObject%253Cstring%252C%2520RegExp%253E%257D%2520*%252F%2520patterns5%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Aconst%2520%252F**%2520%2540const%2520%257BObject%253Cstring%252C%2520number%253E%257D%2520*%252F%2520patterns6%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250Aconst%2520%252F**%2520%2540const%2520%257BObject%253Cstring%252C%2520RegExp%253E%257D%2520*%252F%2520patterns7%2520%253D%250A%2520%257B%250A%2520%2520PATTERN1%253A%2520%252Fexpression.*%252F%252C%250A%2520%2520PATTERN2%253A%2520%2522hey%2522%250A%2520%257D%253B%250A%250A%250Aconsole.log(patterns%252C%2520patterns1%252C%2520patterns2%252C%2520patterns3%252C%2520patterns4%252C%2520patterns5%252C%2520patterns6%252C%2520patterns7)

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.