Change a l public declarations to the `package` access level, accept for:
- The `LanguageServerProtocol` module
- The `BuildServerProtocol` module
- `InProcessClient.InProcessSourceKitLSPClient`
- `LanguageServerProtocolJSONRPC` (I would like to create a more ergonomic API for this like `InProcessSourceKitLSPClient` in the future, but for now, we’ll leave it public)
Unfortunately, our pattern of marking functions as `@_spi(Testing) public` no longer works with the `package` access level because declarations at the `package` access level cannot be marked as SPI. I have decided to just mark these functions as `package`. Alternatives would be:
- Add an underscore to these functions, like we did for functions exposed for testing before the introduction of `SPI`
- Use `@testable` import in the test targets and mark the methods as `internal`
Resolves#1315
rdar://128295618
------
Simplify `SemanticRefactoring` with new `Refactoring` protocol to handle sourcekitd requests
Create and implement `ExpandMacroCommand` while temporarily storing generated expansions.
Create test case `testFreestandingMacroExpansion`
Manually inject `ExpandMacroCommand` into `retrieveRefactorCodeActions` upon an "Inline Macro" from sourcekitd
Address Review Comments
Mark `@_spi(Testing) public` for `MacroExpansionEdit`
Address Review Comments
Create separate directory for each buffer with its name, containing a generated file named as the source file along with position range
Fixed generated macro expansion file extension not recognised, by switching to file names which don't contain fragments
Address Review Comments
Wrap the entire feature under `ExperimentalFeatures`
Address Review Comments
Make Swift Lint Pass
Fix Windows Build not passing