Fix parsing of QML version tokens in the presence of "as Foo"

The previous code would omit the minor version, leading to a test
failure.

Change-Id: I3dccee5252a54806f8e1e5bf5c49eff149d9b936
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Ulf Hermann
2019-10-10 11:05:40 +02:00
parent 0097ffc41a
commit 4d7c644268
2 changed files with 14 additions and 4 deletions

View File

@@ -863,8 +863,13 @@ UiImport: UiImportHead UiVersionSpecifier Semicolon;
UiImport: UiImportHead UiVersionSpecifier T_AS QmlIdentifier Semicolon; UiImport: UiImportHead UiVersionSpecifier T_AS QmlIdentifier Semicolon;
/. /.
case $rule_number: { case $rule_number: {
sym(1).UiImport->versionToken = loc(2); auto versionToken = loc(2);
sym(1).UiImport->version = sym(2).UiVersionSpecifier; auto version = sym(2).UiVersionSpecifier;
sym(1).UiImport->version = version;
if (version->minorToken.isValid()) {
versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
}
sym(1).UiImport->versionToken = versionToken;
sym(1).UiImport->asToken = loc(3); sym(1).UiImport->asToken = loc(3);
sym(1).UiImport->importIdToken = loc(4); sym(1).UiImport->importIdToken = loc(4);
sym(1).UiImport->importId = stringRef(4); sym(1).UiImport->importId = stringRef(4);

View File

@@ -398,8 +398,13 @@ bool Parser::parse(int startToken)
#line 866 "qmljs.g" #line 866 "qmljs.g"
case 22: { case 22: {
sym(1).UiImport->versionToken = loc(2); auto versionToken = loc(2);
sym(1).UiImport->version = sym(2).UiVersionSpecifier; auto version = sym(2).UiVersionSpecifier;
sym(1).UiImport->version = version;
if (version->minorToken.isValid()) {
versionToken.length += version->minorToken.length + (version->minorToken.offset - versionToken.offset - versionToken.length);
}
sym(1).UiImport->versionToken = versionToken;
sym(1).UiImport->asToken = loc(3); sym(1).UiImport->asToken = loc(3);
sym(1).UiImport->importIdToken = loc(4); sym(1).UiImport->importIdToken = loc(4);
sym(1).UiImport->importId = stringRef(4); sym(1).UiImport->importId = stringRef(4);