Subject: Re: [Boost-build] Question about calling rules from within a generator
From: Tom Brown (tabsoftwareconsulting_at_[hidden])
Date: 2019-04-02 01:36:02
On 4/1/19 5:39 PM, Steven Watanabe via Boost-build wrote:
> On 4/1/19 3:11 PM, Tom Brown via Boost-build wrote:
>> On 4/1/19 4:44 PM, Steven Watanabe via Boost-build wrote:
>>> On 4/1/19 2:31 PM, Thomas Brown via Boost-build wrote:
>>>> I was trying to use the assert module to check various assumptions
>>>> within my custom generator class when I found it is not possible to
>>>> call those rules.Â This is also true of other user-defined rules
>>>> within the same file as the generator.Â Is this expected?
>>> Â Â You need to import them inside the class.
>>> Rules from the outer module are not automatically
>>> visible within the class.Â A class is an independent
>>> module that has no semantic relationship to the
>>> context in which it is defined.
I now understand what you meant by this. The import has to happen
within the class, not within the rule within the class. That was my
>> Thanks for your help!Â This worked for `errors` in my example, but not
>> for `assert`.
> I don't see `errors` anywhere in the code you posted?
I tried that after your first reply (incorrectly, it happens).
>> Â It looks like `errors` only imports `sequence` within a
>> single rule,
> How is that relevant?
It's not, I was trying to understand why assert and error might work
differently when imported (but they don't work differently, they work
exactly the same).
> You're not using assert correctly in g.jam.
> It takes a rule to call, not just a list.
This is true, but the real mistake I made was that I was importing
assert either at the beginning of the file or within a rule within a
class, not within the class.
You've helped me understand better what's going on. I'm still not very
sure where an import can be done and what its scope is, but I can at
least continue what I was trying to.
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk