aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOlivier De Cannière <olivier.decanniere@qt.io>2025-06-20 16:10:26 +0200
committerOlivier De Cannière <olivier.decanniere@qt.io>2025-07-03 20:10:20 +0200
commit6436e871679722ba023a5f909a4d468d292c6181 (patch)
treecaaad06f7cd8325865c2b06408653e30c185e829 /src
parentfcd85f2018e4dc3a5c27a3be2282288e0c9de244 (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.cpp11
-rw-r--r--src/qmldom/qqmldomitem.cpp4
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);