<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy1Vktz2zYQ_jXUZYccEhQt6aCDHvXUqep0Yic9akASlNCABAOAtvTvswAfomRnmmmmHIgC970fFgukMj8vnyUoViuZNxnzwq0Xrvzx05K8u7Ab7rM87wsuGHjxFjxCuuFYvDJQUl55ZO6RRac9W7cTAMs-OT3ixQNVMdOoCk4DyZttu8m1det1X9Gydz0zTJsgw0nvPWcnsI_lZ-IUPFhKkClGDRvHZBroHivp9IKaKm2FBi8e2TSVpi8sd_lqFPWS9Y1EB4a1nGwvOZMYcfjKQMtGZewTrQ4MCqls0Cf8oUs7vcGjz0OrbK-qwyiPp4uZoFCy3AuZUcNlpW1WHY4XwV3HbWVrqbn9QlHTYMimCQ7MdGEjKdA1E4JXBxs-2UzxN2un_4PlUV38AKzeRY8X-Sm8EJA3eP1ysFF4FaSxmyWjNXKg98k15KzgFTdMnKGSBkPVPGfQLaIXrwYDF0vvbQRLdxU5-w2H-wff7x1dyyBzM6b0zt56ShsD5miLTwj5itkB1ZopB_ArFwIKykUr3jKGzNpcbkxfd4L2_WzN89NN-3hXAemQddvt7IULEpLIj4hPIojmCFWU4GuaBGH_gB8mYe-NrNtxMQFvDNy51w8MTEMc4MdJbGscK2o9TB2rr_fR0zWnZ9WwGy4TvADNRBFoQ5UJsHRcY7KrKhFy5SjD-l9ZtSujbSNzjbTgShtw0i1KY9FrJ5kUTYl7Id5c3LS0UaGt_4t-T3PCrMpvzcLt8y_IXCDoQRks_ywugl7B8m7xfWFK21rmVSHfHmDvK5Ip1LwGfZSv2C1oX9yPtqPHqzGps26pURR0-k9NWVJ1tkTBUycN9dkcMYoUCxP3mG4Ff5cl82t6cFaPxtQ2aXKPwykFQryUgVQHS3MKqwatKCu92335EwyjJfhou-bQ1ELSHNIz7CTP4AP91rCSmbGez0q7l1H78-Mfjx__fmyZO56xSrsYuinYOPDz49MDrGo8_fGI62mfK_5ikzZnkAU82IYoOZ4y94-bJ9SoWQVtc-2NdU66VmtNoHCjFb7tISXsP0_x3UIUB9hc79G-RSb7iuB0YH1i3xqu7Cm7uiLkfnq-1Ha_kpN8GeeLeEEn1OW-_EAzmWIvSyeNEksLth7QPnBzbFIs6NIGg6B3fz6m_g_LDH5yrRtm00zInMwmxyUjUU4TErEwykiWhrPpbJGkd_NsmpC7PKETQVMm9NLdCEjFXsGZsHeVZDv59Qj40ra2iJCIxNE8WWBHm2ezsJgnsyhCzgLblVvvoYomaulMpg3W3zQUXBt9YWJz54eKMRcwRmi4Ee5jx9ONK_jE3m7-aut43ddxsoXx3WO_z2Rl8IKn9_v2PtW1AY0bMJMKj0cDL1Q07W3n-hgGHG5z2y09cfkuXbLfAXcREes>52827</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [LibClang][Python Bindings] SourceRange.__contains__() returns incorrect value for SourceLocation on same line
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Jacobfaib
      </td>
    </tr>
</table>

<pre>
    To reproduce
-------------
```
my_file = """
int main()
{
  int x = 2;
  return x;
}
"""
file_name = 'test.c'
index     = clx.Index.create()
tu        = index.parse(file_name,unsaved_files=[(file_name,my_file)])
# make sourceRange for 'x' in 'int x = 2;'
src_rng   = clx.SourceRange.from_locations(
  clx.SourceLocation.from_position(tu,tu.get_file(tu.spelling),4,7),
  clx.SourceLocation.from_position(tu,tu.get_file(tu.spelling),4,8)
)
# make sourceLocation for '2' in 'int x = 2;'
src_loc   = clx.SourceLocation.from_position(tu,tu.get_file(tu.spelling),4,10)
# to recap, src_loc is definitely not inside src_rng:
#
# int x = 2;
#     ~~  ~ -- src_loc
#      |
#   src_rng
#
# but the following assertion will fail
assert src_loc not in src_rng
```

The fix
---------
```
--- cindex.py   2021-12-21 18:15:45.000000000 -0500
+++ cindex.py 2021-12-21 18:16:16.000000000 -0500
@@ -353,7 +353,7 @@
             return True
         elif self.start.line == other.line:
             # same file first line
-            if self.start.column <= other.column:
+            if self.start.column <= other.column <= self.end.column:
                 return True
         elif other.line == self.end.line:
             # same file last line
```

Version info
------------
```
$ pip show clang
Name: clang
Version: 11.0
Summary: libclang python bindings
Home-page: http://clang.llvm.org/
Author: LLVM team - pypi upload by Loic Jaquemet
Author-email: UNKNOWN
License: License :: OSI Approved :: University of Illinois/NCSA Open Source License
Location: /usr/local/lib/python3.9/site-packages
Requires:
Required-by:
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Vktz2zYQ_jXUZUccEjQj6aCDHvXUqep0Yic9akASlNCABAOAtvTvuwuSetmZZtopBqLAfePDYpeZLo7zZw1GNEYXbS6CaB1Ei_Hl6EjBh6if_rU6bkupBATJGgLG-ulZsnZQcVkHbBqwWa89WXYLAGIfvB4LkhPVCNeaGg4nUjBZ94tr6-R1W_NqcD1xwrowx8XgvRAHoEH8XB3CB6KEuRHcicuYXAv9IEmvFzbcWBI6eQnYqq0tfxGF369F0SBd3kj0YJDldH3eM0sQh28CrG5NLj7zeieg1IaCPuAPXdLyBo9hH9bkW1PvLvbxdDYTlkZXW6Vz7qSuLe2qx_EsuOm5nWyjraQ3FHUthuzacCdcHzaSQtsIpWS9o_DZ6g5_k275P1i-yIsfgDW4GPBiP4UXAvIGr_8cbBxdBenosuS8QQ4MPqWFQpSylk6oI9TaYahWFgL6QwySxcnA2dJ7F4HoPiMnv-D0_zAeD46uZZC5uqQMzt56yloHbk_Jp5R-xd0Bt1YYD_CrVApKLlUn3jFOO-v2cmP6uhJ0z2cyLw835eNdBaRD3l-3YxDNWMTicczGLIZ4ilDFKT7u0jAaBoyjNBq8sWU3zybgjYEP_vEDA3cRThgnaUI5jhm1PC09a8j3i9EXp2fTihuuULIEK1QZWseNCzF1fGGiU9UIufGU0_lfWaWTsVTIfCEtpbEOvHSH0qXotZNcq7bCu5Cszm462kWiLf-N_kDzwqIubs3C7fgHZM4QDKCcLP8sLopfwfJu8n0VxlIuy7rUbxvY-4rsDhrZgN3rV6wWfEjuR6royeKS1FsnahyHvf5TW1XcHImoZOaloTm6PUaRYWLiHbOd4K-6EuOG77zVvXMNbZrd4_RKoVIvVajNjmheYdGiFUPSm83X38EJXsEYbTcS2kZpXkB2hI2WOXzk31tRCXepNxYV3WXU_vL42-OnPx875kbmorY-hn4JFAe-fnp6gEWD3R9b3ED7UssX2rQ7gi7hgQqilthl7h9XT6jRiBq64joY6530pZZMoHBrDT6pSSn6lxk-O4iSEIvrPdonZPJvCE4P1mfxvZWGuuziilCMs-M5t4eTHBXzpJglMz5y0ikxx8a8kdnKn1xKbfqP7kCWw4Gka7hsotttrmuHXyp2u-0-DPp8tphJuTZY5x28cNV2bfu6nwBOn6WUm6PWqDkdrj2d7k66fZvhBapo83jI_d8Yof4LDeOrtLYVBGvKpmwy2s8jPmUiZcmU82mWxTzNRZmWfrC8KPlI8UwoO_dfIKwWr-BN0LdRuh7JORXCmLGYJfE0nWH9m-aTqJymkzhGzgyLm8-OU86NzNyHlLUIzl2kpHX2zMRWIHe18LiSfe4TbP6R5zrDhpGNvPO5D_5vuQ7-IA">