basically DiffMessage has a "take everything" ctor, which happens to match on type DiffMessage itslef, since the latter is obviously a Lumiera Forward Operator. Unfortunately the compiler now considers this "take everyting" ctor as copy constructor. Worse even, such a template generated ctor qualifies as "best match". The result was, when just returing a DiffMessage by value form a function, this erroneous "copy" operation was invoked, thus wrapping the existing implementation into a WrappedLumieraIterator. The only tangible symptom of this unwanted storage bloat was the fact that our already materialised diagnostics where seemingly "gone". Indee they weren't gone for real, just covered up under yet another layer of DiffMessage wrapping another Lumiera Forward Iterator |
||
|---|---|---|
| .. | ||
| ctrl | ||
| interact | ||
| test | ||
| abstract-tangible-test.cpp | ||
| bus-term-test.cpp | ||
| README | ||
| session-structure-mapping-test.cpp | ||
| tangible-update-test.cpp | ||
| test-gui-test.cpp | ||
GUI backbone tests The tests in this subtree are a bit special: they cover the generic and backbone internals of the Lumiera GTK GUI. They are linked against the complete GUI-module (gui plugin), and thus may use all related ABIs. Yet these tests are *deliberately* compiled without any GTK, GTKmm or SigC includes. This effectively rules out the use, even indirectly, of any GTK widgets and APIs -- forcing the covered GUI backbone entities to stay clean and generic at API level. This is a decision done on purpose. The concrete GUI framework technology shall be treated as an implementation detail. There is no point in writing tests which click buttons in the GUI -- better delegate any significant logic or functionality to GUI agnostic components. GUI is meant to be a presentation layer and must not develop intelligence on its own.