..in general, with tests, and when using a namespaced Qt.
Amends b09a48599e.
Change-Id: I99e275e10df5eed741d021911a360457f0d0d2e7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* parser side support for annotations, inline components, new UiVersion
and all the things included in QT 5.15 parser
* SourceLocation moved from QmlJS:AST to QmlJS
* Visitors now need to handle throwRecursionDepthError
* BaseVisitor for visitors that want to override all visit
Task-number: QTCREATORBUG-23591
Change-Id: I682a30d0b08b6c929739fd0e339ef6fbde3eb630
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
For ".pragma library" there is a special flag in QmlJS::Directives.
We just need to actually set the flag and query it when re-emitting the
code.
Change-Id: Ia3455fda18aba3219b02ecf092bb28987a6ccef5
Fixes: QTCREATORBUG-22326
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
After this change reformatter test (tests/auto/qml/reformatter/tst_reformatter)
starts to work correctly for singleton example (qmlsingleton.qml)
NOTE: Just cherry-picking change from master branch.
Change-Id: Ia0561aa8b920fc5c62a8dea93341721f37b68dd8
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
(cherry picked from commit 749eaaad81)
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Bugs fixed in this change:
1. Incorrect function arguments formatting:
function(a, b, c) -> function(abc)
2. Incorrect foreach loop formatting:
for (var a in b) -> for (a in b)
3. Incorrect for loop formatting:
for (var a = 1; a < 100; ++a) -> for(; a < 100; ++a)
Change-Id: I8afef6e5f2485a2225931b7ecb7210506e06dc6c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Update the qtcreator qmljs parser to the
one of Qt 5.12. It supports EcmaScript 7.
Task-number: QTCREATORBUG-20341
Change-Id: I0d1cff71402ba17e22cde6b46c65614e162280de
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reformatting multi-line comments caused, in some cases, the deletion
of the preceding line.
Task-number: QTCREATORBUG-21036
Change-Id: I9bf9627e5992e9821c0dd62a13601a3ca6367e65
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
The reformatter used to add unnecessary empty lines, notably before
comments after import declarations.
Task-number: QTCREATORBUG-18332
Change-Id: I96d6f2dd53d1197aa6bc0b834971a66861b2f498
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Fixes warning: prefer using 'override' or (rarely) 'final' instead of
'virtual' [modernize-use-override]
Change-Id: I17955fd0fdb052678228f1bda32cd8d3b4298998
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
The directives .pragma and .import are not included in the AST.
Their source code locations are not stored in any other place.
As a result, when reformatting the source, they simply disappear.
This patch keep track of their source code locations, so they are
not removed when reformatting the source code.
This patch contains also some modification in the lexer that should
probably be ported to the qtdeclarative version.
Task-number: QTCREATORBUG-13038
Change-Id: I5d568abf02d37a584d4d246939736aaec5af5053
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
The reformatter used to remove the quotes that wraps the property name
in object literals. This causes problem when the name is not a
valid identifier, resulting in that valid code become invalid after
reformatting.
This patch forces wrapping of property's name in quotes: in this way,
the reformatted code is consistent and it never get invalidated.
However the resulting formatted code is not consisted with the one
formatted by previous versions.
Task-number: QTCREATORBUG-17455
Change-Id: I1e361102819055de210d6c81020f204c08aaa253
Reviewed-by: Markus Maier <markus.maier.sw@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Do not add an empty line between common cases in a `switch` block,
according the best practices for javascript style.
Task-number: QTCREATORBUG-18515
Change-Id: I8b665eabb9b1d5b617d608e430e8b9137dc32032
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
The size of tabs and indentation used to be ignored when reformatting
a file.
Task-number: QTCREATORBUG-12849
Change-Id: I0b522b526a199c6397b78b5e193159ec52fc941a
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reformatting 'signal' preceded by comments used to bring to a bad
formatted file.
Task-number: QTCREATORBUG-17886
Change-Id: I02e093a4721cd1e75d45b498ea768251aee88ea4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Fix a reformatter bug that causes wrog indentation of multiline
comments.
Task-number: QTCREATORBUG-17426
Change-Id: I05493638dda0a353f5901fd95f06dc2e8e020237
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
This fixes a tack overflow caused by an exponential
number of combination tested.
We try to find the optimal solution for line breaks by brute force.
Unfortunately this leads to a stack overflow, if two many
line breaks are possible.
This patch limits the number of possible line break positions to 11.
If there are more possible line breaks we remove every second one.
This seems to be a reasonable enough heuristic and we deal with
a corner case anyway.
Task-number: QTCREATORBUG-17331
Change-Id: I1b80fc3eaa0e148aec30fc57ac75824181f2d883
Reviewed-by: Marco Benelli <marco.benelli@qt.io>
Let's not reformat readonly qualifiers away. They are likely there for a
reason.
Task-number: QTCREATORBUG-15745
Change-Id: Iaab7a8edb47fccd0cf36759750500a93be45bbc2
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Marco Benelli <marco.benelli@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
The commit b26920c3a3 introduced a bug
in reformatting properties lacking an object initializer.
Change-Id: I30f9c9c8a005660e7af4a6c97d0b1ff1be461548
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Less typing and less cycles than join(QString) where appropriate
Change-Id: I6ebc0e17e4d7fd9845864dd95b7de4ba4dad6906
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Found by ICC:
warning #177: function "<unnamed>::Rewriter::acceptIndented" was
declared but never referenced
Change-Id: I37892d021a4ca9886fd35fea00102d44fa99320f
Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
adds support for singleton and getter/setter properties
Change-Id: Ia6691ac7799a46885db0df44617617dcc3c13189
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
Ran script to remove inludes on a trial-and-error basis and
manually corrected it (Parser excluded).
Change-Id: I5ec6e1076430009bb72094411b2c3386f8bea548
Reviewed-by: Aurindam Jana <aurindam.jana@digia.com>
#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
Task-number: QTCREATORBUG-7931
I had to fix a bug in the QmlJsParser.
The source location for the
propertyTypeToken was not initialized in all cases.
I also updated qmljs.g.
Change-Id: Idd0880f70578867cf5f97666aede654e00cfc744
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Christian Kamm <kamm@incasoftware.de>