This reverts the changes we've made for language settings providers
so that I can start again with a cleaner approach.
Change-Id: Icddd5a465a8f217594af5b07011a56bf1dfdf014
Use IBuildConfiguration instead of ICConfigurationDescription.
Add adapters to convert back and forth between these. Create
IBuildConfiguration objects when configuration descriptors are
created.
Clean up formating of the code involved.
Change-Id: Iec5ca132dddbf990f116f96b4680ef5f7318e28b
From org.eclipse.cdt.debug.gdbjtag.core, constructor
GdbJtagDebugServicesFactory.GdbJtagDebugServicesFactory(String)
has been replaced by
GdbJtagDebugServicesFactory.GdbJtagDebugServicesFactory(String,
ILaunchConfiguration)
From org.eclipse.cdt.dsf.gdb, constructor
GdbDebugServicesFactory.GdbDebugServicesFactory(String)
has been replaced by
GdbDebugServicesFactory.GdbDebugServicesFactory(String,
ILaunchConfiguration)
From org.eclipse.cdt.dsf.gdb, class GdbDebugServicesFactoryNS has been
removed and its logic was merged into class GdbDebugServicesFactory
Change-Id: Ifecba752cfc12da62f1447027b11c0bb1f7c0171
Add support for gdb's "set substitute-path from to" by adding a new
service called GDBSourceLookup that uses GDB to perform the path
mapping.
The new GDBSourceLookup service uses the new GdbSourceLookupDirector to
get the set of paths that need mapping using GDB's "set
substitute-path" and the director resolves compilation path differently
so as to leave the GDB backend to handle the local path to compile path
resolution.
The MappingSourceContainer has been enhanced to allow a per mapping
container override of the new behaviour. This is a fallback as the
default behaviour when using GDB is to use "set substitute-path".
The MappingSourceContainerDialog exposes the new option in
MappingSourceContainer as a checkbox at the bottom of the path mapping
dialog in a backend agnostic way.
The new code is tested in methods called "sourceSubstitute*" and
mirror the same tests for the now non-backend handled version
which are "sourceMapping*". Note that
doMappingAndLaunch/doSubstituteAndLaunch have been updated to explicitly
check or uncheck the setIsMappingWithBackendEnabled setting
Change-Id: I122d7c597cd461d8e38c4f82522ccfdf9e51a5ba
Signed-off-by: Jonah Graham <jonah@kichwacoders.com>
The New Class Wizard asks scanner info for include paths for a project.
Need to decide whether that's a good thing or not but for now, add
support in the Qt config and GCC toolchain for it.
Change-Id: I5f037deb13db41fc0a083ea9fdc30ac1f61557e6
Clean up cases when Qt installs aren't registered for a given
config. Fix bug on first scanner info request in build config.
Clean up the Qt Run launch delegate in extension.
Also added a method to GDBLaunch to allow subclasses to override
what the default gdb path is.
Change-Id: Icf158633e1c1327cc87ce59c1605bb26258f8708
Qt builds now clear the scanner info cache so that it reloads.
Also added Environment tab for Qt Local launch so that you can
override the environment. Supported for 'run'.
Change-Id: Id6a04a564587411b6a5846f00045f79f5696bfb8
We reuse GDBLaunch but need to override some settings that are
normally in the launch configuration. These things are calculated
at launch time.
Note there is also an added dependency to the launch bar core
to make GDBLaunch a targeted launch so we can set the target properly.
At some point we'll move this launch target stuff lower down, maybe
to the debug platform.
Change-Id: Ibbf6b794a9ecf25b79d46093cc624ea69dc04641
The tern deps were in node_modules which is gitignored. Created a
Makefile to copy those deps to a new directory and we check that in.
Also removed some files that were used to get ANTLR which we aren't
using. And cleaned out the commented out reload button from the
plugin.xml.
Change-Id: I09a5ecb298bbdd9272f9b4a7540d525edb55c4fa
Make the build folder common for build configs. Makes things
consistent.
Also make it clear that we are caching scanner info with the
names of the API calls.
Change-Id: I1da0d90b3358065e28e437d0dfeea730e13c9aef
getTypeOrFunctionSet() is an unwieldy name, and since the return type
is IType, it seems reasonable to call the function getType().
Change-Id: I7e3211fdd3b474cc8e33da3e1f398b58122fe89d
Signed-off-by: Nathan Ridge <zeratul976@hotmail.com>
Added several classes that can be used to aggregate all of the
information from within a .qmltypes file as defined by
http://doc.qt.io/qt-5/qtqml-modules-qmldir.html#writing-a-qmltypes-file
Change-Id: Ia36c3bb1a4a0254c4125733d6faabbb5a4606133
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added the class QmlASTNodeHandler that creates and manages Proxy
instances of the QML AST node interfaces. The proxies are created
dynamically based on what methods are called on the interface. That
way, the AST is loaded as needed rather than all at once. Added a few
tests to verify behavior (however, they are not comprehensive; there are
a lot more cases that should be verified in the future).
Change-Id: I64038f9668942a67e1f1b7dceac6c7dbed2d46d7
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Created a set of Interfaces to represent the JavaScript and QML Ast in
plain Java. Updated acorn-qml to be able to parse the entirety of QML
syntax as specified by the QML grammar. Also modified the QML AST to
represent the added syntax and modified tern-qml to handle the new AST
elements.
Changed the way that the QMLAnalyzer handles path resolution. Paths are
now relative to the local file system.
Note: the normal acorn-qml parser cannot parse the full range of QML
syntax due to ambiguities. However, the loose parser can. We're still
waiting on Acorn to bring lookahead to the normal parser in order to
resolve this.
Change-Id: I77c820ad46301975b2a91969a656d428ad9409c1
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added the 'mode' option to acorn-qml that, when set to "qmltypes", will
allow it to parse the slightly different syntax that qmltypes files
have. Added a few tests to check this functionality.
Change-Id: Ica240c33ad9a153953f099845cdcb71e241c3a8d
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added a new parser that is able to construct an AST for a given qmldir
file. Added tests to ensure the parser works for standard qmldir files.
Change-Id: I292aace3cdec8b4a544033f80812df965fef50b8
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added two new query types to tern-qml: 'parseFile' and 'parseString'
which will return an AST for the given file or string respectively.
Change-Id: I4608866c002d43defb4d462c4a981282ed97e1c6
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Hooked up the extra logic needed to get Tern-QML's imports to work in
the QML File Editor.
Change-Id: I6fa222223ca8b6b177e4004e48f2f1863ab4d7b4
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added functionality to tern-qml that allows it to recognize directory
imports of the form: import "<directory>" [as <Qualifier>]. Content
assist and find definitions also work for these new imports. Moreover,
fixed the QML Scoping to be easier to handle in the future by defining
new Scope Objects specifically for QML. Finally, used JS Hint and
Beautify to have a more uniform coding style between all the files of
acorn-qml and tern-qml.
Also fixed up the HTML Demo to allow editing of multiple files to show
the new imports.
Change-Id: I2cdd18b1b8765400f6b24145f0677127a221fe10
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Fixed the following issues with QML:
-The parent scope of a QML Object is the file's root Object scope
-Content assist for an Object Property should only display the
immediate Object's properties, not it's parent(s)
-Content assist for an incomplete property binding should display
JavaScript hints as well
Added missing license headers and new tests. Had to modify the
acorn-qml parser plugin in order to make some of the changes. Added
tests for those as well.
Change-Id: I289167cbaacd8088f87dfafc689e67c0110d942f
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Moved new build system to it's own plug-ins. Cleaned up the root
build configuration and toolchain classes and use them for Qt local
run builds. Also hooks Qt local run launch delegate to launch target
manager and associated delegate interface.
Change-Id: I0c0f711ee53005edd399f6d24ba96658d606e1e5
Added a testing framework similar to acorn-qml's for tern-qml and began
adding tests. Updated acorn-qml and tern-qml to use acorn v2.6.4 which
includes the changes to acorn_loose that enable loose parser plugins.
Change-Id: Ib6af4b476321fde4b3f15aac8342764a45985dfa
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added the loose plugin to acorn-qml which is error-tolerant in its
parsing approach. Switched the main parser to automatically use strict
mode and to complain if the ECMA Script version is set to anything
higher than 5. This simplifies the parsing a little bit and keeps us in
sync with Qt which currently uses ECMA Script 5 in its JavaScript
runtime environment.
Updated the test framework to accommodate the loose parser and be less
'magic' in how it runs the tests. Added new tests to make sure the
loose parser is, in fact, error tolerant.
Change-Id: I670fc01853198d2261fbf9d8b017d225c4612182
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
The prototyping of a tern.js based QML parser and semantic analyzer
is working out well. We are proceeding with that for now and are
removing the ANTLR based QML parser we were thinking of to clean
things up.
Change-Id: I5b9894ade1904d017709542ef23d1f80c4886e45
Tern can now perform static analysis on the following QML constructs:
- QML Property Declarations
- QML Property Bindings
- QML Signals
- QML Signal Handlers
Added basic support for the 'id' property that can be assigned to any
QML Object. Fixed acorn-qml's member function parsing and added tests.
The 'demo' folder contains an html demo of the qml tern implementation
using codemirror as the editor.
Change-Id: I9e4d3837b194ff92a36a8d62bef288f61743e4ce
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Fixed the AST elements so that they more closely match the format used
by acorn (i.e. using 'id' instead of 'identifier' and 'name' instead of
'raw' for the identifier name). Resolved one of the ambiguities dealing
with using 'signal', 'property', and 'readonly' as identifiers for
properties and QML Objects. Added a bunch of new tests and fixed the
old ones to match the new AST.
Change-Id: I5a8bbd14b3e6f8531268740dd9e57cb48a0e22b3
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Moved the Tern.js work and acorn-qml into the Qt Core plugin rather than
in a separate plugin. Added walk.js in order to facilitate walking the
QML AST by acorn-qml. Changed a few things in index.js and inject.js
for acorn-qml in order to get it working in a browser environment.
Added a tern-qml webpage demo which doesn't do much for now.
Change-Id: I3c8a3d57c98a4936d0e038774b410bb2a68afb6c
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Acorn-qml can now parse a large subset of QML syntax. The only two
things left to do at this point are to allow QML Object Literals in
Property Bindings and to allow QML contextual keywords such as 'signal'
as property binding identifiers. Both of these require lookahead which
acorn does not ship with at the moment, so this may be a bit of an
undertaking. Also, added a whole bunch of tests to parse the new
syntax.
Change-Id: I0950fa29265c8337b5c9bfc0a1ec0c3ba8267426
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
The acorn parser is now able to parse QML import and pragma statements.
Change-Id: Iaeebaa21f8b013935f8cdf2c2a2ff511038e1069
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added a new plugin 'org.eclipse.cdt.qt.core.acorn' which houses the new
acorn-qml parser.
Change-Id: I7b456ecec97d44e10ca7e259523b5262c67c538d
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>
Added basic content assist for built-in qmake variables since there are
so many of them.
Added a bunch of new classes dealing with basic parsing and modification
of Qt Project Files. For now the parser is a simple regular expression
matcher that finds instances of variables. The modification class
supports preservation of indentation and comments that are tied to
variables in the project file.
Change-Id: I0539458d5c1cf29e6c9c1246e4e717e7cbec1b84
Signed-off-by: Matthew Bastien <mbastien@blackberry.com>