Clarification of "processed" wrt including vs importing for compiler directives

Haven’t seen anything quite like this in the forum. I have a package file, and within this package I have defined a class. I have a few relevant helper `define macros defined in the package outside of the class.

In my testbench for the package, I use import my_pkg::*; however I’m also getting error messages that macros aren’t defined.

The LRM says the scope of a compiler directive extends from the point where it is processed across all files (22.2).

With this context, does importing not count as processed? I suspect I will need to `include my package as well as import the package (trying to be aware and careful about type identities across imports and including).

Macros get expanded before processing any SystemVerilog syntax (like an import).

Yeah it’s just substitution, and not ‘owned’ by the package and thus imported. It makes sense. Thanks.