Archive
Archive for December, 2016
Awesome and Custom
December 25, 2016
1 comment
While toying with roles to find a better example for our class tutorial I believe to have stumbled onto a nice idiom. And so I wrote:
role Unitish[$unit = fail('Please provide a SI unit quantifier as a Parameter to the role Unitish')]
What leads to the following error message when the role argument is missing.
Could not instantiate role 'Unitish': Please provide a SI unit quantifier as a Parameter to the role Unitish in any at gen/moar/Metamodel.nqp line 2441 in any protect at gen/moar/stage2/NQPCORE.setting line 802 in any specialize at gen/moar/Metamodel.nqp line 2428 in any specialize at gen/moar/Metamodel.nqp line 2644 in any compose at gen/moar/Metamodel.nqp line 3010 in any generate_mixin at gen/moar/Metamodel.nqp line 1319 in any at gen/moar/Metamodel.nqp line 1235 in any mixin at gen/moar/Metamodel.nqp line 1270 in sub postfix:<s> at si.p6 line 12 in block <unit> at si.p6 line 14
So instead of letting the compiler say: “Dude, the module author wants you to provide a Str
!”, I can actually tell the user what the string should look like. The way I’m using it results in a runtime error. The does
-operator can be executed at compile time, providing awesome error messages the way you want.
Categories: Uncategorized