$include_dir="/home/hyper-archives/boost-build/include"; include("$include_dir/msg-header.inc") ?>
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:
> AMDG
>
> 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
error.
>> 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.
Thanks,
Tom