600fccb9bb
In order for an analyzer quick fix to aid the user in correcting exhaustiveness errors, it needs to know not just the text of the witness pattern that needs to be inserted, but also which elements are referenced by the identifiers in that pattern. This will allow it to add in imports if the user's code doesn't yet import the necessary library, or insert import prefixes in the case where the user is already importing the necessary library in a prefixed fashion. To reduce the effect on the exhaustiveness logic (which was designed with the intention of building up the witness pattern into a StringBuffer), we introduce a new type, `DartTemplateBuffer`, which behaves similarly to StringBuffer but also captures the necessary semantic information so that the analyzer will be able to fix up imports in an appropriate way. This change is mostly isolated to the _fe_analyzer_shared package; it doesn't add the necessary logic to the analyzer to capture the elements; it simply plumbs them up to the API boundary between the packages. Future CLs will add the necessary analyzer logic to make use of the information. Change-Id: I7c030fc49a2510acbefd6aeb567e0e7b7102855a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/296385 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Nate Bosch <nbosch@google.com>