From 89c8021c5cd4a2c0bc03bcd58e022b1483eaf6eb Mon Sep 17 00:00:00 2001 From: Fawzi Mohamed Date: Tue, 29 Sep 2020 13:11:20 +0200 Subject: QmlJS: fix reformatting of required properties Fixes: QTCREATORBUG-24376 Change-Id: I9ebe66f881575ce8e58cee46d34c3ff8da55ef9c Reviewed-by: Ulf Hermann --- src/libs/qmljs/parser/qmljsast_p.h | 19 +++++++++++-------- src/libs/qmljs/qmljsreformatter.cpp | 2 ++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libs/qmljs/parser/qmljsast_p.h b/src/libs/qmljs/parser/qmljsast_p.h index 209a983c52..842812cf73 100644 --- a/src/libs/qmljs/parser/qmljsast_p.h +++ b/src/libs/qmljs/parser/qmljsast_p.h @@ -3325,14 +3325,17 @@ public: SourceLocation firstSourceLocation() const override { - if (defaultToken.isValid()) - return defaultToken; - else if (readonlyToken.isValid()) - return readonlyToken; - else if (requiredToken.isValid()) - return requiredToken; - - return propertyToken; + if (requiredToken.isValid()) { + if (defaultToken.isValid() && defaultToken.offset < requiredToken.offset) + return defaultToken; + return requiredToken; + } + if (defaultToken.isValid()) + return defaultToken; + if (readonlyToken.isValid()) + return readonlyToken; + + return propertyToken; } SourceLocation lastSourceLocation() const override diff --git a/src/libs/qmljs/qmljsreformatter.cpp b/src/libs/qmljs/qmljsreformatter.cpp index b71d777dae..b723f9ff7b 100644 --- a/src/libs/qmljs/qmljsreformatter.cpp +++ b/src/libs/qmljs/qmljsreformatter.cpp @@ -632,6 +632,8 @@ protected: bool visit(UiPublicMember *ast) override { if (ast->type == UiPublicMember::Property) { + if (ast->isRequired) + out("required ", ast->requiredToken); if (ast->isDefaultMember) out("default ", ast->defaultToken); else if (ast->isReadonlyMember) -- cgit v1.2.1