1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-23 16:23:52 +02:00
Commit graph

3433 commits

Author SHA1 Message Date
Nathan Ridge
daad877559 Bug 526684 - Use InstantiationContext.setExpandPack() in CPPTemplates.instantiateTypes() if appropriate
InstantiationContext.setExpandPack() and related methods were introduced
in bug 486971 to ensure that when instantiating a type list that
contains a pack expansion, with a parameter map that maps the template
parameter pack that appears in the expansion to another parameter pack
(which can happen when e.g. instantiating an alias template with
dependent arguments), the pack is expanded in the correct place.

However, bug 486971 only added use of this machinery to CPPTemplates.
instantiateArguments(). We can also instantiate a type list in
instantiateTypes() (used e.g. when instantiating the parameter types
of a function type), so the machinery needs to be used there as well.

Change-Id: Iabb458e8e3166c15ed922656fc0729a4a8cf8bbf
2017-11-07 12:11:24 -05:00
Marco Syfrig
9a9e80e115 Bug 526724: corrected deduced type for string literals with u8 prefix
Change-Id: Ibc55f6cbd8f425149598b397a4d2fb90b7ed6b8b
Signed-off-by: Marco Syfrig <marco.syfrig@gmail.com>
2017-11-07 04:22:50 +01:00
Nathan Ridge
e96d2f92c8 Bug 526134 - Recover from failure to parse a base-clause in a class-specifier
Change-Id: I642650020dc2c0363376c8172769f4b5ea2d90c4
2017-10-25 13:14:31 -04:00
Jeff Johnston
c96d126b86 Bug 513589 - Add support to build CDT projects in a Docker Container
- add IOptionalBuildObjectPropertiesContainer interface to use for
  objects that supply optional build properties
- add new IOptionalBuildProperties interface that defines
  optional build properties donated by external plug-ins
- add new
- change IConfiguration to an IOptionalBuildObjectPropertiesContainer
- change IManagedProject to be an
  IOptionalBuildObjectPropertiesContainer
- fix ProcessClosure to ensure that readers are not null before
  accessing them
- fix Container launch delegate to look at project optional
  build properties for active configuration to fetch connection
  and image info and use said info to find a matching
  launch or create a new one
- have Container launch delegate use the image name as part of
  the launch config name
- have Container launch short-cut also use the project's
  optional build properties for the active config to get
  connection and image information before any defaulting
- change AutotoolsNewMarkerGenerator to store the command
  launcher as an ICommandLauncher
- add new CommandLauncherFactory extension to cdt.core that
  allows plug-ins to specify a CommandLauncherFactory that
  will return an ICommandLauncher based on the project
- add macros for new extension to CCorePlugin
- add new CommandLauncherManager class that loads
  CommandLauncherFactory extensions and is used to give
  an ICommandLauncher wrapper that will go through the list
  of CommandLauncherFactory extensions until one returns
  non-null ICommandLauncher
- add code to RemoteCommandLauncher so it will use the
  CommandLauncherManager to get the local launcher
- also change RemoteCommandLauncher to check at execution
  time whether the command is local and in that case use
  the local command launcher
- add new ICommandLauncherFactory interface
- add new ContainerCommandLauncher to launch
- add new ContainerCommandLauncherFactory class for returning
  a ContainerCommandLauncher instance to launch commands
  in a Docker Container
- change MakeBuilder to use CommandLauncherManager to get
  its ICommandLauncher
- change CommandBuilder to use CommandLauncherManager too
- ditto for Builder and AbstractBuiltinSpecsDetector and
  ExternalToolInvoker
- change Configuration to load/store optional build properties
  as well as return the properties to get/set
- ditto for MultiConfiguration
- change ManagedProject to implement IOptionalBuildOptionProperties
  interface
- ditto for ProjectType
- create new OptionalBuildProperties class to store optional
  build properties for a configuration
- bump cdt.docker.launcher to 1.1.0
- use CommandLauncherFactory extension to define
  ContainerCommandLauncherFactory
- add optional ContainerPropertyTab which allows the end-user to
  optionally choose to build a C/C++ project in a Container
  and specify the connection/image to use
- in LanguageSettingsSerializableSettings class, call the
  CommandLauncherManager getLanguageSettingEntries method
  to get the massaged language setting entries based on the
  current list
- in LanguageSettingsProviderSerializer, try and get the
  pooled entries using the cfg description so that it will
  have the project and can use the CommandLauncherManager
  to get entries from image
- in ContainerCommandLauncherFactory move cached headers under
  a HEADERS directory in the plug-in area
  - create a sub-directory for the connection and a sub-directory
    for the image based on cleansed names
  - store the real names of the connection and image to use
    later in the DockerHeaderPreferencePage
- modify LanguageSettingsEntriesTab to force the horizontal
  scroll bar to appear (this is a bug in SWT SashForm support
  and the fix here isn't quite correct, but is better)
- add new DockerHeaderPreferencePage that allows user to
  remove cached headers from images
- change C/C++ Docker preferences to be titled: Docker Container
- fix LanguageSettingsWorkspaceProvider.getSettingEntries method
  to use the CommandLauncherManager so entries will be transformed
  to use cached headers
- add BaseDatabindingModel class
- add DataVolumeModel class to model a volume mount
- add ContainerPropertyVolumes model to model volume specification
  and selected volumes
- add properties to ContainerCommandLauncher to represent
  volumes and selected volumes for a configuration
- add ContainerDataVolumeDialog for specifying a volume
  mount by the end-user
- add a null detector for cfgDescription in
  LanguageSettingsSerializableProvider
- fix AutotoolsNewMakeGenerator.getWinOSType to not specify "." for
  working dir
- fix GCCBuiltinSpecsDetectorCygwin to not map paths to Cygwin if
  the current configuration is enabled for container build
- add logic to ContainerCommandLauncher to look for Windows
  file formats and change them to unix format and map
  any "." working dir to be /tmp
- fix ContainerLauncherConfigurationDelegate similarly
- fix AbstractBuiltinSpecsDetector to pass in the current
  configuration description when getting the CommandLauncher
  since the current configuration may not be the active
  configuration
- change ContainerPropertyTab to add Elf and GNU Elf binary parsers
  when build in Container is chosen so that output executables
  are treated as Binaries by the CDT project
- add documentationl for the ContainerPropertyTab in Build Settings and
  the Data Volume dialog pop-up it brings up
- change CommandBuilder to accept a project as an argument
  to its constructor and to pass this as an argument to
  the CommandLauncherManager
- have StepBuilder pass project when creating a CommandBuilder

Change-Id: Ia78488b93056e6ec7ca83a6c87b3a9d2b9424943
2017-10-22 05:38:51 -04:00
Nathan Ridge
4c1a6e0ccd Bug 486140 - Cast expression with label reference expression as operand
Change-Id: I77d8e7dabc64f68818f4222ffe3d6ba7eebae542
2017-10-21 14:38:48 -04:00
Nathan Ridge
20cebd8f6f Bug 525982 - Have TypeOfUnknownMember implement ICPPUnknownBinding
This ensures that name resolution can proceed when a TypeOfUnknownMember
appears on the left hand side of a scope resolution operator.

Change-Id: I2dfc22eb474b8a2f776eda09ce90c91462d7fe5b
2017-10-20 15:32:58 -04:00
Thomas Corbat
07e8917eb5 Bug 525645 - Named type specifiers in friend declarations
Change-Id: Ia67fb35ef3d20cde97322c07e697e3437c6c769d
Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
2017-10-06 09:41:53 -04:00
Nathan Ridge
89ebafa72e Bug 512297 - Decrease the template instantiation depth limit to 128
The previous limit of 256 was not sufficient to prevent stack
overflows in some cases.

Change-Id: Ied9171ed3020f2de7932fa9ee50780bd207d8707
2017-10-04 12:21:20 -04:00
Nathan Ridge
bf73bb58bc Bug 512297 - Impose a limit on the nesting depth of template arguments
This avoid stack overflows when processing code that has very deeply
nested template arguments.

Change-Id: I748e2d827fd1e7842737ec0652cf3733ae9962b1
2017-10-03 22:26:19 -04:00
Nathan Ridge
20a88df65c Bug 399147 - Make 'Find References' find using-declarations
This is a revised approach for fixing this bug by giving using-
declarations implicit names for each delegate binding.

Change-Id: Ib9695c30258b8cb322ae1548ab022e357318135c
2017-10-02 02:44:02 -04:00
Nathan Ridge
bb9d1db323 Bug 518937 - Apply declaredBefore() filtering to index bindings found in a namespace scope
Previously, such filtering was only done in resolveAmbiguities(),
which was too late for name lookup for proceed to an enclosing
scope if it did not find valid candidates in the namespace scope.

Change-Id: I435d7be1aff5344985c1bbb201bf5d383d43fe8d
2017-09-27 18:58:02 -04:00
Nathan Ridge
2fe856426c Fix a couple of potential leaks of the PDOM write lock
This fixes a couple of places where a call to
PDOM.acquireWriteLock() is not paired with a call to
releaseWriteLock() in a finally block.

Change-Id: I45a8bd9a2f6585bb4c4bc1f726fea6f9eba5fb43
2017-09-26 13:39:54 -04:00
Nathan Ridge
64709c980d Bug 513105 - Store the current lookup point in a thread-local static stack rather than passing it around everywhere
Change-Id: I3da7326d1ce6bede8d4787d98f38fb2064288338
2017-09-25 12:51:22 -04:00
Nathan Ridge
2aeb75d147 Bug 522509 - Handle typedefs in __is_class builtin
Change-Id: Ief3efa8e660ab1f7ec11788be8dad69da2501aa6
2017-09-20 00:15:59 -04:00
Nathan Ridge
9011fe1a95 Bug 522066 - Use the declarator as the key for the recursion protection set in createAutoType()
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
2017-09-19 00:28:34 -04:00
Nathan Ridge
47fe12a179 Bug 521543 - Correctly identify narrowing conversion to boolean
Change-Id: I07672f5043cbb68070185d3d7d4993794b9caa2b
2017-09-07 01:32:17 -04:00
Nathan Ridge
e75a209b9f Bug 521274 - Defer execution of constexpr function body until function is fully instantiated
Change-Id: I35a63d15e7bfa7d3db98235eaa9dfe23e28950ac
2017-09-07 01:30:34 -04:00
Nathan Ridge
33a7f1e533 Bug 520999 - Map PDOM class types to AST before looking up constructors
Change-Id: Iac865cbde8ed4ba2b002eea0da7d943598d33bc1
2017-08-24 00:57:23 -04:00
Thomas Corbat
c7b6aa3bd5 Bug 520893 Pack expansion in IASTTypeId is lost
Change-Id: I9137d028c56ce62ee02571099a7a5ab1b2b481cd
Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
2017-08-11 14:29:02 +02:00
Nathan Ridge
08ea2dc248 Bug 520049 - Perform array-to-pointer conversion on operands of C conditional expression
Change-Id: Idd57bbcf12b7edf5c19fbd3debb8e64ea7851107
2017-08-08 00:52:06 -04:00
Nathan Ridge
10ef1f11b0 Bug 519819 - Correctly classify unknown member binding as an unknown member class when it appears in a nested-name-specifier
Change-Id: I2d153e8676403709d4d674d3dcead6896ff9cafe
2017-07-27 00:35:22 -04:00
Marc-Andre Laperle
01a45c3d00 Bug 517402 - Ambiguous namespace, conflicting with a different kind of symbol
Change-Id: I5a648e23f1222c1bbf75a13b367dd51dd6231f61
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
2017-07-26 13:49:34 -04:00
Thomas Corbat
65eda42b16 Bug 518628 Function declarator location misses virtual specifiers
- Change parser to include virtual specifier in function declarator
location
- Change DeclaratorWriter to write all virtual specifiers in their
initial order

Change-Id: Iff381394b834146c1b63877bc9eb84517d31e078
2017-06-22 07:48:33 -04:00
Nathan Ridge
1dceabb0eb Bug 516338 - Detect substitution failure during instantiation of dependent alias template arguments
Change-Id: Ia97e0632e17b4047a0fe35c05be72dab75e43d5c
2017-06-20 02:34:07 -04:00
Nathan Ridge
3e0853ae0c Bug 516338 - Improve typedef preservation
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
2017-06-20 02:34:06 -04:00
Nathan Ridge
5f937c0bf8 Bug 516648 - Delay storing of the type, exception specification, and parameters of a function specialization in the index until the post-process
This is needed to avoid infinite recursion, and mirrors the way regular
functions are stored.

Change-Id: I72d0c9fb1567cb9d2ba8922d38e17ec63e1fe97a
2017-06-04 18:29:00 -04:00
Marc-Andre Laperle
35d0e13240 Bug 514459 - StackOverflow in PDOMCPPVariable.getInitialValue
Change-Id: Iaee32f03a4fa821979fca1e1ca7b2b272bac1737
Signed-off-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
2017-05-26 11:47:09 -04:00
Nathan Ridge
3147cc4732 Bug 516627 - Add support for generic lambdas
Change-Id: I2e8d16cfe2dc58b77e36fa7a6957506c90b7e75a
2017-05-22 13:39:55 -04:00
Nathan Ridge
f579acd381 Add some more commonly used types to SemanticTestBase.CommonCPPTypes
Change-Id: Ifec1e26f9e5a31651229e50002dfcb2d67b1379d
2017-05-22 13:39:29 -04:00
Nathan Ridge
9aa8aca96b Factor out an AST2CPPTestBase base class for C++ AST2 tests
Change-Id: I923fa1559a0cca584ff3a601d59ac71c0e491c49
2017-05-22 13:38:53 -04:00
Nathan Ridge
619da2a170 Bug 408470 - Add partial support for C++14 return type deduction
Out-of-line definitions where the definition is in a different file
than the declaration are not supported yet.

Change-Id: I3631bdb3e08abe2aab266065c7858c66170fb570
2017-05-14 13:48:36 -04:00
Nathan Ridge
fb847a82ce Bug 408470 - Introduce SemanticTestBase to serve as a common base class for AST and index tests
This allows reusing more code, such as CommonCPPTypes and
BindingAssertionHelper, between the two test suites.

Change-Id: I8203191fc3a10565add0ae1bd25c98f743cd1e64
2017-05-14 02:08:24 -04:00
Nathan Ridge
4e760d8690 Bug 408470 - Define some more common C++ types in AST2TestBase
Change-Id: I794439a2d68f7b744afdef80b1f92a09996f95d2
2017-05-14 01:41:52 -04:00
Nathan Ridge
08ea44c0af Bug 408470 - Move the variable template tests into the new cxx14 subpackage
Change-Id: I45a598d6cf920860a6f08d25e8921cbf310734a8
2017-05-14 00:29:08 -04:00
Nathan Ridge
1f2198a8bf Bug 408470 - Move C++14 constexpr tests into cxx14.constexpr subpackage
Change-Id: If9ac633020e568a0e4218a2ad358ee21eb1cffd7
2017-05-13 23:43:31 -04:00
Nathan Ridge
882f8e95a9 Bug 516291 - Improve propagattion of instantiate failures through EvalFunctionCall and EvalComma
Change-Id: Ieafe15a88c3838d15aaaf9043199ae2caf1c31db
2017-05-12 23:28:30 -04:00
Nathan Ridge
9b809b0ad7 Bug 516291 - If a function call has dependent arguments, resolve the function name as a CPPDeferredFunction even if there is only one viable candidate
This ensures that, when instantiating the function call, we get into
EvalFunctionSet.resolveFunction(), and check that the function is
actually callable with the instantiated argument types, and error out
if it isn't (which is important for SFINAE purposes).

Change-Id: Ia01755bc1a830fded1f61658f4beef875cc0b029
2017-05-12 23:28:11 -04:00
Nathan Ridge
9c0d9fec08 Bug 516290 - Correct computation of decltype(expr) for dependent expressions
Change-Id: Iabc49563e85e8649a94a77210eb066253925ea3c
2017-05-12 22:49:23 -04:00
Nathan Ridge
b10156e36d Bug 516284 - Binding of const class rvalue to T& parameter
Change-Id: Ieb7293c20ba78611097a3d751be16fddb25f3627
2017-05-11 20:48:15 -04:00
Nathan Ridge
1594835cc6 Bug 508637 - Encode the CDT version in the value of the __CDT_PARSER__ macro
Change-Id: Ic8b571da6cf47297bb615843fab8a8d971c7c2a7
2017-05-11 02:30:12 -04:00
Nathan Ridge
60503efc58 Bug 512932 - Improve type checking of GCC builtins
Specifically, this patch:

  - Adds support for a new builtin, __builtin_assume_aligned.

  - Models __builtin_constant_p as a function instead of a macro.
    This inhibits constexpr evaluation, but allows for correct
    type-checking.

  - Diagnoses misuses of known builtins, instead of ingoring them like
    unknown builtins.

Change-Id: Ie5a26f2010dc5b19e6f32a8c6a1237fe88da393e
2017-05-08 23:04:17 -04:00
Thomas Corbat
0f27b20848 Bug 516298 - Improved recognition of [[noreturn]] attribute
Change-Id: I275f0ee38045600c104d5ed7e2c14fec04eac046
Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
2017-05-08 13:23:13 -04:00
romibi
5d9dd823fa Bug 514684 - call writeAttributes on more Statements
and added JUnit tests

Change-Id: Ic09aa96f896b0a5dd998156e05930704775f695b
Signed-off-by: romibi <romibi@bluewin.ch>
2017-05-08 02:39:13 -04:00
Nathan Ridge
c22ccedea2 Bug 512932 - Check for standard conversions in CPPEvaluation.maybeApplyConversion()
Previously, we would just assume that if there is no user-defined
conversion involved, the evaluation successfully converts to the target
type.

This increased strictness exposed a couple of other bugs related to
evaluations, which are also fixed in this patch.

Change-Id: I8c40114da341d95b38f1ecc386e875badfe9f8c6
2017-05-07 18:40:25 -04:00
Nathan Ridge
432c3eaa04 Bug 512932 - Do not perform extra type manipulations in EvalMemberAccess.computeType()
The manipulations removed in this change have no basis in the standard,
as far as I can tell by looking at [expr.ref].

Change-Id: I4fc8c342b590dbeb5a876543f736934c162034cc
2017-05-06 00:02:33 -04:00
Thomas Corbat
5dff17514c Bug 310837 - Indexer misses changes to header in referenced project
Extended PDOMManager to update index for header files in referencing
projects


Change-Id: I5a5b364651dbb854662c31197dd7ad77f13caff0
Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
2017-05-05 09:44:26 -04:00
Nathan Ridge
f451a27846 Bug 515453 - Do not have CPPAliasTemplateInstance store its arguments in string form
This ability was only needed by two tests, and stringifying template
arguments is prone to infinite recursion problems.

Change-Id: I485fa09358c0569b48b6847994aed720ba969b1f
2017-05-01 02:02:37 -04:00
Nathan Ridge
87db7de765 Bug 515453 - Clear all ProblemBindings stored during ambiguity resolution
This prevents names getting incorrectly stuck with ProblemBindings
created at a time when the AST wasn't fully ambiguity-resolved yet.

Change-Id: Ibca4a774ee26c393bf2b6decb535b82a2329caad
2017-05-01 02:01:10 -04:00
Jonah Graham
cc0955b823 Bug 515560: Avoid indexer race condition by joining the indexer
Change-Id: I13bd33adba4eb790fae0c31d2c1378e19a59f4ff
2017-04-24 07:31:54 -04:00
Nathan Ridge
468289a3da Bug 512932 - Type of __func__, __FUNCTION__, and __PRETTY_FUNCTION__ builtins
Change-Id: If0875f0523b9eaf960052c2cc4e3cc01a6432adf
2017-04-23 14:08:59 -04:00