Closed mrlacey closed 2 years ago
It appears that the error originates here, an ArgumentException
with the message "An item with the same key has already been added."
Cobbling together a quick snippet to find which items caused it:
data.Left.Left.Left.Right.GroupBy(x => x.Attribute.Id).Where(x => x.Count() > 1).Select(x=> x.Key)
Looks like these items have duplicate sample Ids:
Since all samples across all experiments end up in the same registry and aren't separated by assembly, you can't use the same sample name more than once anywhere in labs.
@michael-hawker If this is the intended behavior, I'll move forward with the fixes:
ProjectTemplate
instead of TemplatedControl
(so this stops happening)I've fixed this issue locally and created a new analyzer with an improved error message, but I'm not able to write unit tests for that diagnostic error (yet).
This particular test requires you to apply a generator to an assembly, and check symbols in all referenced assemblies. Our unit tests here are, in their current form, lacking the flexibility required to pull this off.
I can do a small refactor and add the flexibility needed to accommodate this and future unit tests for our primary source generator (CommunityToolkit.Labs.Core.SourceGenerators
), but it'll take a few more hours of work.
Let's split out improving the source generator test suite until after launch.
As part of investigating #179
I created 2 new experiments with the classic version and 2 with the backed. I then generated the All solution. The All solution didn't compile. :( I then went to the main branch, cleaned everything, and generated two experiments there. I then regenerated the All solution. That doesn't compile either. So, I deleted one of the newly created experiments and regenerated the All solution. This did build. :)
So, it looks like there's something from #167 that causes All not to work when there are multiple experiments generated from the template. At a guess, I'd assume that something that needs to be unique in each experiment isn't. However, the error messages suggest that the source generators aren't producing the expected output and this is causing the Uno SourceGenerator to fail. This then leads to the other SG not running.