This is an archive of the discontinued LLVM Phabricator instance.

Various improvements to Clang MSVC Visualizers
ClosedPublic

Authored by mspertus on Jun 7 2019, 6:02 PM.

Details

Summary

This change adds/improves MSVC visualizers for many Clang types, including array types, trailing return types in function, deduction guides, a fix for OpaquePtr, etc. It also replaces all of the view(deref) with the "na" formatter, which is a better built-in natvis technique for doing the same thing. To see these in action, look at the attached image of my Watch Window

or as approximated by the ASCII rendering below

-    S.CurScope->DeclsInScope,na	{ [Small Mode] size=14, capacity=32 }
        [size]            14
        [capacity]        32
        [0]               {Identifier (__int128_t)}
        [1]               {Identifier (__uint128_t)}
        [2]               {Identifier (__NSConstantString)}
        [3]               {Identifier (__builtin_ms_va_list)}
        [4]               {Identifier (__builtin_va_list)}
        [5]               int i
        [6]               int j
        [7]               char a[5]
        [8]               template<typename T> void g(T t);
        [9]               template<typename T> struct Y;
        [10]              template<typename T> Y(T ) -> Y<T>;
        [11]              struct X
            DeclKind      CXXRecord
            Members
                [0]       implicit struct X
                [1]       Field {int si}
        [12]              void f(X x)
        [13]              int main(int argc, char * argv[])

Diff Detail

Event Timeline

mspertus created this revision.Jun 7 2019, 6:02 PM
aaron.ballman accepted this revision.Jun 17 2019, 8:48 AM

LGTM! Thank you for the fixes, Mike!

This revision is now accepted and ready to land.Jun 17 2019, 8:48 AM
This revision was automatically updated to reflect the committed changes.
Herald added a project: Restricted Project. · View Herald TranscriptJun 17 2019, 9:10 AM