Have barrel which has two files:
// source/FooConversionWeight.mc
module Foo {
(:weight)
module Conversion {
module Weight {
function toLbs(kg) as Double {
return kg.toDouble() * 2.2046226218488d;
}
}
}
}
// source/FooConversionDistance.mc
module Foo {
(:dist)
module Conversion {
(:dist)
module Distance {
function toMiles(dist) {
return dist.toDouble() * 0.6213711922d;
}
}
}
}
Your barrel includes tests for these functions:
// TestConversionDistance.mc
using Toybox.Test as t;
using Toybox.Lang;
using Foo.Conversion.Distance as dist;
module Foo {
(:test)
function testDistance(logger) {
t.assertMessage(dist.toMiles(1) instanceof Lang.Double, "We converted into a double");
return true;
}
}
// TestConversionWeight.mc
using Toybox.Test as t;
using Toybox.Lang;
using Foo.Conversion.Weight as w;
module Foo {
(:test)
function testWeight(logger) {
t.assertMessage(w.toLbs(1) instanceof Lang.Double, "We converted into a double");
return true;
}
}
Your barrel manifest file exports these annotations.
Your consuming project uses this barrel, like so:
Foo = barrels/Foo.barrel base.Foo.annotations = weight;dist base.barrelPath = $(base.barrelPath);$(Foo)
Everything works fine and dandy when you run the testsuite.
Now remove one of the annotations from base.Foo.annotations, eg weight and run the testsuite:
Unknown module Foo.Conversion.Weight in using or import clause
The documentation of barrels say that in order to limit what you import you can only import certain annotations of a barrel. However, as soon as you do this the barrel becomes unusable. The testsuite cannot make the distinction that the module that is being used isn't/cannot be imported.