# Coverage exclusion list.
# Each non-comment, non-empty line is a grep pattern matched against
# `go tool cover -func` output. Matching lines are excluded from the
# 100% coverage requirement. Adding an exclusion is a deliberate act.

# YAML support — symmetric to JSON, different unmarshaller
	Yaml
renderYaml

# File I/O — trivial os.ReadFile wrappers
ReadDiffFile
ReadPatchFile
ReadMergeFile
ReadJsonFile
ReadYamlFile

# CLI — flag parsing, stdin, serve, usage, github action
jd/main.go

# Option interface boilerplate — empty marker methods and deserialization
	isOption
	UnmarshalJSON
unmarshalAsString
unmarshalObjectKeyAs
options.go:.*	String

# Path interface markers — empty methods
	isPathElement

# Event type boilerplate — GetType, GetKey, String, SetDebug, debugLog
events.go:.*	GetType
events.go:.*	String
events.go:.*	SetDebug
events.go:.*	debugLog

# List differ debug/strategy boilerplate
list.go:.*	SetDebug
list.go:.*	debugLog
list.go:.*	String
list.go:.*	hasCommonElements

# Set/multiset/object event type boilerplate
set.go:.*	GetType
multiset.go:.*	GetType
multiset.go:.*	Diff
multiset.go:.*	Patch
object.go:.*	GetType
object.go:.*	GetKey
set.go:.*	Diff
set.go:.*	Patch

# Void node — raw() returns nil, trivial type checks
void.go:.*	raw

# Metadata — backward-compat plumbing, tested indirectly via round-trip tests
	isMetadataField
readMetadata
metadata.go:.*	merge
metadata.go:.*	Options

# DiffElement.Render — json.Marshal error on known-valid options + metadata skip logic
diff_write.go:52:	Render

# Defensive guards — unreachable default cases and panic paths.
# These protect against future mistakes in closed type switches
# but cannot be triggered by any current code path.

# processEvent default cases — closed event type switches
events.go:.*	processEvent
list.go:.*	processEvent
object.go:.*	processEvent
set.go:.*	ProcessEvents
multiset.go:.*	ProcessEvents

# json.Marshal panics/errors on known-valid JSON types
colorStringMarshal
renderJson
node_read.go:.*	unmarshal
diff_write.go:198:	Render

# readPointer — NewJsonNode error unreachable (accepts int and string)
readPointer

# generateListdiffEvents — defensive infinite-loop break guard
generateListdiffEvents

# patchErrUnsupportedPatchStrategy — only reachable with invalid strategy value
patchErrUnsupportedPatchStrategy

# ReadMergeString — NewPath(jsonArray{}) cannot error
ReadMergeString

# myersDiff — post-loop fallback unreachable (always finds edit path)
myersDiff

# newPathSetKeys — getOption nil sub-condition unreachable
newPathSetKeys

# Path.JsonNode / Path.next — default panic on closed PathElement type set
path.go:.*	JsonNode
path.go:.*	next

# NewOption — dead return after exhaustive single-key map switch
NewOption

# finalizeCurrentDiff — state guard always true at call sites
finalizeCurrentDiff

# object.go:patch — unsupported strategy default unreachable (closed enum)
object.go:.*	patch

