func()

in internal/fs/fs.go [501:548]


func (fs *fileSystem) checkInvariantsForLocalFileInodes() {
	// INVARIANT: For each k/v, v.Name() == k
	for k, v := range fs.localFileInodes {
		if !(v.Name() == k) {
			panic(fmt.Sprintf(
				"Unexpected name: \"%s\" vs. \"%s\"",
				v.Name(),
				k))
		}
	}

	// INVARIANT: For each value v, inodes[v.ID()] == v
	for _, v := range fs.localFileInodes {
		if fs.inodes[v.ID()] != v {
			panic(fmt.Sprintf(
				"Mismatch for ID %v: %v %v",
				v.ID(),
				fs.inodes[v.ID()],
				v))
		}
	}

	// INVARIANT: For each value v, v is not fileInode
	for _, v := range fs.localFileInodes {
		if _, ok := v.(*inode.FileInode); !ok {
			panic(fmt.Sprintf(
				"Unexpected file inode %d, type %T",
				v.ID(),
				v))
		}
	}

	// INVARIANT: For each f in inodes that is local fileInode
	//            localFileInodes[d.Name()] == f
	for _, in := range fs.inodes {
		fileInode, ok := in.(*inode.FileInode)

		if ok && fileInode.IsLocal() && !fileInode.IsUnlinked() {
			if !(fs.localFileInodes[in.Name()] == in) {
				panic(fmt.Sprintf(
					"localFileInodes mismatch: %q %v %v",
					in.Name(),
					fs.localFileInodes[in.Name()],
					in))
			}
		}
	}
}