Fix nil pointer error when using skip_obsolete with list keys #1039
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.
Fixes a bug where using
skip_obsoleteorskip_deprecatedflags causes a nil pointer dereference during code generation for YANG lists with obsolete keys (#1037).When
skip_obsoleteis enabled, obsolete fields are filtered out during IR generation ingetOrderedDirDetails, removing them fromParsedDirectory.Fields. However,ParsedDirectory.ListKeysretains all keys (including obsolete ones) since it's populated earlier inbuildDirectoryDefinitions(before filtering occurs).This creates a mismatch when
writeGoStructcallsgenerateGetListKey.generateGetListKeyiterates over all keys inListKeys, so it tries to access obsolete keys innameMap, causing nil pointer dereference.nameMap/definedNameMapis built from filteredFields, so it only contains non-obsolete keys, whileListKeyscontains all keys, including obsolete ones.To fix this, I added a safety check in
generateGetListKeyto skip keys that don't exist innameMap: