LineTable

internal object LineTable

Which method owns a source line, read from the class file's LineNumberTable — the descriptor a StackTraceElement does not carry, and the only thing that separates same-named obf overloads.

Only spigot gets here (every other namespace answers owner-free), and there the jar's table is the live one: ByteBuddy advice leaves the target method's lines untouched, and Mixin offsets merged code into a range ABOVE the target's instead of renumbering it — added methods included, a line table being per-method to begin with. A line that matches nothing yields null, so an unknown rewriter costs the obf name we already showed.

Properties

Link copied to clipboard

Parsed per owner, and only for one that actually reached an ambiguous frame.

Functions

Link copied to clipboard
fun descAt(internalOwner: String, method: String, line: Int): String?

The descriptor of the method named method whose line table holds line, or null.

Link copied to clipboard
private fun key(method: String, line: Int): String
Link copied to clipboard
private fun parse(internalOwner: String): Map<String, String>

Bridges are skipped: a covariant pair shares one line, so it is the one shape that collides here. Failure caches as empty rather than retrying per frame — an unreadable class stays unreadable.