diff --git a/src/plugins/qmldesigner/designercore/designercoreutils/modelutils.cpp b/src/plugins/qmldesigner/designercore/designercoreutils/modelutils.cpp index db707a9c0f6..6111083ead4 100644 --- a/src/plugins/qmldesigner/designercore/designercoreutils/modelutils.cpp +++ b/src/plugins/qmldesigner/designercore/designercoreutils/modelutils.cpp @@ -15,6 +15,7 @@ #include #include +#include #include @@ -24,32 +25,110 @@ namespace { enum class ImportError { EmptyImportName, HasAlreadyImport, NoModule }; -constexpr std::u16string_view qmlKeywords[]{ - u"alias", u"as", u"break", u"case", u"catch", u"continue", u"debugger", u"default", - u"delete", u"do", u"else", u"finally", u"for", u"function", u"if", u"import", - u"in", u"instanceof", u"new", u"print", u"return", u"switch", u"this", u"throw", - u"try", u"typeof", u"var", u"void", u"while", u"with", -}; +template +constexpr auto toSortedArray(const Entries &...entries) +{ + std::array sortedArray = {entries...}; -constexpr std::u16string_view qmlDiscouragedIds[]{ - u"action", u"anchors", u"baseState", u"border", u"bottom", u"clip", - u"data", u"enabled", u"flow", u"focus", u"font", u"height", - u"id", u"item", u"layer", u"left", u"margin", u"opacity", - u"padding", u"parent", u"right", u"scale", u"shaderInfo", u"source", - u"sprite", u"spriteSequence", u"state", u"text", u"texture", u"time", - u"top", u"visible", u"width", u"x", u"y", u"z", -}; + std::sort(std::begin(sortedArray), std::end(sortedArray)); -constexpr std::u16string_view qmlBuiltinTypes[]{ - u"bool", u"color", u"date", u"double", u"enumeration", u"font", - u"int", u"list", u"matrix4x4", u"point", u"quaternion", u"real", - u"rect", u"size", u"string", u"url", u"var", u"variant", - u"vector", u"vector2d", u"vector3d", u"vector4d", -}; + return sortedArray; +} + +constexpr auto qmlKeywords = toSortedArray(u"alias", + u"as", + u"break", + u"case", + u"catch", + u"continue", + u"debugger", + u"default", + u"delete", + u"do", + u"else", + u"finally", + u"for", + u"function", + u"if", + u"import", + u"in", + u"instanceof", + u"new", + u"print", + u"return", + u"switch", + u"this", + u"throw", + u"try", + u"typeof", + u"var", + u"void", + u"while", + u"with"); + +constexpr auto qmlDiscouragedIds = toSortedArray(u"action", + u"anchors", + u"baseState", + u"border", + u"bottom", + u"clip", + u"data", + u"enabled", + u"flow", + u"focus", + u"font", + u"height", + u"id", + u"item", + u"layer", + u"left", + u"margin", + u"opacity", + u"padding", + u"parent", + u"right", + u"scale", + u"shaderInfo", + u"source", + u"sprite", + u"spriteSequence", + u"state", + u"text", + u"texture", + u"time", + u"top", + u"visible", + u"width", + u"x", + u"y", + u"z"); + +constexpr auto qmlBuiltinTypes = toSortedArray(u"bool", + u"color", + u"date", + u"double", + u"enumeration", + u"font", + u"int", + u"list", + u"matrix4x4", + u"point", + u"quaternion", + u"real", + u"rect", + u"size", + u"string", + u"url", + u"var", + u"variant", + u"vector", + u"vector2d", + u"vector3d", + u"vector4d"); constexpr auto createBannedQmlIds() { - std::array ids; + std::array ids; auto idsEnd = std::copy(std::begin(qmlKeywords), std::end(qmlKeywords), ids.begin()); idsEnd = std::copy(std::begin(qmlDiscouragedIds), std::end(qmlDiscouragedIds), idsEnd);