Section 6.9.1
Scope of a type

In 6.9, at the end of the subclause, ADD the following paragraph

 

The scope of a data type identifier shall include the hierarchical instance scope.  This means that each instance with a user-defined type declared inside the instance creates a unique type.  To have type matching or equivalence among multiple instances of the same module, interface or program, a class, enum, unpacked structure or unpacked union type must be declared at a higher level in the compilation unit scope than the declaration of the module, interface or program, or imported from a package.  For type matching, this is true even for packed structure and packed union types.

 

In 6.9.1, REPLACE

 

8) A typedef for an enum, struct, union, or class type declared in a package always matches itself, regardless of the scope into which the type is imported. The scope of a type identifier includes the hierarchical instance scope. This means that each instance with a user-defined type declared inside the instance creates a unique type. To have type matching among multiple instances of the same module, interface, or program, a type must be declared at higher level in the compilation unit scope than the declaration of the module, interface or program, or imported from a package.

 

WITH

 

8) A typedef for an enum, struct, union, or class type declared in a package always matches itself, regardless of the scope into which the type is imported. The scope of a type identifier includes the hierarchical instance scope. This means that each instance with a user-defined type declared inside the instance creates a unique type. To have type matching among multiple instances of the same module, interface, or program, a type must be declared at higher level in the compilation unit scope than the declaration of the module, interface or program, or imported from a package.

 

In 6.9.2, REPLACE

 

8) A typedef for an enum, unpacked struct, or unpacked union, or a class type declared in a package is always equivalent to itself, regardless of the scope where the type is imported.

 

The scope of a type identifier includes the hierarchical instance scope. This means that each instance with user-defined types declared inside the instance creates a unique type. To have type equivalence among multiple instances of the same module, interface, or program, a type must be declared at higher level in the compilation unit scope than the declaration of the module, interface or program, or imported from a package.

WITH

 

8) A typedef for an enum, unpacked struct, or unpacked union, or a class type declared in a package is always equivalent to itself, regardless of the scope where the type is imported.

 

The scope of a type identifier includes the hierarchical instance scope. This means that each instance with user-defined types declared inside the instance creates a unique type. To have type equivalence among multiple instances of the same module, interface, or program, a type must be declared at higher level in the compilation unit scope than the declaration of the module, interface or program, or imported from a package.