deleteResource removes a resource from p.Resources as well as all internal indexes.
(r *Resource)
| 931 | |
| 932 | // deleteResource removes a resource from p.Resources as well as all internal indexes. |
| 933 | func (p *Parser) deleteResource(r *Resource) { |
| 934 | // Remove from p.Resources |
| 935 | delete(p.Resources, r.Name.Normalized()) |
| 936 | |
| 937 | // Remove from p.insertedResources |
| 938 | foundInInserted := false |
| 939 | idx := slices.Index(p.insertedResources, r) |
| 940 | if idx >= 0 { |
| 941 | p.insertedResources = slices.Delete(p.insertedResources, idx, idx+1) |
| 942 | foundInInserted = true |
| 943 | } |
| 944 | |
| 945 | // Remove from p.updatedResources |
| 946 | if !foundInInserted { |
| 947 | idx = slices.Index(p.updatedResources, r) |
| 948 | if idx >= 0 { |
| 949 | p.updatedResources = slices.Delete(p.updatedResources, idx, idx+1) |
| 950 | } |
| 951 | } |
| 952 | |
| 953 | // Remove from p.resourcesForPath |
| 954 | for _, path := range r.Paths { |
| 955 | rs := p.resourcesForPath[path] |
| 956 | idx := slices.Index(rs, r) |
| 957 | if idx < 0 { |
| 958 | panic(fmt.Errorf("resource %q not found in resourcesForPath", r.Name)) |
| 959 | } |
| 960 | if len(rs) == 1 { |
| 961 | delete(p.resourcesForPath, path) |
| 962 | } else { |
| 963 | p.resourcesForPath[path] = slices.Delete(rs, idx, idx+1) |
| 964 | } |
| 965 | } |
| 966 | |
| 967 | // Remove pointers indexed in resourcesForAmbiguousRef |
| 968 | for _, ref := range r.rawRefs { |
| 969 | if !ambiguousRef(ref) { |
| 970 | continue |
| 971 | } |
| 972 | n := ref.Normalized() |
| 973 | rs := p.resourcesForAmbiguousRef[n] |
| 974 | idx := slices.Index(rs, r) |
| 975 | if idx < 0 { |
| 976 | panic(fmt.Errorf("resource %q not found in resourcesForAmbiguousRef for ref %q", r.Name, ref.Name)) |
| 977 | } |
| 978 | if len(rs) == 1 { |
| 979 | delete(p.resourcesForAmbiguousRef, n) |
| 980 | } else { |
| 981 | p.resourcesForAmbiguousRef[n] = slices.Delete(rs, idx, idx+1) |
| 982 | } |
| 983 | } |
| 984 | |
| 985 | // Remove from p.resourceNamesForDataPaths |
| 986 | for path, resources := range p.resourceNamesForDataPaths { |
| 987 | idx := slices.Index(resources, r.Name.Normalized()) |
| 988 | if idx < 0 { |
| 989 | continue |
| 990 | } |
no test coverage detected