3aaf147e3e
Removes all unsafe operations from go-toml, making the codebase fully safe Go code. The internal/danger package that contained unsafe operations has been deleted. Changes: - Replace pointer-based node navigation with index-based navigation - Node.next and Node.child now store absolute indices into the backing nodes slice instead of relative offsets - Add nodes pointer to Node and Iterator for safe navigation - Replace danger.TypeID with reflect.Type for cache keys - Delete internal/danger package entirely Performance overhead is under 10% compared to the unsafe version, which is acceptable for the safety and maintainability benefits. [Cursor][claude-sonnet-4-20250514]
22 lines
553 B
Go
22 lines
553 B
Go
package tracker
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/pelletier/go-toml/v2/internal/assert"
|
|
)
|
|
|
|
func TestEntrySize(t *testing.T) {
|
|
// Validate no regression on the size of entry{}. This is a critical bit for
|
|
// performance of unmarshaling documents. Should only be increased with care
|
|
// and a very good reason.
|
|
maxExpectedEntrySize := 48
|
|
entrySize := int(reflect.TypeOf(entry{}).Size())
|
|
assert.True(t,
|
|
entrySize <= maxExpectedEntrySize,
|
|
"Expected entry to be less than or equal to %d, got: %d",
|
|
maxExpectedEntrySize, entrySize,
|
|
)
|
|
}
|