<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/107368>107368</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang emit-ast hangs on objc code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
danix800
</td>
</tr>
</table>
<pre>
```c
@class NSString;
@protocol NSObject
@end
@protocol NSCoding
@end
@interface NSObject <NSObject> {}
@end
@interface NSResponder : NSObject <NSCoding> {}
@end
@interface NSWindow : NSResponder <NSCoding> {}
@end
@implementation NSWindow (CheckCoordinates)
- (NSString *) checkCoordinates { return (void *)0; }
@end
@interface NSWindow (CheckCoordinates)
- (NSString *) checkCoordinates;
@end
```
```
clang -emit-ast -o test.ast test.m
```
godbolt: https://godbolt.org/z/hT3G9Ke7j
https://github.com/llvm/llvm-project/blob/main/clang/lib/AST/DeclBase.cpp#L582-L586
seems the loop never returns.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVN2OmzwQfZrhxkpkhhDggov8fHwXXW2lZqVeG3sAb42NsJP-PH1FlmSzK23VqBISlufMmTNzRhbe69YSlZBuId1H4hg6N5ZKWP0j5zyqnfpZwpq_fBL4HvgGVlwa4T17PBzCqG0LyXaOXOLD6IKTzrDHw-f6mWS4Rsiqj7E7pya6j7HaBhobIelKzCDZXYsk_zHItpDt_5LiC_nBWUUjg2TzjnLWci_lV22V-z7z3fLfSdkPhnqyQQTt7A0v5ruO5Ledc6PSVgTygMVL2mKKXjxhgBvAgsl36Kk0GykcRzvBT06rGcoh2bL7G_1XQa_Lc1vxsnJvBLy9lEbYli2o12EhfGALxwL5sJzO50P_B67WqdqZMNnUhTB4SDaAFWA1B5ZubAGrX4BV95T8X3yi7Pk2_12SDt2xXkrXA1bGnC6_xTC682JiVRtXA1a90BawOmufQHq63ByeAKs9SbMVnpZyGACThzTHxUOar2_LeqLes9ARM84NzNKJxtlNv4xUmagiKUREZZxhmmKG6zzqyiars7xJG4xriXnTqPWa4hWhWud1Eyd5pEvkuOIFT3nBs1W-LIokjoVc8TivEZt08qYX2iynrqbZRNr7I5Uxz5J1HhlRk_HnRwRx7g2n92Qsz2Ooj62HFTfaB_9KEXQwVL7YeHWxE7b1zFnm6mfJpFMUHUdT3j3vsz4PWM0STyX-DgAA___JqHQQ">