Previously, SumType incorrectly assumed that all members of an
inout(SumType) must themselves be inout-qualified. However, this is not
the case when one of those member types is declared as immutable, since
the qualifier combination `immutable inout` collapses to just
`immutable`.
Attempting to copy an immutable member type as though it were inout
caused matching to fail in SumType's copy constructor, due to the
following (gagged) error:
Error: `inout` on `return` means `inout` must be on a parameter as
well for `pure nothrow @nogc @safe inout(Storage)(ref immutable(Value)
value)`
The makefile explicitly targets `-m32omf`, `-m32mscoff` is built by
`win64.mak`. The recent update to support `MODEL=32omf` broke support
for `MODEL=32` which used to indicate the old default (32 + OMF).
Ignoring the external `MODEL` parameter here fixes several components
(e.g. the installer repo) that rely on the old behaviour. This hack is
acceptable IMO because `win32.mak` never supported 32 + MS COFF and
will become obsolete once `-m32omf` is removed.
When forward was moved to core.lifetime, a wrapper template was left in
std.functional for the sake of documentation. Since that wrapper
template is now undocumented, it no longer serves any purpose, and can
be removed.
Changed chooseAmong implementation from recursive to linear.
Signed-off-by: Nicholas Wilson <thewilsonator@users.noreply.github.com>
Merged-on-behalf-of: Nicholas Wilson <thewilsonator@users.noreply.github.com>
The previous assumption was MODEL=32 because MODEL=32mscoff is built by
win64.mak.
Verified locally because Azure requires further changes outside of this
repository.
Also expose 'parent' when it's abstract
Signed-off-by: Nicholas Wilson <thewilsonator@users.noreply.github.com>
Merged-on-behalf-of: Nicholas Wilson <thewilsonator@users.noreply.github.com>
add isSomeFiniteCharInputRange as simplification
Signed-off-by: Nicholas Wilson <thewilsonator@users.noreply.github.com>
Merged-on-behalf-of: Nicholas Wilson <thewilsonator@users.noreply.github.com>
combines the very common constraint
`isInputRange!R && !isInfinite!R && isSomeChar!(ElementEncodingType!R)`
and adds a bunch of documentation with examples for users to understand
it better. This should lower the neccessary needed technical insight to
read basic docs, especially std.path and std.file docs.
Copy ctors are still buggy, so unconditionally adding one for Nullable
is everything but a non-breaking change (and was added in the 2.098.1
point release).
when the code is `!isOpen` it now means:
- in exception documentation it's now always saying "not opened" (or similar, it's clear the file is in error state in that case)
- in general documentation it now always says "closed or not yet opened" (to avoid mistaking it with eof)
- in runtime error messages it always says "unopened"
Some types can be compared with 'null', for example arrays and
pointers. Not complying with this creates a difference between the
Phobo's Variant implementation and the core language behaviors which can
lead to some confusion.
Refers: #22647
Signed-off-by: João Lourenço <jlourenco5691@gmail.com>