hanchenye-llvm-project/clang/test/SemaCXX
Douglas Gregor 2e0757f319 Give Type::getDesugaredType a "for-display" mode that can apply more
heuristics to determine when it's useful to desugar a type for display
to the user. Introduce two C++-specific heuristics:

  - For a qualified type (like "foo::bar"), only produce a new
    desugred type if desugaring the qualified type ("bar", in this
    case) produces something interesting. For example, if "foo::bar"
    refers to a class named "bar", don't desugar. However, if
    "foo::bar" refers to a typedef of something else, desugar to that
    something else. This gives some useful desugaring such as
    "foo::bar (aka 'int')".
  - Don't desugar class template specialization types like
    "basic_string<char>" down to their underlying "class
    basic_string<char, char_traits<char>, allocator<char>>, etc.";
    it's better just to leave such types alone. 

Update diagnostics.html with some discussion and examples of type
preservation in C++, showing qualified names and class template
specialization types.

llvm-svn: 68207
2009-04-01 15:47:24 +00:00
..
__null.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
abstract.cpp Fix the bug that Eli noticed where we wouldn't look at function decls outside the class declaration. 2009-03-24 17:23:42 +00:00
access-base-class.cpp Revert Sebastian's rvalue patch (r67870) since it caused test failures in 2009-03-28 04:17:27 +00:00
access.cpp Set the access specifier for templates inside classes. 2009-03-26 01:24:28 +00:00
addr-of-overloaded-function.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
address-of.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
aggregate-initialization.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
anonymous-union.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
attr-unavailable.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
basic_lookup_argdep.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
blocks.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
bool.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
carbon.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
class-names.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
class.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
complex-overload.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
condition.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
const-cast.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
constructor-initializer.cpp Improve handling of base initializers. We now parse initializers in out of line decls, such as: 2009-03-25 02:58:17 +00:00
constructor-recovery.cpp Improve recovery when a constructor fails to type-check. Test case from Anders 2009-03-27 04:38:56 +00:00
constructor.cpp Improve recovery when a constructor fails to type-check. Test case from Anders 2009-03-27 04:38:56 +00:00
conversion-function.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
convert-to-bool.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
converting-constructor.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
copy-initialization.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
dcl_init_aggr.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
decl-expr-ambiguity.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
default1.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
default2.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
deleted-function.cpp Parse deleted function definitions and hook them up to Doug's machinery. 2009-03-24 22:27:57 +00:00
dependent-types.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
derived-to-base-ambig.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
destructor.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
direct-initializer.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
do-while-scope.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
dynamic-cast.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
elaborated-type-specifier.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
enum.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
expressions.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
fntype-decl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
function-redecl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
function-type-qual.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
functional-cast.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
i-c-e-cxx.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
implicit-int.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
inherit.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
linkage-spec.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
member-expr.cpp If the user is trying to apply the -> or . member reference operator 2009-03-27 06:00:30 +00:00
member-name-lookup.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
member-pointer.cpp Make sure to use RequireCompleteType rather than testing for 2009-03-24 19:52:54 +00:00
ms-exception-spec.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
namespace-alias.cpp Check in test for namespace aliases+using directives. 2009-03-31 05:47:19 +00:00
namespace.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
nested-name-spec.cpp Tighten the setAccess assert. We now allow AS_none if the decl contex is not a C++ record decl. 2009-03-25 23:38:06 +00:00
new-delete.cpp Make sure to use RequireCompleteType rather than testing for 2009-03-24 19:52:54 +00:00
no-implicit-builtin-decls.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overload-call-copycon.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overload-call.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overload-decl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overload-member-call.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overloaded-builtin-operators.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overloaded-operator-decl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
overloaded-operator.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
qualification-conversion.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
qualified-id-lookup.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
qualified-names-diag.cpp Give Type::getDesugaredType a "for-display" mode that can apply more 2009-04-01 15:47:24 +00:00
qualified-names-print.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
references.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
reinterpret-cast.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
reinterpret-fn-obj-pedantic.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
return-stack-addr.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
rval-references.cpp Reintroduce r67870 (rval ref overloading), since I can't reproduce any test failures on i386 or x86_64. If this fails for someone, please contact me. 2009-03-29 15:27:50 +00:00
statements.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
static-assert.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
static-cast.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
static-initializers.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
template-specialization.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
this.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
try-catch.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
type-convert-construct.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
type-dependent-exprs.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
type-traits.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
typedef-redecl.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
typeid.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
user-defined-conversions.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
using-directive.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
vararg-non-pod.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
virtuals.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
warn-for-var-in-else.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
wchar_t.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00