- Qt 6.12
- Qt Qml
- Qt Qml Tooling
- qmllint
- QML Lint Warning and Errors
- Literal constructor
- Qt 6.12.0 Reference Documentation

Invalid qmllint directives ◦ Missing enum entry

# Literal constructor

This warning category is spelled `[literal-constructors]` by qmllint.

## Do not use function as a constructor

### What happened?

A literal construction function was used as a constructor.

### Why is that bad?

Calling a literal construction function such as `Number` as a regular function coerces the passed value to a primitive number. However, calling `Number` as a constructor returns an object deriving from `Number` containing that value. This is wasteful and likely not the expected outcome. Moreover, it may lead to unexpected or confusing behavior because of the returned value not being primitive.

### Example

     import QtQuick

     Item {
         function numberify(x) {
             return new Number(x)
         }
         Component.onCompleted: {
             let n = numberify("1")
             console.log(typeof n)   // object
             console.log(n === 1)    // false

             if (new Boolean(false)) // All objects are truthy!
                 console.log("aaa")  // aa
         }
     }

To fix this warning, do not call these functions as constructors but as regular functions:

     import QtQuick

     Item {
         function numberify(x) {
             return Number(x)
         }
         Component.onCompleted: {
             let n = numberify("1")
             console.log(typeof n)   // number
             console.log(n === 1)    // true

             if (Boolean(false))
                 console.log("aaa")  // <not executed>
         }
     }

## Array has confusing semantics

### What happened?

An `Array` constructor was used with more than one argument.

### Why is that bad?

The `Array` constructor has confusing semantics:

- `new Array()` creates an empty array.
- `new Array(42)` creates an array with 42 elements.
- `new Array(42, 43)` creates an array with two elements, 42 and 43.

### Example

     import QtQuick

     Item {
         function createArray() {
             return new Array(1, 2, 3)
         }
     }

To fix this warning, use `[...]` instead of `new Array(...)`.

functions:

     import QtQuick

     Item {
         function createArray() {
             return [1, 2, 3]
         }
     }

Invalid qmllint directives ◦ Missing enum entry