aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--QtVsTools.Package/QML/Parser/QmlParserInterop.cs1
-rw-r--r--QtVsTools.Package/QML/Syntax/QmlAst.cs14
-rw-r--r--QtVsTools.Package/QML/Syntax/QmlSyntax.cs235
-rw-r--r--VsQml/astvisitor.cpp5
-rw-r--r--VsQml/astvisitor.h1
-rw-r--r--VsQml/vsqml.cpp4
6 files changed, 138 insertions, 122 deletions
diff --git a/QtVsTools.Package/QML/Parser/QmlParserInterop.cs b/QtVsTools.Package/QML/Parser/QmlParserInterop.cs
index 901ef7b5..d8eb710e 100644
--- a/QtVsTools.Package/QML/Parser/QmlParserInterop.cs
+++ b/QtVsTools.Package/QML/Parser/QmlParserInterop.cs
@@ -340,7 +340,6 @@ namespace QtVsTools.Qml
UnmarshalNode(nodeData, node);
node.ImportToken = UnmarshalLocation(nodeData);
node.FileNameToken = UnmarshalLocation(nodeData);
- node.VersionToken = UnmarshalLocation(nodeData);
node.AsToken = UnmarshalLocation(nodeData);
node.ImportIdToken = UnmarshalLocation(nodeData);
node.SemicolonToken = UnmarshalLocation(nodeData);
diff --git a/QtVsTools.Package/QML/Syntax/QmlAst.cs b/QtVsTools.Package/QML/Syntax/QmlAst.cs
index 6e5482dc..61de275a 100644
--- a/QtVsTools.Package/QML/Syntax/QmlAst.cs
+++ b/QtVsTools.Package/QML/Syntax/QmlAst.cs
@@ -33,7 +33,7 @@ namespace QtVsTools.Qml.Syntax
{
public enum AstNodeKind
{
- #region Copied from qqmljsast_p.h
+ #region Copied from qqmljsast_p.h: enum Node::Kind
Undefined,
ArgumentList,
@@ -132,12 +132,15 @@ namespace QtVsTools.Qml.Syntax
PatternElementList,
PatternProperty,
PatternPropertyList,
-
+ Type,
+ TypeArgumentList,
+ TypeAnnotation,
UiArrayBinding,
UiImport,
UiObjectBinding,
UiObjectDefinition,
+ UiInlineComponent,
UiObjectInitializer,
UiObjectMemberList,
UiArrayMemberList,
@@ -150,7 +153,11 @@ namespace QtVsTools.Qml.Syntax
UiSourceElement,
UiHeaderItemList,
UiEnumDeclaration,
- UiEnumMemberList
+ UiEnumMemberList,
+ UiVersionSpecifier,
+ UiRequired,
+ UiAnnotation,
+ UiAnnotationList
#endregion
}
@@ -167,7 +174,6 @@ namespace QtVsTools.Qml.Syntax
public UiImport() : base(AstNodeKind.UiImport) { }
public SourceLocation ImportToken { get; set; }
public SourceLocation FileNameToken { get; set; }
- public SourceLocation VersionToken { get; set; }
public SourceLocation AsToken { get; set; }
public SourceLocation ImportIdToken { get; set; }
public SourceLocation SemicolonToken { get; set; }
diff --git a/QtVsTools.Package/QML/Syntax/QmlSyntax.cs b/QtVsTools.Package/QML/Syntax/QmlSyntax.cs
index 8d428c4f..42f34478 100644
--- a/QtVsTools.Package/QML/Syntax/QmlSyntax.cs
+++ b/QtVsTools.Package/QML/Syntax/QmlSyntax.cs
@@ -45,143 +45,151 @@ namespace QtVsTools.Qml.Syntax
/// </summary>
public enum TokenKind
{
- #region Copied from qqmljsgrammar_p.h
+ #region Copied from qqmljsgrammar_p.h: enum QQmlJSGrammar::VariousConstants
EOF_SYMBOL = 0,
- REDUCE_HERE = 125,
+ REDUCE_HERE = 131,
T_AND = 1,
T_AND_AND = 2,
T_AND_EQ = 3,
- T_ARROW = 93,
- T_AS = 110,
- T_AUTOMATIC_SEMICOLON = 62,
+ T_ARROW = 96,
+ T_AS = 116,
+ T_AT = 90,
+ T_AUTOMATIC_SEMICOLON = 64,
T_BREAK = 4,
T_CASE = 5,
T_CATCH = 6,
- T_CLASS = 98,
+ T_CLASS = 102,
T_COLON = 7,
T_COMMA = 8,
- T_COMMENT = 91,
- T_COMPATIBILITY_SEMICOLON = 92,
- T_CONST = 86,
+ T_COMMENT = 94,
+ T_COMPATIBILITY_SEMICOLON = 95,
+ T_COMPONENT = 108,
+ T_CONST = 88,
T_CONTINUE = 9,
- T_DEBUGGER = 88,
+ T_DEBUGGER = 91,
T_DEFAULT = 10,
T_DELETE = 11,
T_DIVIDE_ = 12,
T_DIVIDE_EQ = 13,
T_DO = 14,
T_DOT = 15,
- T_ELLIPSIS = 95,
+ T_ELLIPSIS = 99,
T_ELSE = 16,
- T_ENUM = 94,
+ T_ENUM = 98,
T_EQ = 17,
T_EQ_EQ = 18,
T_EQ_EQ_EQ = 19,
- T_ERROR = 114,
- T_EXPORT = 101,
- T_EXTENDS = 99,
- T_FALSE = 85,
- T_FEED_JS_EXPRESSION = 118,
- T_FEED_JS_MODULE = 120,
- T_FEED_JS_SCRIPT = 119,
- T_FEED_JS_STATEMENT = 117,
- T_FEED_UI_OBJECT_MEMBER = 116,
- T_FEED_UI_PROGRAM = 115,
+ T_ERROR = 120,
+ T_EXPORT = 105,
+ T_EXTENDS = 103,
+ T_FALSE = 87,
+ T_FEED_JS_EXPRESSION = 124,
+ T_FEED_JS_MODULE = 126,
+ T_FEED_JS_SCRIPT = 125,
+ T_FEED_JS_STATEMENT = 123,
+ T_FEED_UI_OBJECT_MEMBER = 122,
+ T_FEED_UI_PROGRAM = 121,
T_FINALLY = 20,
T_FOR = 21,
- T_FORCE_BLOCK = 122,
- T_FORCE_DECLARATION = 121,
- T_FOR_LOOKAHEAD_OK = 123,
- T_FROM = 102,
- T_FUNCTION = 22,
- T_GE = 23,
- T_GET = 112,
- T_GT = 24,
- T_GT_GT = 25,
- T_GT_GT_EQ = 26,
- T_GT_GT_GT = 27,
- T_GT_GT_GT_EQ = 28,
- T_IDENTIFIER = 29,
- T_IF = 30,
- T_IMPORT = 108,
- T_IN = 31,
- T_INSTANCEOF = 32,
- T_LBRACE = 33,
- T_LBRACKET = 34,
- T_LE = 35,
- T_LET = 87,
- T_LPAREN = 36,
- T_LT = 37,
- T_LT_LT = 38,
- T_LT_LT_EQ = 39,
- T_MINUS = 40,
- T_MINUS_EQ = 41,
- T_MINUS_MINUS = 42,
- T_MULTILINE_STRING_LITERAL = 90,
- T_NEW = 43,
- T_NOT = 44,
- T_NOT_EQ = 45,
- T_NOT_EQ_EQ = 46,
- T_NO_SUBSTITUTION_TEMPLATE = 103,
- T_NULL = 83,
- T_NUMERIC_LITERAL = 47,
- T_OF = 111,
- T_ON = 124,
- T_OR = 48,
- T_OR_EQ = 49,
- T_OR_OR = 50,
- T_PLUS = 51,
- T_PLUS_EQ = 52,
- T_PLUS_PLUS = 53,
- T_PRAGMA = 109,
- T_PROPERTY = 68,
- T_PUBLIC = 107,
- T_QUESTION = 54,
- T_RBRACE = 55,
- T_RBRACKET = 56,
- T_READONLY = 70,
- T_REMAINDER = 57,
- T_REMAINDER_EQ = 58,
- T_RESERVED_WORD = 89,
- T_RETURN = 59,
- T_RPAREN = 60,
- T_SEMICOLON = 61,
- T_SET = 113,
- T_SIGNAL = 69,
- T_STAR = 63,
- T_STAR_EQ = 66,
- T_STAR_STAR = 64,
- T_STAR_STAR_EQ = 65,
- T_STATIC = 100,
- T_STRING_LITERAL = 67,
- T_SUPER = 97,
- T_SWITCH = 71,
- T_TEMPLATE_HEAD = 104,
- T_TEMPLATE_MIDDLE = 105,
- T_TEMPLATE_TAIL = 106,
- T_THIS = 72,
- T_THROW = 73,
- T_TILDE = 74,
- T_TRUE = 84,
- T_TRY = 75,
- T_TYPEOF = 76,
- T_VAR = 77,
- T_VOID = 78,
- T_WHILE = 79,
- T_WITH = 80,
- T_XOR = 81,
- T_XOR_EQ = 82,
- T_YIELD = 96,
+ T_FORCE_BLOCK = 128,
+ T_FORCE_DECLARATION = 127,
+ T_FOR_LOOKAHEAD_OK = 129,
+ T_FROM = 106,
+ T_FUNCTION = 23,
+ T_FUNCTION_STAR = 22,
+ T_GE = 24,
+ T_GET = 118,
+ T_GT = 25,
+ T_GT_GT = 26,
+ T_GT_GT_EQ = 27,
+ T_GT_GT_GT = 28,
+ T_GT_GT_GT_EQ = 29,
+ T_IDENTIFIER = 30,
+ T_IF = 31,
+ T_IMPORT = 114,
+ T_IN = 32,
+ T_INSTANCEOF = 33,
+ T_LBRACE = 34,
+ T_LBRACKET = 35,
+ T_LE = 36,
+ T_LET = 89,
+ T_LPAREN = 37,
+ T_LT = 38,
+ T_LT_LT = 39,
+ T_LT_LT_EQ = 40,
+ T_MINUS = 41,
+ T_MINUS_EQ = 42,
+ T_MINUS_MINUS = 43,
+ T_MULTILINE_STRING_LITERAL = 93,
+ T_NEW = 44,
+ T_NOT = 45,
+ T_NOT_EQ = 46,
+ T_NOT_EQ_EQ = 47,
+ T_NO_SUBSTITUTION_TEMPLATE = 109,
+ T_NULL = 85,
+ T_NUMERIC_LITERAL = 48,
+ T_OF = 117,
+ T_ON = 130,
+ T_OR = 49,
+ T_OR_EQ = 51,
+ T_OR_OR = 52,
+ T_PLUS = 53,
+ T_PLUS_EQ = 54,
+ T_PLUS_PLUS = 55,
+ T_PRAGMA = 115,
+ T_PROPERTY = 70,
+ T_PUBLIC = 113,
+ T_QUESTION = 56,
+ T_QUESTION_QUESTION = 97,
+ T_RBRACE = 57,
+ T_RBRACKET = 58,
+ T_READONLY = 72,
+ T_REMAINDER = 59,
+ T_REMAINDER_EQ = 60,
+ T_REQUIRED = 107,
+ T_RESERVED_WORD = 92,
+ T_RETURN = 61,
+ T_RPAREN = 62,
+ T_SEMICOLON = 63,
+ T_SET = 119,
+ T_SIGNAL = 71,
+ T_STAR = 65,
+ T_STAR_EQ = 68,
+ T_STAR_STAR = 66,
+ T_STAR_STAR_EQ = 67,
+ T_STATIC = 104,
+ T_STRING_LITERAL = 69,
+ T_SUPER = 101,
+ T_SWITCH = 73,
+ T_TEMPLATE_HEAD = 110,
+ T_TEMPLATE_MIDDLE = 111,
+ T_TEMPLATE_TAIL = 112,
+ T_THEN = 132,
+ T_THIS = 74,
+ T_THROW = 75,
+ T_TILDE = 76,
+ T_TRUE = 86,
+ T_TRY = 77,
+ T_TYPEOF = 78,
+ T_VAR = 79,
+ T_VERSION_NUMBER = 50,
+ T_VOID = 80,
+ T_WHILE = 81,
+ T_WITH = 82,
+ T_WITHOUTAS = 133,
+ T_XOR = 83,
+ T_XOR_EQ = 84,
+ T_YIELD = 100,
- ACCEPT_STATE = 1008,
- RULE_COUNT = 586,
- STATE_COUNT = 1009,
- TERMINAL_COUNT = 126,
- NON_TERMINAL_COUNT = 213,
+ ACCEPT_STATE = 1098,
+ RULE_COUNT = 616,
+ STATE_COUNT = 1099,
+ TERMINAL_COUNT = 134,
+ NON_TERMINAL_COUNT = 238,
- GOTO_INDEX_OFFSET = 1009,
- GOTO_INFO_OFFSET = 6012,
- GOTO_CHECK_OFFSET = 6012
+ GOTO_INDEX_OFFSET = 1099,
+ GOTO_INFO_OFFSET = 7238,
+ GOTO_CHECK_OFFSET = 7238
#endregion
}
@@ -236,6 +244,7 @@ namespace QtVsTools.Qml.Syntax
case TokenKind.T_PROPERTY:
case TokenKind.T_PUBLIC:
case TokenKind.T_READONLY:
+ case TokenKind.T_REQUIRED:
case TokenKind.T_RESERVED_WORD:
case TokenKind.T_RETURN:
case TokenKind.T_SET:
diff --git a/VsQml/astvisitor.cpp b/VsQml/astvisitor.cpp
index 3bb9321a..71cc5f4a 100644
--- a/VsQml/astvisitor.cpp
+++ b/VsQml/astvisitor.cpp
@@ -27,6 +27,7 @@
****************************************************************************/
#include "astvisitor.h"
+using namespace QQmlJS;
using namespace QQmlJS::AST;
class AstVisitorPrivate : public QQmlJS::AST::Visitor
@@ -91,7 +92,6 @@ private:
marshalNode(nodeData, node);
marshalLocation(nodeData, node->importToken);
marshalLocation(nodeData, node->fileNameToken);
- marshalLocation(nodeData, node->versionToken);
marshalLocation(nodeData, node->asToken);
marshalLocation(nodeData, node->importIdToken);
marshalLocation(nodeData, node->semicolonToken);
@@ -229,8 +229,9 @@ public:
callbackFiltered[nodeKindFilter] = visitCallback;
}
- // Copied from qqmljsastvisitor_p.h
+ // Copied from qqmljsastvisitor_p.h: class QQmlJS::AST::Visitor
+ // Ui
virtual bool visit(UiProgram *node) { return visitCallback(node, true); }
virtual bool visit(UiHeaderItemList *node) { return visitCallback(node, true); }
virtual bool visit(UiPragma *node) { return visitCallback(node, true); }
diff --git a/VsQml/astvisitor.h b/VsQml/astvisitor.h
index 2c29f819..2e4257d3 100644
--- a/VsQml/astvisitor.h
+++ b/VsQml/astvisitor.h
@@ -31,6 +31,7 @@
#include <QtQml/private/qqmljslexer_p.h>
#include <QtQml/private/qqmljsparser_p.h>
+#include <QtQml/private/qqmljssourcelocation_p.h>
class AstVisitorPrivate;
diff --git a/VsQml/vsqml.cpp b/VsQml/vsqml.cpp
index 0d58ec03..1434ea23 100644
--- a/VsQml/vsqml.cpp
+++ b/VsQml/vsqml.cpp
@@ -148,8 +148,8 @@ bool qmlParse(
if (diagnosticMessages && diagnosticMessagesLength) {
QVector<int> diagValues;
- for (auto diag : s->parser->diagnosticMessages()) {
- diagValues.append(diag.kind);
+ for (auto &diag : s->parser->diagnosticMessages()) {
+ diagValues.append(diag.type >= QtCriticalMsg ? 1 : 0);
diagValues.append(diag.loc.offset);
diagValues.append(diag.loc.length);
}