aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/parser/qqmljsast_p.h
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2021-11-15 11:45:14 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2021-11-17 20:59:23 +0100
commitf9bddfa12d233d9ef01299869f4d491d62a0828e (patch)
tree1ffdf0e7a013e43d849bf26ce454af1fd2c93b01 /src/qml/parser/qqmljsast_p.h
parent2248ee16e0f143221803e644d2c4c5ac47a72d63 (diff)
Clean up property attributes (1/2)
Instead of directly accessing the attribute related members of UiPublicMember, we access them via a function. Moreover, we remove some redundancy: A property is readonly/default/required if and only if the corresponding token is valid. Thus we can drop the boolean members. Change-Id: I22f15b2b037e857d2f9d3167cb761cba9516a135 Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/parser/qqmljsast_p.h')
-rw-r--r--src/qml/parser/qqmljsast_p.h39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/qml/parser/qqmljsast_p.h b/src/qml/parser/qqmljsast_p.h
index ba646919dc..6e51a906bb 100644
--- a/src/qml/parser/qqmljsast_p.h
+++ b/src/qml/parser/qqmljsast_p.h
@@ -61,6 +61,10 @@
QT_BEGIN_NAMESPACE
+namespace QQmlJS {
+ class Parser;
+}
+
#define QQMLJS_DECLARE_AST_NODE(name) \
enum { K = Kind_##name };
@@ -3372,25 +3376,26 @@ public:
UiPublicMember(UiQualifiedId *memberType,
QStringView name)
- : type(Property), memberType(memberType), name(name), statement(nullptr), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr)
+ : type(Property), memberType(memberType), name(name), statement(nullptr), binding(nullptr), parameters(nullptr)
{ kind = K; }
UiPublicMember(UiQualifiedId *memberType,
QStringView name,
Statement *statement)
- : type(Property), memberType(memberType), name(name), statement(statement), binding(nullptr), isDefaultMember(false), isReadonlyMember(false), parameters(nullptr)
+ : type(Property), memberType(memberType), name(name), statement(statement), binding(nullptr), parameters(nullptr)
{ kind = K; }
void accept0(BaseVisitor *visitor) override;
SourceLocation firstSourceLocation() const override
{
- if (defaultToken.isValid())
- return defaultToken;
- else if (readonlyToken.isValid())
- return readonlyToken;
- else if (requiredToken.isValid())
- return requiredToken;
+ // ### FIXME: return the first(!) modifier token
+ if (defaultToken().isValid())
+ return defaultToken();
+ else if (readonlyToken().isValid())
+ return readonlyToken();
+ else if (requiredToken().isValid())
+ return requiredToken();
return propertyToken;
}
@@ -3405,6 +3410,13 @@ public:
return semicolonToken;
}
+ SourceLocation defaultToken() const { return m_defaultToken; }
+ bool isDefaultMember() const { return defaultToken().isValid(); }
+ SourceLocation requiredToken() const { return m_requiredToken; }
+ bool isRequired() const { return requiredToken().isValid(); }
+ SourceLocation readonlyToken() const { return m_readonlyToken; }
+ bool isReadonly() const { return readonlyToken().isValid(); }
+
// attributes
enum { Signal, Property } type;
QStringView typeModifier;
@@ -3412,20 +3424,19 @@ public:
QStringView name;
Statement *statement; // initialized with a JS expression
UiObjectMember *binding; // initialized with a QML object or array.
- bool isDefaultMember;
- bool isReadonlyMember;
- bool isRequired = false;
UiParameterList *parameters;
// TODO: merge source locations
- SourceLocation defaultToken;
- SourceLocation readonlyToken;
SourceLocation propertyToken;
- SourceLocation requiredToken;
SourceLocation typeModifierToken;
SourceLocation typeToken;
SourceLocation identifierToken;
SourceLocation colonToken;
SourceLocation semicolonToken;
+private:
+ friend class QQmlJS::Parser;
+ SourceLocation m_defaultToken;
+ SourceLocation m_readonlyToken;
+ SourceLocation m_requiredToken;
};
class QML_PARSER_EXPORT UiObjectDefinition: public UiObjectMember