An InformationRecord instance is created when calling Write-Host,
but many of the properties aren't read.
It can be expensive to initialize some of those properties, so
the code has been changed to initialize those properties on first access.
When running on systems that do not support a virtual terminal,
the tests was incorrectly assuming escape sequences were removed.
The fix is to expect different results depending on whether or not
the host supports virtual terminal mode.
This exception is no longer used by PowerShell, so it has been removed.
It is a public api, so removing it risks breaking somebody. Nobody has any reason
to catch or throw this exception, so it seems safe to remove, but I decided to
be conservative and keep it for Windows PowerShell. It seems safe enough to remove
in Nano.
MaximumErrorCount is fixed at 256 (we may want to consider an environment variable to make this bigger)
MaximumAliasCount, MaximumDriveCount, MaximumFunctionCount, and MaximumVariableCount have been removed.
This is a workaround for a full clr issue that causes a hang when calling PowerShell from ruby.
They use named pipes instead of anonymous pipes, and for some reason that triggers the hang.
PowerShell can be started with input redirected in different scenarios.
`powershell -Command -` is one scenario where commands are sent to
PowerShell, but this is not a interactive shell scenario, it's really
a server to run commands from some other process.
`powershell -File -` or just regular redirected input means PowerShell
is an interactive shell, but command line editing must be done via
the redirected standard input handle instead of interacting directly
with a console handle.
In this scenario, we want to provide a good editing experience. Today,
we provide the bare minimum, supporting backspace but no cursor movement.
The bug here is that backspace was treated as a backspace in the server mode
but should not have been.
Remoting apparently depends on the names of private fields
not changing between versions of PowerShell.
Because of this, these refactorings broke remoting:
* rename private fields
* convert to auto-property
We use a lot of reflection, and when you rename a member (e.g. when running
the code formatter), it doesn't detect references where you're using reflection.
By using nameof(), we can now find these references (e.g. a build break) instead
of failing at runtime.
CHAR_INFO has 4 bits for ConsoleColor. On Linux, ConsoleColor is sometimes -1 (unknown),
which is a 17th possible value for ConsoleColor, which can't be represented in CHAR_INFO.
To fix this, I've introduced a bigger type that gets converted to CHAR_INFO when necessary.
The -Qualifier code for Split-Path made some incorrect assumptions:
* That a path only referred to the file system
* That drives cannot be used on Unix systems
These assumptions were both wrong, so I've reverted the change so we
do not have any Unix specific code in Split-Path now.
Fixes#1176