Fix errors due to new ref safety rules. (#169) #181
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.
Due to new ref safety rules, three differents errors appears in the NmeaTagBlockParser:
Error CS8347 "Cannot use a result of 'AdvanceToNextField(ref ReadOnlySpan)' in this context because it may expose variables referenced by parameter 'source' outside of their declaration scope".
To fix this error I had added the
scoped
keyword in the source parameter as mentioned in Issue Update for new ref safety rules #169Error CS8350 "This combination of arguments to 'NmeaTagBlockParser.ParseSentenceGrouping(ref ReadOnlySpan)' is disallowed because it may expose variables referenced by parameter 'this' outside of their declaration scope".
To fix this error I set the method to
static
and removethis
to call the method.Error CS8352 "Cannot use variable 'remaining' in this context because it may expose referenced variables outside of their declaration scope".
To fix this error I changed the signature of the GetEnd method. Now the source parameter is no longer
in
butref
. To resolve the problem of scope, theremaining
parameter was removed, then the method directly update the source.In ParseDelimitedInt and ParseDelimitedLong I capture the original source to modify the
source
in GetEnd and use the original source in Utf8Parser.TryParse.Note: Some generated code are updated when I ran the tests.
This PR fixes the issue #169.