diff options
| author | Olivier De Cannière <olivier.decanniere@qt.io> | 2025-06-20 16:10:26 +0200 |
|---|---|---|
| committer | Olivier De Cannière <olivier.decanniere@qt.io> | 2025-07-03 20:10:20 +0200 |
| commit | 6436e871679722ba023a5f909a4d468d292c6181 (patch) | |
| tree | caaad06f7cd8325865c2b06408653e30c185e829 /src | |
| parent | fcd85f2018e4dc3a5c27a3be2282288e0c9de244 (diff) | |
Dom: Prefer writeRegion over write where possible in the OutWriter
As the name implies writeRegion takes the region into account. This
helps keep the comments in the right place. If we write the content of a
region manually, any comments that are associated with it may be left
behind and removed from the formatted code.
Additionally, use ensureSpace instead of baking the space into the
written string to avoid superfluous space insertions.
This change was not applied everywhere as we don't have region types
for every use case of write. They will either have to be added to cover
the remaining entries of be deemed out of scope. One such case is the
use of .pragma directive at the top of a JS file.
Task-number: QTBUG-133315
Task-number: QTBUG-123386
Pick-to: 6.8
Change-Id: I30e0b5ec354e46fdcef18b068618a0368555bd41
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Semih Yavuz <semih.yavuz@qt.io>
(cherry picked from commit bc6b4940a1da48ca1f82f9ccc9b9901a6c52bf56)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit a46ee0635a97b2d6ade74a07639a3b7cc3413065)
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmldom/qqmldomelements.cpp | 11 | ||||
| -rw-r--r-- | src/qmldom/qqmldomitem.cpp | 4 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/qmldom/qqmldomelements.cpp b/src/qmldom/qqmldomelements.cpp index 7682351384..5e2fdd78f6 100644 --- a/src/qmldom/qqmldomelements.cpp +++ b/src/qmldom/qqmldomelements.cpp @@ -353,7 +353,7 @@ void Import::writeOut(const DomItem &self, OutWriter &ow) const if (uri.isModule()) { QString vString = version.stringValue(); if (!vString.isEmpty()) - ow.ensureSpace().write(vString); + ow.ensureSpace().writeRegion(VersionRegion, vString); } if (!importId.isEmpty()) { ow.ensureSpace().writeRegion(AsTokenRegion).ensureSpace().writeRegion(IdNameRegion, @@ -842,7 +842,7 @@ void QmlObject::writeOutAttributes(const DomItem &self, OutWriter &ow, const Dom } el.second.writeOut(ow); if (b) { - ow.write(u":"); + ow.writeRegion(ColonTokenRegion); ow.ensureSpace(); if (const Binding *bPtr = b.as<Binding>()) bPtr->writeOutValue(b, ow); @@ -915,7 +915,7 @@ void QmlObject::writeOutSortedPropertyDefinition(const DomItem &self, OutWriter } pDef.writeOut(ow); if (b) { - ow.write(u":"); + ow.writeRegion(ColonTokenRegion); ow.ensureSpace(); if (const Binding *bPtr = b.as<Binding>()) bPtr->writeOutValue(b, ow); @@ -1295,7 +1295,8 @@ void Binding::writeOutValue(const DomItem &self, OutWriter &lw) const switch (valueKind()) { case BindingValueKind::Empty: qCWarning(writeOutLog()) << "Writing of empty binding " << name(); - lw.write(u"{}"); + lw.writeRegion(LeftBraceRegion); + lw.writeRegion(RightBraceRegion); break; case BindingValueKind::Array: if (const List *vPtr = v.as<List>()) { @@ -1904,7 +1905,7 @@ QString MethodInfo::preCode(const DomItem &self) const if (first) { first = false; } else { - ow.write(u","); + ow.writeRegion(CommaTokenRegion); ow.ensureSpace(); } ow.write(mp.value->code()); diff --git a/src/qmldom/qqmldomitem.cpp b/src/qmldom/qqmldomitem.cpp index 39cb91b4e5..8d9c3dc332 100644 --- a/src/qmldom/qqmldomitem.cpp +++ b/src/qmldom/qqmldomitem.cpp @@ -2774,7 +2774,7 @@ void List::writeOut(const DomItem &self, OutWriter &ow, bool compact) const if (first) first = false; else - ow.write(u", ", LineWriter::TextAddType::Extra); + ow.writeRegion(CommaTokenRegion).ensureSpace(); if (!compact) ow.ensureNewline(1); DomItem el = elF(); @@ -3537,7 +3537,7 @@ void ListPBase::writeOut(const DomItem &self, OutWriter &ow, bool compact) const if (first) first = false; else - ow.write(u", ", LineWriter::TextAddType::Extra); + ow.writeRegion(CommaTokenRegion).ensureSpace(); if (!compact) ow.ensureNewline(1); DomItem el = index(self, i); |
