Firstly, the import is not textual, for example, #include in C. It simply makes types in other available modules without qualifying them using the name of its module.
X.680 13.1 Note 4 specifically refers to your question:
The TagDefault value for the module definition affects only those types that are explicitly defined in the module. This does not affect the interpretation of imported types.
Note, however, that if in module B (where foo was imported), you write:
Bar :: = [APPLICATION 5] Foo
This will be equivalent to:
Bar :: = [APPLICATION 5] IMPLICIT Foo
because in module B, where TaggedType is defined, the tag environment is implicit.
What the note means is that if in module A you had:
Foo :: = SEQUENCE {x [0] INTEGER}
then the tag in x is an EXPLICIT tag because the tag environment in module A was explicit and that Foo will always be processed this way even if it is imported into module B with its implicit tag environment.
Kevin
source share