This is an archive of the discontinued LLVM Phabricator instance.

[lldb] Remove assumption from Clang-based data formatters that their types are in the scratch AST
ClosedPublic

Authored by teemperor on Dec 7 2020, 5:19 AM.

Details

Summary

Several data formatters assume their types are in the Target's scratch AST and build
new types from that scratch AST instance. However, types from different ASTs shouldn't be
mixed, so this (unchecked) assumption may lead to problems if we ever have more than
one scratch AST or someone somehow invokes data formatters on a type that are not in the scratch AST.

Instead we can use in all the formatters just the TypeSystem of the type we're formatting. That's much
simpler and avoids all the headache of finding the right TypeSystem that matches the one of the formatted
type.

Right now LLDB only has one scratch TypeSystemClang instance and we format only types that are
in the scratch AST, so this doesn't change anything in the current way LLDB works. The intention here
is to allow follow up refactorings that introduce multiple scratch ASTs with the same Target.

Diff Detail