Files
sdk/pkg/analysis_server/test/services/refactoring
Sam Rawlins 4c689ca7f5 das: Extract CorrectionUtils.getTypeSource; tidy ExtractMethodRefactoring
This is mostly a very tidy extraction of `getTypeSource`. This method
relied on a handful of helper functions, all of which were _only_
present in order to help `getTypeSource`. This method also does not
rely on `_buffer` or `eol`. And it is only used by one piece of code,
`extract_method`. Almost a slam dunk!

However, there appeared some strange caveats that I must document
here:

CorrectionUtils also featured two mutable fields, `targetClassElement`
and `targetExecutableElement`. Theoretically, these fields are
supposed to be set before calling `getTypeSource`, to help understand
whether a TypeParameter will be visible when extracting a method, or
something like that. But it appears to be totally broken:

* The singular caller of `getTypeSource`, `ExtractMethodRefactoring`,
  _never sets those fields_.
* Two other pieces of code, the AddTypeAnnotation fix, and the
  CreateField, CreateFunction, and CreateOverrides fixes, all set the
  fields, but _never call getTypeSource_.

Since this all looked like just very stale / rotten code, I removed
everything which looks to be dead: `targetClassElement` and
`targetExecutableElement`, and lo and behold: no tests fail! I've kept
those things deleted, and added a TODO for TypeParameters.

Lastly, since I was trying to figure out ExtractMethodRefactoring, I
tidied it up:

* Make it final
* Rename `ERROR_EXITS` to `errorExits`
* Privatize `searchEngine`, `resolveResult`, `selectionOffset`,
  `selectionLength`, `librariesToImport`, and `variableType`.
* Both `selectionRange` and `utils` could be final as they were set
  in the constructor body, so move that to initializers, make final,
  and make private.

Change-Id: Ia3fb948e5424971eb4250e711c179707552ad8aa
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/358663
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2024-03-21 17:07:43 +00:00
..