}
// We've walked the function bodies, so we've seen everywhere a
- // variable might be reassigned or have it's address taken. Now we
+ // variable might be reassigned or have its address taken. Now we
// can decide whether closures should capture their free variables
// by value or reference.
for _, closure := range b.closures {
// t0 was simplified to t1.
// If t0 was a generic function, but the simplified signature t1 does
// not contain any type parameters anymore, the function is not generic
- // anymore. Remove it's type parameters. (go.dev/issue/59953)
+ // anymore. Remove its type parameters. (go.dev/issue/59953)
// Note that if t0 was a signature, t1 must be a signature, and t1
// can only be a generic signature if it originated from a generic
// function argument. Those signatures are never defined types and
ensures that a client sees the actual (run-time) type an untyped value would
have. It also permits type-checking of lhs shift operands "as if the shift
were not present": when updateExprType visits an untyped lhs shift operand
-and assigns it it's final type, that type must be an integer type, and a
+and assigns it its final type, that type must be an integer type, and a
constant lhs must be representable as an integer.
When an expression gets its final type, either on the way out from rawExpr,
// t0 was simplified to t1.
// If t0 was a generic function, but the simplified signature t1 does
// not contain any type parameters anymore, the function is not generic
- // anymore. Remove it's type parameters. (go.dev/issue/59953)
+ // anymore. Remove its type parameters. (go.dev/issue/59953)
// Note that if t0 was a signature, t1 must be a signature, and t1
// can only be a generic signature if it originated from a generic
// function argument. Those signatures are never defined types and
// HashTrieMap is an implementation of a concurrent hash-trie. The implementation
// is designed around frequent loads, but offers decent performance for stores
-// and deletes as well, especially if the map is larger. It's primary use-case is
+// and deletes as well, especially if the map is larger. Its primary use-case is
// the unique package, but can be used elsewhere as well.
type HashTrieMap[K, V comparable] struct {
root *indirect[K, V]
}
// chainedMutations is how many mutations are applied before the worker
-// resets the input to it's original state.
+// resets the input to its original state.
// NOTE: this number was picked without much thought. It is low enough that
// it seems to create a significant diversity in mutated inputs. We may want
// to consider looking into this more closely once we have a proper performance