62QmlPropertyArguments::parse(
const QString &str,
const Location &loc, ParsingOptions opts)
64 Q_ASSERT(!str.isEmpty());
66 auto input{str.trimmed()};
67 QmlPropertyArguments args;
68 auto offset = input.indexOf(
' '_L1);
70 if ((opts & ParsingOptions::IgnoreType) == ParsingOptions::None) {
71 loc.warning(
"Missing property type for %1."_L1.arg(str));
75 args.m_type = input.first(offset);
76 if ((args.m_isList = args.m_type.startsWith(
"list<"_L1)))
77 args.m_type.slice(5).chop(1);
80 auto segments = input.slice(++offset).split(
"::"_L1);
81 if (segments.size() > 3 || (segments.size() == 1 &&
82 (opts & ParsingOptions::RequireQualifiedPath) != ParsingOptions::None)) {
83 loc.warning(
"Unrecognizable QML module/type qualifier for %1."_L1.arg(str));
86 args.m_name = segments.takeLast();
87 if (segments.size() > 0)
88 args.m_qmltype = segments.takeLast();
89 if (segments.size() > 0)
90 args.m_module = segments[0];
92 return std::optional(args);