Restricted type

This warning category is spelled [restricted-type] by qmllint.

You can't access an unscoped enum from here

What happened?

You accessed the value of an enum defined in C++ by its enum type name.

Why is this bad?

Unscoped enums defined in C++ can't be accessed by their enum type name. They will be undefined at runtime.

Example

 import QtQuick
 import SomeModule // contains MyClass

 Item {
     property int i: MyClass.Hello.World
 }

where MyClass is defined as

 class MyClass: public QObject
 {
     Q_OBJECT
     QML_ELEMENT

 public:
     enum Hello { World };
     Q_ENUM(Hello);
     ...

 };

To fix this warning, remove the unnecessary enum type name from its QML usage:

 import QtQuick

 Item {
     property int i: MyClass.World
 }

If you are the author of the enum, you can also modify the enum definition to use an enum class instead of changing the QML code:

 class MyClass: public QObject
 {
     Q_OBJECT
     QML_ELEMENT

 public:
     enum class Hello { World };
     Q_ENUM(Hello);
     ...
 };

Note: You can find more information about enum type registration here.