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
- 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
This ensures that name resolution can proceed when a TypeOfUnknownMember
appears on the left hand side of a scope resolution operator.
Change-Id: I2dfc22eb474b8a2f776eda09ce90c91462d7fe5b
This is a revised approach for fixing this bug by giving using-
declarations implicit names for each delegate binding.
Change-Id: Ib9695c30258b8cb322ae1548ab022e357318135c
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
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
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
- Change parser to include virtual specifier in function declarator
location
- Change DeclaratorWriter to write all virtual specifiers in their
initial order
Change-Id: Iff381394b834146c1b63877bc9eb84517d31e078
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
Out-of-line definitions where the definition is in a different file
than the declaration are not supported yet.
Change-Id: I3631bdb3e08abe2aab266065c7858c66170fb570
This allows reusing more code, such as CommonCPPTypes and
BindingAssertionHelper, between the two test suites.
Change-Id: I8203191fc3a10565add0ae1bd25c98f743cd1e64
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
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
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
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
Extended PDOMManager to update index for header files in referencing
projects
Change-Id: I5a5b364651dbb854662c31197dd7ad77f13caff0
Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
This ability was only needed by two tests, and stringifying template
arguments is prone to infinite recursion problems.
Change-Id: I485fa09358c0569b48b6847994aed720ba969b1f
This prevents names getting incorrectly stuck with ProblemBindings
created at a time when the AST wasn't fully ambiguity-resolved yet.
Change-Id: Ibca4a774ee26c393bf2b6decb535b82a2329caad