<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/138911>138911</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] Missing diagnostic of access private component outside of the module
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following code:
```
module m
type Base
private
procedure(integer), nopass, pointer :: pp1
procedure(type(Base)), nopass, pointer :: pp2
end type
end module
program declaration003
use m
type(Base) :: b1
b1%pp1 => null()
b1%pp2 => null()
end
```
Both `pp1` and `pp2` are private components. They shall not be accessible outside of module `m`.
This usage should be diagnosed.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyEk8GOpDgMhp_GXKxGwSko6sCBrtq67a1fIBAXZBUSlIRe9duPQtHq6ZmRBiERQ_zb_4ejYjSTY-6gfoX6VqgtzT50N-UM2-t1ZlcMXn90V--i0RwwzYwPb63_37gJR68ZZA-ih0Yct-gXrzfLuIDoERHTx8r4qiIfcb7WYN5V2t-swY-st8BArXGJJw5AF6ArOr-qGPNq9flLwFxL9riu1TetL4FcC6jdq2WRv-nQocNO732C6PPy6SDbEv0a_BTUgppHq4JKxjshJIh-i989ftX91B8-2xwqoHpdKwR5A_kPus1aoDb3920D_XEDO_0LYRD9q08zQiMyi0agcvoZ0R4F_kSMo19W79ilWOLbzB8YZ2UtOp9wYFTjyDGawTL6LeV_jP5x-M-CCzSiRBD922wiblFNjHH2m9U5Wxs1OR9Zl1joTuqLvKiCu-p8ahrZtJUs5k6dtG5Eq-miaZCCZFtVTOJxOlOtR30pTEeCalGLc9XUUsqy5cegdTtW5xOphkY4CV6UsaW170vpw1SYGDfuKtleqqqwamAb9wkmeljlJpD9I3iXMjiiPNehy7kvwzZFOAlrYopfaskku5-AZ3J9w39NjHm-D3_JjJnKk9XvYH8ml8_Hk16xBdvNKa0xTwPdge6TSfM2lKNfgO65_PF4WYP_j8cEdN-dRaD7Ye69ox8BAAD__59MH70">