From 918f5a0e2d4ab966245f41a4c42af039f4fba998 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 10 Oct 2011 13:36:00 +0200 Subject: [PATCH] QmlJS: Fix bug in context property extraction. Skip forward declarations instead of giving up. Change-Id: Id3a30296a7cefc4ef255d03727557dee6a37c362 Reviewed-on: http://codereview.qt-project.org/6321 Reviewed-by: Leandro T. C. Melo Sanity-Review: Qt Sanity Bot --- src/plugins/qmljstools/qmljsfindexportedcpptypes.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmljstools/qmljsfindexportedcpptypes.cpp b/src/plugins/qmljstools/qmljsfindexportedcpptypes.cpp index b1f4acc2dc9..7b0550c011a 100644 --- a/src/plugins/qmljstools/qmljsfindexportedcpptypes.cpp +++ b/src/plugins/qmljstools/qmljsfindexportedcpptypes.cpp @@ -659,10 +659,13 @@ static void buildContextProperties( typeScope = scope; // incorrect but may be an ok fallback ClassOrNamespace *binding = typeOf.context().lookupType(namedType->name(), typeScope); if (binding && !binding->symbols().isEmpty()) { - Class *klass = binding->symbols().first()->asClass(); - if (klass) { - FakeMetaObject::Ptr fmo = buildFakeMetaObject(klass, fakeMetaObjects, typeOf); - typeName = fmo->className(); + // find the best 'Class' symbol + for (int i = binding->symbols().size() - 1; i >= 0; --i) { + if (Class *klass = binding->symbols().at(i)->asClass()) { + FakeMetaObject::Ptr fmo = buildFakeMetaObject(klass, fakeMetaObjects, typeOf); + typeName = fmo->className(); + break; + } } } }