Skip to content
Snippets Groups Projects
  • Chris Lattner's avatar
    Fix a long standard problem with clang retaining "too much" sugar · 810d330c
    Chris Lattner authored
    information about types.  We often print diagnostics where we say 
    "foo_t" is bad, but the user doesn't know how foo_t is declared 
    (because it is a typedef).  Fix this by expanding sugar when present
    in a diagnostic (and not one of a few special cases, like vectors).
    
    Before:
    t.m:5:2: error: invalid operands to binary expression ('typeof(P)' and 'typeof(F)')
     MAX(P, F);
     ^~~~~~~~~
    t.m:1:78: note: instantiated from:
    #define MAX(A,B)    ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
                                                                                 ^
    
    After:
    t.m:5:2: error: invalid operands to binary expression ('typeof(P)' (aka 'struct mystruct') and 'typeof(F)' (aka 'float'))
     MAX(P, F);
     ^~~~~~~~~
    t.m:1:78: note: instantiated from:
    #define MAX(A,B)    ({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __b : __a; })
                                                                                 ^
    
    llvm-svn: 65081
    810d330c
constructor-initializer.cpp 820 B