Bug 20030 – Variant concat of char and string doesn't work

Status
NEW
Severity
normal
Priority
P3
Component
phobos
Product
D
Version
D2
Platform
x86
OS
All
Creation time
2019-07-05T11:25:16Z
Last change time
2024-12-01T16:35:11Z
Assigned to
No Owner
Creator
Simen Kjaeraas
Moved to GitHub: phobos#9774 →

Comments

Comment #0 by simen.kjaras — 2019-07-05T11:25:16Z
The following code throws a VariantException complaining about different types (char and immutable(char)[]): unittest { import std.variant; Variant v = ""; v ~= 'a'; } It's correct in some ways, but clearly a more useful behavior would be to concat the string and char and move on.
Comment #1 by shove — 2019-07-08T02:10:01Z
(In reply to Simen Kjaeraas from comment #0) > The following code throws a VariantException complaining about different > types (char and immutable(char)[]): > > unittest { > import std.variant; > Variant v = ""; > v ~= 'a'; > } > > It's correct in some ways, but clearly a more useful behavior would be to > concat the string and char and move on. This shouldn't be a bug. Variant's design has strict restrictions on type qualifiers, because string = immutable (char) [], so the ~ operator restricts char. v ~= cast (immutable char)'a'; is possible because its qualifier is consistent. For these limitations, you can see the unittest: https://github.com/dlang/phobos/blob/master/std/variant.d#L2655 There are many anomaly collection behaviors for qualifier inconsistencies. I don't know whether it was intentionally designed to do this, or because it was temporarily done for the sake of simplicity. I think, if there are no other factors, it would be better to fix the variant implementation and remove these restrictions.
Comment #2 by robert.schadek — 2024-12-01T16:35:11Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/phobos/issues/9774 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB