diff --git a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp index c1d6e277b0f12095c8d62d87c7ab2af0050d07a3..99638dcfcd9ac81de411d5e3884f376c529b293d 100644 --- a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp @@ -153,7 +153,11 @@ static inline bool isLiteralValue(UiScriptBinding *script) if (!script || !script->statement) return false; - return isLiteralValue((cast<ExpressionStatement *>(script->statement))->expression); + ExpressionStatement *exprStmt = cast<ExpressionStatement *>(script->statement); + if (exprStmt) + return isLiteralValue(exprStmt->expression); + else + return false; } static inline bool isValidPropertyForNode(const ModelNode &modelNode, @@ -434,6 +438,12 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, } } } else if (UiPublicMember *property = cast<UiPublicMember *>(member)) { + if (property->type == UiPublicMember::Signal) + continue; // QML designer doesn't support this yet. + + if (!property->name || !property->memberType) + continue; // better safe than sorry. + const QString astName = property->name->asString(); QString astValue; if (property->expression)