Fix lookups of enums in singletons
authorSimon Hausmann <simon.hausmann@digia.com>
Thu, 2 Jan 2014 07:48:55 +0000 (08:48 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Thu, 2 Jan 2014 22:36:58 +0000 (23:36 +0100)
commiteb3087e4b0b770200512925730c328a8bda7f3d7
treef4511cfbf095be316d8a961a2242adcfa88f086f
parentc988a8e450c6aea6e9588e1517c5bab1acff2a62
Fix lookups of enums in singletons

This is a regression against 5.2.0 (which didn't have this bug), due to
optimizations introduced in the stable branch after the release. The code path
for optimizing access to the members of C++ based singletons through the
regular meta-object properties would end up excluding access to enums when the
lookup happens at run-time. The run-time getter for the singleton itself would
return a wrapped QObject instead of a QQmlTypeWrapper, and only the latter
includes enums.

As QML based singletons (composite singletons) cannot declare enums, we can
continue to do fast lookups on these, but otherwise have to fall back to the
slower code path.

Task-number: QTBUG-35721

Change-Id: Icc66bdaf3572622cdb718f82b706e3204afa0167
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
src/qml/compiler/qqmlcodegenerator.cpp
tests/auto/qml/qqmlecmascript/data/singletontype/singletonWithEnum.qml [new file with mode: 0644]
tests/auto/qml/qqmlecmascript/testtypes.cpp
tests/auto/qml/qqmlecmascript/testtypes.h
tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp