Previously, the decl-specifier was used as the key, but a decl-specifier
can be shared by multiple declarators, so seeing the same decl-specifier
against doesn't necessarily mean we have infinite recursion.
Change-Id: I165088c5379d412d1c31f2655c20a02629fbe596
CModelListener.addLastRecentlyUsed (thrown in
LinkedHashMap$LinkedHashIterator.nextNode)
CModelListener reacts on all the resource events, but is NOT MT-safe due
the not guarded access to the "fLRUs" map, which can be iterated AND
modified at same time by different threads.
This commit introduces synchronization on the "fLRUs" map field. This is
safe as the field is private and not exposed to other objects, and the
code inside synchronized block does not call into other locks which
might interfere.
Change-Id: I3e601f02e93e40a1454c9a581fa46378904eb3dc
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
This ensures that if the target type of an alias template changes,
the target type is updated in the index during an incremental index
update, without requiring a full index rebuild.
Change-Id: I8800e3c1701409276f8db64000499a5fa9caf6a9
Fixed by getting rid of legacy code for opening a master pty, and
copying the related code from org.eclipse.cdt.core.linux instead.
Only getpt() had to be replaced by posix_openpt(). Compiled on
OSX 10.12 - tested on MacOSX 10.8 and 10.13 beta 7 (64-bit each).
Change-Id: Idade001aed41abafc0d500695a4b51179bb9b738
Signed-off-by: Martin Oberhuber <mober.at+eclipse@gmail.com>
Fixed by copying code from org.eclipse.cdt.core.linux that
contains the fix from bug 119387 : set the process group by
calling setpgid() when forking a process, and use killpg() for
killing the entire process group on termination.
This also aligns MacOS code fully with Linux code. Tested on
MacOSX 10.8 and 10.13 beta. Binaries will be submitted with the
related fix for bug 519886.
Change-Id: I87df87caa88cff60b4d9eee2252252234d1a4f84
Signed-off-by: Martin Oberhuber <mober.at+eclipse@gmail.com>
- Have resolveUnknownBinding() run the full "resolve unknown type"
logic if the binding is a type.
- Handle EvalTypeId
Change-Id: I97946453755ddcf6f382195ddb9fc7dcb2672b68
CSourceHover did not know how to handle UnknowMemberClasses
Change-Id: I4ef6a4ad794e670c4d5e9ccc9cea204f8d273f2a
Signed-off-by: Michael Woski <woskimi@yahoo.de>
As ArrayContentProvider is stateless, re-using the global instance
avoids a few allocations.
Change-Id: Ia378195c2c90e35badcf6e2c1938a93877a442e6
Signed-off-by: Andreas Sewe <andreas.sewe@codetrails.com>
When creating the settings.xml, avoid writing to the file unless
the contents have actually changed. This avoids a resource delta
that caused unneeded rebuilds.
Change-Id: I83cea84e96d006f99a1c264f283d4bba4ad68784
This resolves a significant UI performance regression so
now line numbers don't need to be recalculated for areas
where they are already known.
Change-Id: I4668d620cde24b7cd8c6a22e9c022eaf5b237ff2
Adds in Core Build support for the MSVC toolchain. Fixes issue
with PATH in the core build configuration since on Windows it's often
Path.
Change-Id: I3eb201bc22bf42341207e8f3bbef999d4d174f05
(cherry picked from commit 7f3745c765)
- Change parser to include virtual specifier in function declarator
location
- Change DeclaratorWriter to write all virtual specifiers in their
initial order
Change-Id: Iff381394b834146c1b63877bc9eb84517d31e078
This allows querying alias template instances for their arguments (for
e.g. instantiating dependent arguments later).
Change-Id: I7cc3dfcef75fe0faf104dc7bfe11e2acd90a4748
We previously modelled alias template specializations as alias template
instances, which was conceptually incorrect and problematic for a number
of reasons.
Change-Id: Ibca8b87bb3d54cd3ae312254a02e8522e446331d
Besides the UX advantages of typedef preservation (such as refactorings
preserving typedefs), it's important for correctness because the
arguments of template aliases can be subject to SFINAE even if they
don't participate in the target type.
Change-Id: I4e71372553dc418d1b8c3e27bd2c0387a41a3269
When checking whether gathering the build output from a
CBuildConfiguration, if a binary is a shared library and is an
ELF file, dig deeper and see if it has an INTERP section in the
program header. That tells us it's actually a PIE executable and
add it to the list.
As a rider to this bill, improve the error message when a Qt install
can't be found for a given toolchain/target.
Change-Id: I8fd0bf2d204e9425b02916d7b17f4309a5ad9dd5
(cherry picked from commit 14b07f490c)
If we are merging two env vars and the operations are both
append or prepend, keep that as the operation instead of
replace.
Change-Id: I758a54b8903eabafac38bf2f3f7d7065c0373e70