Sönke Ludwig
aa6b78783e
Merge pull request #27 from s-ludwig/detect_invalid_visitors
...
Detect types that are obviously not function literals.
2019-02-24 15:00:34 +01:00
Sönke Ludwig
141a4e290a
Detect types that are obviously not function literals.
...
This avoids extremely cryptic error messages with no pointer to the origin of the problem.
2019-02-24 14:24:37 +01:00
Sönke Ludwig
c1e3e5a6a2
Merge pull request #26 from s-ludwig/non_copyable_types
...
Fix using non-copyable types with TaggedUnion.
2019-02-24 10:53:32 +01:00
Sönke Ludwig
953198a293
Fix using non-copyable types with TaggedUnion.
2019-02-23 21:49:08 +01:00
Leonid Kramer
995c0779a9
Merge pull request #25 from s-ludwig/tagged_union_improvements
...
Tagged union improvements
2019-02-23 19:27:39 +01:00
Sönke Ludwig
7145693748
Work around name lookup issue on DMD < 2.081.0.
2019-02-23 18:18:39 +01:00
Sönke Ludwig
56d50fd56c
Work around Phobos issue 19696.
2019-02-23 18:18:22 +01:00
Sönke Ludwig
6589bac23a
Add TaggedUnion.hasType!T.
2019-02-23 16:16:20 +01:00
Sönke Ludwig
a52958ef01
Work around ReplaceType compile error issue.
...
ReplaceType doesn't work for "class C : D!C {}"
2019-02-23 15:56:59 +01:00
Sönke Ludwig
b766f62d43
Actually check for superfluous handlers.
2019-02-23 15:55:57 +01:00
Leonid Kramer
cb1b000157
Merge pull request #24 from s-ludwig/taggedalgebraic_self_referential
...
Make self-referential types work with TaggedAlgebraic, too.
2019-02-22 20:02:29 +01:00
Sönke Ludwig
ab25b89fb1
Make self-referential types work with TaggedAlgebraic, too.
...
Also removes some unused template code.
2019-02-22 19:28:09 +01:00
Leonid Kramer
2b83618119
Merge pull request #23 from s-ludwig/self_referential_types
...
Add support for self-referential types using "This" placeholder.
2019-02-22 17:47:41 +01:00
Sönke Ludwig
f4b621963c
Add support for self-referential types using "This" placeholder.
2019-02-22 17:34:08 +01:00
Leonid Kramer
3fc701edba
Merge pull request #22 from s-ludwig/union_api_refactor
...
Refactor the TaggedUnion API.
2019-02-22 16:37:48 +01:00
Sönke Ludwig
7ede6bf033
Refactor the TaggedUnion API.
...
- Add constructors and assignment operators for unique types
- Rename field getters to fooValue and value!() to enable sane property syntax and to avoid confusion when modifying the returned reference
- Fix misnomer "isUnionType" instead of "isUnitType"
2019-02-22 16:11:21 +01:00
Leonid Kramer
d7639cdd54
Merge pull request #20 from s-ludwig/taggedunion
...
Implement TaggedUnion and corresponding visit/tryVisit support
2019-02-22 14:43:46 +01:00
Sönke Ludwig
1c88c3c65d
Add template constraint to visit/tryVisit.
2019-02-22 12:22:38 +01:00
Sönke Ludwig
2d9557dc21
Update README.
...
Adds a TaggedUnion example and adds a section for supported compiler versions.
2019-02-22 11:30:31 +01:00
Sönke Ludwig
59826ad719
Error out on extraneous visitors.
2019-02-22 11:14:56 +01:00
Sönke Ludwig
194e0dca41
Implement a simple version of visit/tryVisit for TaggedUnion.
...
See #3 .
2019-02-22 03:08:55 +01:00
Sönke Ludwig
88308fcba4
Split up TaggedUnion and TaggedAlgebraic into separate modules.
2019-02-22 03:08:55 +01:00
Sönke Ludwig
eb8accd63c
Test on the latest compiler versions and drop support for DMD 2.074.1 and below.
2019-02-22 03:08:55 +01:00
Sönke Ludwig
f7a03cdb02
Add enum support to TaggedUnion.
...
Allows to define the accepted types using an annotated enum instead of a struct/union.
2019-02-22 03:08:55 +01:00
Sönke Ludwig
39ebd11570
Use AliasSeq instead of TypeTuple.
2019-02-22 03:08:54 +01:00
Sönke Ludwig
78ca6e0cb5
Reduce reliance on typeof(U.field) to prepare for supporting U==enum.
2019-02-22 03:08:54 +01:00
Sönke Ludwig
95c2919d2b
Introduce TaggedUnion as the low-level basis for TaggedAlgebraic.
...
TaggedUnion has a number of convenience features compared to TaggedAlgebraic that are possible because of the missing dynamic dispatch functionality. If the latter is not required, TaggedUnion provides a much less complex and more robust way to store a fixed set of types/kinds.
2019-02-22 03:08:54 +01:00
Sönke Ludwig
b78003531e
Merge pull request #21 from s-ludwig/issue_18_opbinary_ambiguity
...
Don't define ambiguous opBinary/opBinaryRight overloads
2019-02-22 03:07:41 +01:00
Sönke Ludwig
8ee1afd7f2
Don't define ambiguous opBinary/opBinaryRight overloads. Fixes #18 .
2019-02-22 03:02:50 +01:00
Sönke Ludwig
a61edbea4a
Merge pull request #17 from s-ludwig/nogc_get
...
Make get!T nogc.
2018-10-22 23:59:37 +02:00
Sönke Ludwig
6a08e1fea4
Make get!T nogc.
2018-10-21 21:37:46 +02:00
Sönke Ludwig
c275902b78
Fix deprecation warning.
2018-10-06 10:38:32 +02:00
Sönke Ludwig
debe058a7b
Merge pull request #16 from drug007/patch-1
...
String literal reduces memory allocation.
2018-09-30 10:15:42 +02:00
drug007
2d3df68333
String literal reduces memory allocation.
...
`-profile=gc` showed that `assert` allocated memory for every iteration.
2018-09-20 10:32:25 +03:00
Sönke Ludwig
f963694522
Work around linker error for "dub test" in dependent projects.
2018-03-20 17:28:21 +01:00
Sönke Ludwig
fbdc8583b7
Update compiler test list.
...
Tests on DMD 2.079.0 and LDC 1.8.0 and drops DMD <2.071.x.
2018-03-20 16:58:08 +01:00
Sönke Ludwig
2a7bd18695
Allow TA(val, kind) construction for unique types, too.
2018-03-20 16:37:52 +01:00
Sönke Ludwig
5fc3e16a83
Enable opEquals between two TaggedAlgebraic!T values.
2018-03-20 16:33:13 +01:00
Sönke Ludwig
c7f4533d17
Fix compilation errors caused by swap().
2018-03-20 16:21:36 +01:00
Sönke Ludwig
100714d7b8
Add .gitignore.
2018-01-18 00:53:16 +01:00
Sönke Ludwig
445f1ef365
Fix test for frontend versions < 2.072.x.
2018-01-18 00:44:33 +01:00
Sönke Ludwig
3709a2298f
Add test and close #8 .
...
Was fixed by 513729bf59
for compiler frontend versions >= 2.072.x.
2018-01-18 00:31:00 +01:00
Sönke Ludwig
9b13f08a25
Fix compile error for overloaded TaggedAlgebraic returns. Fixes #13 .
2018-01-18 00:29:16 +01:00
Sönke Ludwig
4438b542b2
Merge pull request #14 from s-ludwig/codecov
...
Switch to codecov.io
2018-01-18 00:10:28 +01:00
Sönke Ludwig
f9c7d444e6
Disable TypeOf on frontent versions < 2.072.x
2018-01-18 00:06:06 +01:00
Sönke Ludwig
f6e90bb0c9
Switch to codecov.io.
2018-01-18 00:02:06 +01:00
Sönke Ludwig
a80b42bcc1
Test on DMD 2.078.0 and LDC 1.7.0.
2018-01-17 23:55:17 +01:00
Sönke Ludwig
f87b378cf3
Add the TypeOf template.
2018-01-17 23:53:57 +01:00
Sönke Ludwig
de7df6bfeb
Fix hasType!T when called with rvalues.
2017-12-07 20:41:06 +01:00
Sönke Ludwig
47800db273
Test DMD 2.077.1 and LDC 1.6.0.
2017-12-07 20:30:07 +01:00