Skip module import if cursor info is missing module info #2746
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I believe setting
nextIsModuleImport = false
in current code is accidental bug, as it makes no sense to set it false if it already is false. It makes more sense if it is in inner if statements else block.At the moment it will lead to crash if you import module that SourceKit is unable to find info for.
With following code:
The execution goes like this:
import
token is found andnextIsModuleImport
is set totrue
identifier
token is found but if SourceKit returns empty dictionary the loop just continuesSwift
token infoo(error: Swift.Error)
is visited and if it haskey.modulename
source.lang.swift.ref.module
it is falsely considered as an import statement.unusedImports
contentsNSString.range(of: "import \(module)\n")
returns NSRange with location NSNotFound...
func correct(file: File, compilerArguments: [String]) -> [Correction]
will throw NSException when attempting to replace this range.