Commit Graph

261 Commits

Author SHA1 Message Date
Elisavet Sakellari
01a4526fc6 Edited test for Multiple Interps, and added some fixes 2016-01-14 20:44:14 +01:00
Elisavet Sakellari
4ac0a10a3e Added test for MultipleInterpreters, and some changes. 2016-01-14 20:44:14 +01:00
Elisavet Sakellari
b0bdcf4c56 First commit for the Multiple Interpreters. 2016-01-14 20:44:14 +01:00
Elisavet Sakellari
ee92892ad4 First commit for the Multiple Interpreters 2016-01-14 20:44:14 +01:00
Philippe Canal
a11b9e384e Fix cling::utils::GetPartiallyDesugaredTypeImpl for C++14.
Fix cases (seen in roottest/cling/typedef/assertTypedefIter.C) where
a template parameter is an expression that is actually part of a
template parameter pack.  In this case we need to peek into the pack.
2016-01-02 20:48:01 +01:00
Axel Naumann
2023eac193 Put LINK_LIBS back, they are used by ROOT. 2015-12-16 20:29:22 +01:00
Axel Naumann
6eac3e3159 Define dependencies! 2015-12-16 20:29:22 +01:00
Philippe Canal
81fef9a7b4 Add support for Parameter packs in type(name) normalization.
This fully resolve ROOT-7708.
2015-10-28 19:44:14 +01:00
Philippe Canal
2c9a79514e White spaces 2015-10-28 19:44:14 +01:00
Philippe Canal
26fdb651b9 PrimaryContext returns non null for forward decl, so we need to also grab the def.
This redo d78dac6 that was thought to be superseeded by ca32227
2015-10-15 22:45:06 +02:00
Philippe Canal
32bd423d59 We must pass the primary decl context to Sema's LookupQualifiedName [ROOT-7737].
This is guarded by an assert in Sema::LookupQualifiedName.
2015-10-15 21:33:13 +02:00
Danilo Piparo
c85ce99057 Re-enable "In TypeName::GetFullyQualifiedType, strip SubstTemplateTypeParmType."
This reverts commit 944b1d4fed1851b67236be756094a68be26ae0c2.
2015-10-02 14:09:06 +02:00
Philippe Canal
040bad9a53 Revert "In TypeName::GetFullyQualifiedType, strip SubstTemplateTypeParmType."
This reverts commit 5190ebeb2eb0ac527881ab1c91401b20f4e54b39.

It fails on roottest/root/meta/dictSelection:execAtlasTest2
2015-09-24 15:14:01 +02:00
Philippe Canal
f1fd8d0fd0 In TypeName::GetFullyQualifiedType, strip SubstTemplateTypeParmType.
When the type comes (directly or indirectly) from being used as a template paramater, it is decorated
by SubstTemplateTypeParmType which gets in the way of properly getting the name correct (leads to
'std::const string'.
2015-09-24 11:15:18 +02:00
Philippe Canal
67ffd34dd5 In GetPartiallyDesugaredTypeImpl fix type replacement.
When looking up in the list of type to be replaced by a typedef (basic_string -> string), use
the canonical type to make sure we have the right search (any sugar will make the search fail).
2015-05-08 19:46:12 +02:00
Axel Naumann
556ac8c3dc Use canonical Decls as key for "do not desugar"; may have dupe Type*s. 2014-10-07 22:20:06 +02:00
Philippe Canal
443fe10fd8 Properly handle the template template args in global scope.
Also properly handle the case where the template template argument as a partially qualified scope
2014-09-18 02:32:02 +02:00
Philippe Canal
29746d4caf Add support for fully qualifying a template argument that is itself a template.
This is the case for example with gcc's

  __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,true>

where __pool is actually a class template.

Also reduce (a little bit) code duplication.
2014-09-18 02:32:02 +02:00
Philippe Canal
42da1a112a Revert "Add support for fully qualifying a template argument that is itself a template."
until we understand the negative side-effects.

This reverts commit 19f18e848d50bd44a011e8cf192f56d73e28bf65.
2014-09-17 23:06:01 +02:00
Philippe Canal
08a86e35eb Add support for fully qualifying a template argument that is itself a template.
This is the case for example with gcc's

  __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool,true>

where __pool is actually a class template.

Also reduce (a little bit) code duplication.
2014-09-17 21:33:02 +02:00
Philippe Canal
2aacd83287 Introduce Lookup::Named overload taking a StringRef 2014-09-15 12:26:13 +02:00
Philippe Canal
e4c0a20450 Reduce unnucessary type recreation 2014-09-02 23:01:15 +02:00
Vassil Vassilev
a67f06645e operator() doesn't have a name. 2014-08-29 15:31:05 +02:00
Vassil Vassilev
0aa2a31fa0 llvm::OwningPtr is now std::unique_ptr. 2014-08-14 14:56:44 +02:00
Vassil Vassilev
db33d58960 Add missing includes. 2014-08-14 14:56:34 +02:00
Vassil Vassilev
79b26d8878 ExprResult::take -> ExprResult::get, ExprResult::takeAs -> ExprResult::getAs. 2014-08-14 14:56:33 +02:00
Philippe Canal
576ca3ca96 Remove trailing spaces 2014-08-13 16:08:36 +02:00
Philippe Canal
f7aaac2c07 Avoid the risk of type creation if we can 2014-05-14 09:03:56 +02:00
Philippe Canal
d1e545b60d In Partial desugar add support for array type 2014-05-14 09:03:56 +02:00
Axel Naumann
5a63dff8e9 Survive lookup in a forward declared context. 2014-04-29 17:47:58 +02:00
Axel Naumann
8b60eaf361 Survive and signal non-unique lookup results. 2014-04-29 17:47:58 +02:00
Philippe Canal
93ce42bdc3 Preliminary support for template alias.
GetPartiallyDesaguredType now desugar template alias
but does not yet properly propagate the opaque typedef
and thus:

  template <typename T> using myvector = std::vector<T>;
  myvector<Double32_t> vd32d;

  template<class T> using ptr = T*;
  ptr<Double32_t> p3;

Both currently result in the Double32_t being ignored.
2014-03-21 16:57:07 +01:00
Philippe Canal
45895aec23 No longer hide the compiler detail.
The partial desugaring (part of normalization) now strips a typedef
even when it original from std and points to compiler details (__gnu_cxx, etc.).

The cost of this convenience was the fact the same entity could have different
'name' and thus different class even-though they were supposed to be strictly
equivalent. i.e. depending on the way to get to the class it could be name
vector<int*>::iterator or __gnu_cxx::iterator<int*> or std::iterator<int*>.

This different from the case where we have a strictly bidirectional equivalent
between the class and its unique typedef (yes, we are talking about you std::string).

This also different from the case where there is a semantic difference between
the two possible name.  I.e. where an opaque typedef is used.  For example,
vector<Double32_t> and vector<double> and where the 'way' to get to the type[name]
is relevant.
2014-03-21 16:57:07 +01:00
Axel Naumann
d7ca5b7759 Use new libdep syntax; parameterize target libs to link. 2014-03-08 18:47:09 +01:00
Bertrand Bellenot
bf14b93185 Suppress MSVC warning C4530: C++ exception handler used, but unwind semantics are not enabled 2014-02-21 10:52:58 +01:00
Vassil Vassilev
bf57dc0424 Move isOnScopeChains to a common ground. Erase the decl from the resolver chain only if it existed there. 2014-02-12 15:30:59 +01:00
Philippe Canal
c6501ffe97 Introduce Transform::Config::DropDefaultArg
Currently only implemented for the STL collection.

This could eventually be used to allow customization
of which default argument to strip and which class template.

For now, it is only used to prevent the addition of template
default template argument to the STL collection ... which
we would any strip.

This fixes the secondary issue in ROOT-6020 (one class template
instance having more than one corresponding TClass due to the
inconsistency in the normalization (not adding vs not stripping)
2014-02-01 03:18:02 +01:00
Philippe Canal
1004034c75 Move IsStdClass to cling::utils::Analyze 2014-02-01 03:18:02 +01:00
Philippe Canal
0208d472dd Check that we found '::std' rather than some other namepace named std 2014-01-20 16:33:12 +01:00
Philippe Canal
8b1fd832dc Strip inline namespace 2014-01-20 16:33:11 +01:00
Axel Naumann
0236fc8c04 Make sure the prefix is a class (ROOT-5856). 2014-01-20 14:42:58 +01:00
Axel Naumann
8aedeca69c Refer to license in CMake files. 2014-01-07 12:02:58 +01:00
Axel Naumann
44481ace1e Fix license; remove $Id$ version. 2014-01-07 11:14:04 +01:00
Axel Naumann
5da6e646a5 Correct licenses in Makefiles. 2014-01-07 11:13:56 +01:00
Axel Naumann
c73e6eb493 Re-implement (explicitly) handling of typedefs as nested name specs: TD::A.
This got lost in 2b6ae0aed / 96a4437c8 where typedefs were handled.
Simplify logic (and thus shorten code).
Fixes error in roottest/root/tree/addresses:
Error in <TStreamerInfo::Build>: Embedded_objects, unknown type: EmbeddedTypedef::Embedded3 m_emb4
2014-01-06 18:27:00 +01:00
Axel Naumann
4d98a76dec Support FullyQualName for ::B, fixes roottest/cling/op/ConversionOp. 2013-12-21 15:11:50 +01:00
Axel Naumann
0f3b2ba7f9 Remove now unused function. 2013-12-20 16:50:52 +01:00
Axel Naumann
db0fb9d2c4 Fatally misspelled function name: not type but namespace (ROOT-5867). 2013-12-20 15:22:49 +01:00
Philippe Canal
6850b1db86 Add IsStdOrCompilerDetails 2013-12-17 15:58:55 +01:00
Philippe Canal
3216896e6e Declare local function static (For consistency) 2013-12-17 15:58:54 +01:00
Philippe Canal
453513639f Correct comment (see 5e2960275c7e) 2013-12-17 15:58:54 +01:00
Axel Naumann
7f02f830c9 80col, spaces. 2013-12-05 16:27:01 +01:00
Axel Naumann
0eb9ac042f Make full qualification an option.
Allows GetPartiallyDesugaredType() and GetFullyQualifiedName() to share functionality.
2013-12-04 19:09:59 +01:00
Axel Naumann
97987030f5 Move several TypeName functions from MetaUtils to cling/Utils.
They were once identical but then got bug fixed out of sync.
Moved routines:

GetFullyQualifiedLocalType()
GetFullyQualifiedType()
CreateNestedNameSpecifier()
CreateNestedNameSpecifierForScopeOf()
GetFullyQualifiedTypeNNS()
2013-12-04 19:09:59 +01:00
Axel Naumann
63e094c197 Do not diagnose lookup problems in lookup() interfaces. 2013-12-02 14:21:08 +01:00
Axel Naumann
7106f6546d Protect against Null type. 2013-12-02 13:53:30 +01:00
Philippe Canal
27b213ed73 Properly handled (partial) desugaring of 'const NS::Something_t'
TClassEdit::ResolveTypedef was not properly handling the leading const
if there is a namespace in the name (and no template).

Transform::GetPartiallyDesugaredType was not keeping the 'const' in case
the target of the typedef was in the global scope (for example being a
fundamental type).

This fixes ROOT-5576
2013-11-06 21:39:55 +01:00
Philippe Canal
b96f1409ac In GetPartiallyDesugaredType add support for expression as template parameter.
For example:
namespace edm {
  template <int I> class Hash {};
  const int typeN =1;
  typedef Hash<typeN> ParentageID;
}

edm::ParentageID should be desugared to edm::Hash<1>.
2013-10-30 13:44:58 +01:00
Vassil Vassilev
64b1a77356 Fix the case when the decl doesn't need mangling, adapt the test to the new impl. 2013-10-29 20:19:23 +01:00
Vassil Vassilev
eacb364e25 Turn the if into an assert. 2013-10-29 20:19:20 +01:00
Vassil Vassilev
b7de97fa45 Pick up the right ctor/dtor type. 2013-10-29 20:19:20 +01:00
Vassil Vassilev
a97a2811c9 maybeMangleDeclName should take GlobalDecl. This enforces integrity. 2013-10-29 20:19:17 +01:00
Vassil Vassilev
aa5ae69f10 Make the function static. 2013-10-29 20:19:13 +01:00
Vassil Vassilev
96a013d91a Reduce/update patches. 2013-10-20 15:22:03 +02:00
Vassil Vassilev
c35e529cd6 Remove unused code. 2013-09-10 15:41:01 +02:00
Philippe Canal
aa29aa9eb9 Remove dead code (coverity 52208) 2013-09-06 06:25:54 +02:00
Philippe Canal
5572e076ac Do not desugar typedef pointing to compiler 'details'.
Rather than skipping the desugaring of typedef pointing to anything in std, we
skip the desugaring of typedef pointing to a type starting with an underscore.
2013-09-03 13:18:55 +02:00
Philippe Canal
53bf555194 In GetPartiallyDesugaredType add ability to replace a type by a typedef.
Add struct cling::utils::Transform::Config to hold both the list of typedef to
avoid desugaring (m_toSkip) and the list of type to replace by a nicer typedef
(m_toReplace).

This is used to replace basic_string<...> by std::string.
2013-09-03 13:18:55 +02:00
Philippe Canal
3777a7194e Try without 'blocking' desugaring of typedef to std entities 2013-09-03 13:18:55 +02:00
Philippe Canal
52da28145b Fix ROOT-5442, wrong normalization of std::vector<myNamespace::myClass1*>::const_iterator
GetPartiallyDesugaredType was 'forgetting' to add full qualification of the
template parameters in some case (where the template paramter in the
QualType was not yet an elaborated type).  Extend the internal interface to
distinguish when we need to add full qualification to the type itself or its
template parameters.
2013-08-29 08:59:59 +02:00
Paul Russo
63cb406f2f Add support for TClingCallFunc function wrappers to transactions. 2013-08-28 03:46:06 +02:00
Vassil Vassilev
782d2568ea Factor our common functionality and replace CreateTypeSourceInfo with getTrivialTypeSourceInfo.
git-svn-id: http://root.cern.ch/svn/root/trunk@49347 27541ba8-7e3a-0410-8455-c3a389f83636
2013-04-25 12:48:15 +00:00
Vassil Vassilev
cb6210bd0a Fix a valgrind complaint "jump over uninit memory"
It is very weird, clang documentation says:
ASTContext::CreateTypeSourceInfo - Allocate an uninitialized TypeSourceInfo...
ASTContext::getTrivialTypeSourceInfo - Allocate a TypeSourceInfo where all locations...

We should use the getTrivialTypeSourceInfo all over the place...


git-svn-id: http://root.cern.ch/svn/root/trunk@49343 27541ba8-7e3a-0410-8455-c3a389f83636
2013-04-25 12:26:44 +00:00
Philippe Canal
90685e1db3 remove more llvm::
git-svn-id: http://root.cern.ch/svn/root/trunk@48794 27541ba8-7e3a-0410-8455-c3a389f83636
2013-03-01 18:12:48 +00:00
Philippe Canal
60ae47802f remove all clang::
git-svn-id: http://root.cern.ch/svn/root/trunk@48793 27541ba8-7e3a-0410-8455-c3a389f83636
2013-03-01 18:06:58 +00:00
Philippe Canal
8d3732c699 In GetPartiallyDesugaredType, properly handle the case where the typedef and its target are in different scope
and the case where the typedef (or the type) has a partially qualified name (we need to complete it) and 
double check that we do not have :: in front.

This fixes the result when scanning through:

class Embedded_objects {
public:
  typedef std::vector<int> vecint;
  vecint::iterator m_iter;
  typedef vector<int> vecint2;
  vecint2::iterator m_iter2;
};

namespace NS1 {
  namespace NS2 {
    namespace NS3 {
      class Point {};
      class Inner3 {
      public:
        Point p1;
        NS3::Point p2;
        ::NS1::NS2::NS3::Point p3;
      };
    }
  }
}

Also remove some llvm:: and clang::


git-svn-id: http://root.cern.ch/svn/root/trunk@48792 27541ba8-7e3a-0410-8455-c3a389f83636
2013-03-01 17:59:59 +00:00
Philippe Canal
83db486387 When looking at the whether the target is in std, let's look at the final target (rather than just one hop). Desugar Elaborated type (inside the type chain).
git-svn-id: http://root.cern.ch/svn/root/trunk@48778 27541ba8-7e3a-0410-8455-c3a389f83636
2013-03-01 01:33:38 +00:00
Philippe Canal
e5d5914ccb Add missing null pointer protection
git-svn-id: http://root.cern.ch/svn/root/trunk@48595 27541ba8-7e3a-0410-8455-c3a389f83636
2013-02-15 12:42:09 +00:00
Philippe Canal
4c4a43770d Switch from not desugaring *all* typedef that are declared within a class or namespace inside std to not desugaring the typedef that are declared in std and are pointing to a class, enum or struct that is declared in std or __gnu_cxx (or a class or namespace nested within those namespaces).
This revises the behavior introduced in revision 46131.
This fixes <https://savannah.cern.ch/bugs/?100390>

Philippe.


git-svn-id: http://root.cern.ch/svn/root/trunk@48574 27541ba8-7e3a-0410-8455-c3a389f83636
2013-02-14 17:23:47 +00:00
Philippe Canal
a7f6d5c3c9 Finish 48510 SubstTemplateTypeParmType can indeed carry meaningfull qualifier (also add related test)
git-svn-id: http://root.cern.ch/svn/root/trunk@48549 27541ba8-7e3a-0410-8455-c3a389f83636
2013-02-12 18:38:58 +00:00
Philippe Canal
b218b89d4c In the partial desugaring add support for the case where we have a type that point to an already completely desugared template instantiation in which case the type is a RecordDecl rather than a TemplateInstantationType
git-svn-id: http://root.cern.ch/svn/root/trunk@48510 27541ba8-7e3a-0410-8455-c3a389f83636
2013-02-07 22:56:10 +00:00
Philippe Canal
101602fb42 Only keep the typedef that are within a class or namespace insidehe std namespace (that way we do desugar std::size_t).
git-svn-id: http://root.cern.ch/svn/root/trunk@48201 27541ba8-7e3a-0410-8455-c3a389f83636
2013-01-04 17:26:48 +00:00
Philippe Canal
d267a7e10e In the GetPartiallyDesugaredType, properly handle the case where the input is partially qualified (input: B::C and the ouput needs to be A::B::C ; i.e. properly handle ElaboratedType as input). Also properly strip the typedef from any of the scopes (A::vecint::iterator -> std::vector<int>::iterator). Add the corresponding test
git-svn-id: http://root.cern.ch/svn/root/trunk@47958 27541ba8-7e3a-0410-8455-c3a389f83636
2012-12-11 08:26:00 +00:00
Philippe Canal
33293b1730 Properly handle the qualifiers in the new desugaring code
git-svn-id: http://root.cern.ch/svn/root/trunk@47770 27541ba8-7e3a-0410-8455-c3a389f83636
2012-12-01 20:37:09 +00:00
Philippe Canal
a834428d87 Add a couple of comment on elaboratedType
git-svn-id: http://root.cern.ch/svn/root/trunk@47765 27541ba8-7e3a-0410-8455-c3a389f83636
2012-12-01 18:02:54 +00:00
Paul Russo
b75c068ea4 Make the partial desugaring of types fully granular,
we now explicitly control exactly which types get
desugared and which do not.  The current set which
does get desugared is a first pass at what we need,
I fully expect we will have to tune it as we do
more debugging of roottest.


git-svn-id: http://root.cern.ch/svn/root/trunk@47719 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-29 21:40:44 +00:00
Paul Russo
6f5a94816f Backout revision 47672 because it breaks dictionaries.
git-svn-id: http://root.cern.ch/svn/root/trunk@47680 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-28 17:18:16 +00:00
Philippe Canal
5d382a09f0 remove un-intentional commit of old code
git-svn-id: http://root.cern.ch/svn/root/trunk@47676 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-28 16:46:34 +00:00
Paul Russo
6827ff1446 Fix from Philippe to enable Transform::GetPartiallyDesugaredType()
to actually desugar while looking for typedefs to keep.


git-svn-id: http://root.cern.ch/svn/root/trunk@47672 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-28 16:14:29 +00:00
Vassil Vassilev
0b9ac8557b Factor out the creation on IntegerLiteral in separate public routine.
git-svn-id: http://root.cern.ch/svn/root/trunk@47542 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-21 17:05:10 +00:00
Philippe Canal
65e877ce0f Properly handle (ignore) outer scope that are not namespace or TagDecl
git-svn-id: http://root.cern.ch/svn/root/trunk@47513 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-20 23:19:48 +00:00
Axel Naumann
3df2500a81 Be nice to the caller - lookup inside a DeclContext should work even for a const DeclContext, so do a const_cast in the source.
git-svn-id: http://root.cern.ch/svn/root/trunk@47496 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-20 19:13:06 +00:00
Philippe Canal
fc629a9c46 code convention
git-svn-id: http://root.cern.ch/svn/root/trunk@47391 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-17 07:36:22 +00:00
Axel Naumann
169edbd5a0 Complain for typedefs inside functions.
git-svn-id: http://root.cern.ch/svn/root/trunk@47204 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-12 17:49:48 +00:00
Philippe Canal
26e040e03f fix typo
git-svn-id: http://root.cern.ch/svn/root/trunk@47087 27541ba8-7e3a-0410-8455-c3a389f83636
2012-11-07 05:31:03 +00:00
Philippe Canal
d1f4b8c39e Add code and testing for classes declared inside an anymous namespace
git-svn-id: http://root.cern.ch/svn/root/trunk@46841 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-26 19:51:56 +00:00
Vassil Vassilev
50027e07fc std::vector::data() is not standartized and on windows it cause build failure.
GCC implements it but there is a comment saying:
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// DR 464. Suggestion for new member functions in standard containers.
// data access
Use standartized alternative.


git-svn-id: http://root.cern.ch/svn/root/trunk@46710 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-22 12:35:32 +00:00
Vassil Vassilev
acef61e88f Fix not only the address but the string too.
git-svn-id: http://root.cern.ch/svn/root/trunk@46681 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-19 13:49:34 +00:00
Philippe Canal
51a176173b Use llvm::isa rathen that QualType::isXYZ as the later reports about the canonical type while we are interested in the direct type. Make sure to recurse if needed after removing the typedefs
git-svn-id: http://root.cern.ch/svn/root/trunk@46675 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-19 13:24:46 +00:00
Vassil Vassilev
d916876642 RunFunction takes FunctionDecl as an argument. Thus it avoids a lookup and
simplifies the implementation.


git-svn-id: http://root.cern.ch/svn/root/trunk@46673 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-19 11:56:52 +00:00
Vassil Vassilev
24cdb599f7 In many modes (eg like evaluate and value print) we need to find the last
expression in the wrapper function and do things with it. In some cases we 
must consider variable declarations as expressions (eg. int i = 5;) and take
the l-value and build a DeclRefExpr and return it.
Extract that common functionality out in a utility function and call it whenever
needed.


git-svn-id: http://root.cern.ch/svn/root/trunk@46668 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-19 09:22:36 +00:00
Vassil Vassilev
ec129305af Centralize the unique name prefix (the names generated by the interpreter use it)
and provide utility function which checks if a decls has such name.


git-svn-id: http://root.cern.ch/svn/root/trunk@46593 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-17 08:52:24 +00:00
Vassil Vassilev
ae3a0dfdad * Factor out the duplicate code.
* Avoid alloc/dealloc of the entire body of the function (the CompoundStmt) by
using ugly iterator + offset tricks.


git-svn-id: http://root.cern.ch/svn/root/trunk@46553 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-15 16:57:53 +00:00
Vassil Vassilev
a67f0ebca8 * Add another overload taking DeclarationName as an argument. This is useful when
we have to deal with failed lookups.
* Improve documentation.


git-svn-id: http://root.cern.ch/svn/root/trunk@46394 27541ba8-7e3a-0410-8455-c3a389f83636
2012-10-09 09:41:26 +00:00
Axel Naumann
9e83d653a9 In clang's trunk, asking for the Type of a TemplateArgument is forbidden if it's not a Type.
Indentation.


git-svn-id: http://root.cern.ch/svn/root/trunk@46252 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-28 12:28:14 +00:00
Philippe Canal
c22cd67c6d Fix the handling of B<const Double32_t, const int>
git-svn-id: http://root.cern.ch/svn/root/trunk@46192 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-26 08:01:21 +00:00
Philippe Canal
22952b8f72 Improve the handling of qualified named (i.e. elaborated type) especially when they also have
qualifiers (const std::string) in template arguments.
Fix the handling of default template argument that are not a type.

No longer drop any default argument except for STL collection (as needed by ROOT I/O).

This fixes support of (for example):
#pragma link C++ class std::pair<const std::string,int>+;
#pragma link C++ class ROOT::TArrayProxy<ROOT::TArrayType<double> >+;
 (which is ROOT::TArrayProxy<ROOT::TArrayType<double,0> >)


git-svn-id: http://root.cern.ch/svn/root/trunk@46188 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-25 19:35:24 +00:00
Philippe Canal
f191b6097c fix typo
git-svn-id: http://root.cern.ch/svn/root/trunk@46132 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-22 21:56:36 +00:00
Philippe Canal
fcf8c7fa66 In Transform::GetPartiallyDesugaredType also handle the case where
we are given a qualified typedef (the first node is 'Elaborated' rather
than Typedef), for example ROOT::Math::TDataPoint1D.

Also properly handle the case when the scope of the typedef's underlying
type and the scope of the typedef are different.  In the case their are
the same, keeping the version given as input (after 'normalizing).

Prevent the desugaring of _any_ typedef declared within the std namespace
(for now hardcoded in AST.cpp) to avoid exposing to ROOT implementation
details (this is a kind of replacement for CINT's customized STL header)


git-svn-id: http://root.cern.ch/svn/root/trunk@46131 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-22 21:30:24 +00:00
Philippe Canal
d754a4e262 Do not use standard desugaring if we need to have the full qualification
git-svn-id: http://root.cern.ch/svn/root/trunk@46047 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-19 12:39:06 +00:00
Axel Naumann
05ba8a3a07 Move cling from cint/ to interpreter/ (Will add a "we have moved" readme to cint/cling.)
git-svn-id: http://root.cern.ch/svn/root/trunk@45844 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-05 09:37:39 +00:00