1 // RUN: rm -rf %t 2 // RUN: mkdir %t 3 // RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng %s > %t/out 4 // RUN: FileCheck %s < %t/out 5 // rdar://13067629 6 7 // Ensure that XML we generate is not invalid. 8 // RUN: FileCheck %s -check-prefix=WRONG < %t/out 9 // WRONG-NOT: CommentXMLInvalid 10 11 // rdar://12397511 12 13 /*! 14 \headerfile Device.h <Foundation/Device.h> 15 16 A Device represents a remote or local computer or device with which the Developer Tools can interact. Each Device supports blah blah blah from doing blah blah blah. 17 */ 18 @interface Device 19 @end 20 // CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=Device:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>Device</Name><USR>c:objc(cs)Device</USR><Headerfile><Para> Device.h <Foundation/Device.h></Para></Headerfile><Declaration>@interface Device\n@end</Declaration><Abstract><Para> A Device represents a remote or local computer or device with which the Developer Tools can interact. Each Device supports blah blah blah from doing blah blah blah.</Para></Abstract></Other>] 21 // CHECK-NEXT: CommentAST=[ 22 // CHECK-NEXT: (CXComment_FullComment 23 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 24 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 25 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[headerfile] 26 // CHECK-NEXT: (CXComment_Paragraph 27 // CHECK-NEXT: (CXComment_Text Text=[ Device.h ]) 28 // CHECK-NEXT: (CXComment_Text Text=[<Foundation]) 29 // CHECK-NEXT: (CXComment_Text Text=[/Device.h>]))) 30 // CHECK-NEXT: (CXComment_Paragraph 31 // CHECK-NEXT: (CXComment_Text Text=[ A Device represents a remote or local computer or device with which the Developer Tools can interact. Each Device supports blah blah blah from doing blah blah blah.])))] 32 33 /*! 34 \headerfile Sensor.h "Sensor.h" 35 36 \brief This is Sensor on the Device. 37 Its purpose is not to Sense Device's heat. 38 */ 39 40 @interface Sensor 41 @end 42 // CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=Sensor:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>Sensor</Name><USR>c:objc(cs)Sensor</USR><Headerfile><Para> Sensor.h "Sensor.h"</Para></Headerfile><Declaration>@interface Sensor\n@end</Declaration><Abstract><Para> This is Sensor on the Device. Its purpose is not to Sense Device's heat.</Para></Abstract></Other>] 43 // CHECK-NEXT: CommentAST=[ 44 // CHECK-NEXT: (CXComment_FullComment 45 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 46 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 47 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[headerfile] 48 // CHECK-NEXT: (CXComment_Paragraph 49 // CHECK-NEXT: (CXComment_Text Text=[ Sensor.h "Sensor.h"]))) 50 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 51 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 52 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 53 // CHECK-NEXT: (CXComment_Paragraph 54 // CHECK-NEXT: (CXComment_Text Text=[ This is Sensor on the Device.] HasTrailingNewline) 55 // CHECK-NEXT: (CXComment_Text Text=[ Its purpose is not to Sense Device's heat.]))))] 56 57 /*! 58 \brief Test that headerfile can come after brief. 59 \headerfile VTDevice.h <VTFoundation/VTDevice.h> 60 61 More property decription goes here. 62 */ 63 @interface VTDevice : Device 64 @end 65 // CHECK: headerfile-comment-to-html.m:[[@LINE-2]]:12: ObjCInterfaceDecl=VTDevice:{{.*}} FullCommentAsXML=[<Other file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-2]]" column="12"><Name>VTDevice</Name><USR>c:objc(cs)VTDevice</USR><Headerfile><Para> VTDevice.h <VTFoundation/VTDevice.h></Para></Headerfile><Declaration>@interface VTDevice : Device\n@end</Declaration><Abstract><Para> Test that headerfile can come after brief. </Para></Abstract><Discussion><Para> More property decription goes here.</Para></Discussion></Other>] 66 // CHECK-NEXT: CommentAST=[ 67 // CHECK-NEXT: (CXComment_FullComment 68 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 69 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 70 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[brief] 71 // CHECK-NEXT: (CXComment_Paragraph 72 // CHECK-NEXT: (CXComment_Text Text=[ Test that headerfile can come after brief.] HasTrailingNewline) 73 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace))) 74 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[headerfile] 75 // CHECK-NEXT: (CXComment_Paragraph 76 // CHECK-NEXT: (CXComment_Text Text=[ VTDevice.h ]) 77 // CHECK-NEXT: (CXComment_Text Text=[<VTFoundation]) 78 // CHECK-NEXT: (CXComment_Text Text=[/VTDevice.h>]))) 79 // CHECK-NEXT: (CXComment_Paragraph 80 // CHECK-NEXT: (CXComment_Text Text=[ More property decription goes here.])))] 81 82 /*! 83 \headerfile <stdio.h> 84 */ 85 extern void uses_stdio_h(); 86 // CHECK: headerfile-comment-to-html.m:[[@LINE-1]]:13: FunctionDecl=uses_stdio_h:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-1]]" column="13"><Name>uses_stdio_h</Name><USR>c:@F@uses_stdio_h</USR><Headerfile><Para> <stdio.h></Para></Headerfile><Declaration>extern void uses_stdio_h()</Declaration></Function>] 87 // CHECK-NEXT: CommentAST=[ 88 // CHECK-NEXT: (CXComment_FullComment 89 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 90 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 91 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[headerfile] 92 // CHECK-NEXT: (CXComment_Paragraph 93 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 94 // CHECK-NEXT: (CXComment_Text Text=[<stdio]) 95 // CHECK-NEXT: (CXComment_Text Text=[.h>]))))] 96 97 98 /*! 99 \headerfile <algorithm> 100 */ 101 extern void uses_argorithm(); 102 // CHECK: headerfile-comment-to-html.m:[[@LINE-1]]:13: FunctionDecl=uses_argorithm:{{.*}} FullCommentAsXML=[<Function file="{{[^"]+}}headerfile-comment-to-html.m" line="[[@LINE-1]]" column="13"><Name>uses_argorithm</Name><USR>c:@F@uses_argorithm</USR><Headerfile><Para> <algorithm></Para></Headerfile><Declaration>extern void uses_argorithm()</Declaration></Function>] 103 // CHECK-NEXT: CommentAST=[ 104 // CHECK-NEXT: (CXComment_FullComment 105 // CHECK-NEXT: (CXComment_Paragraph IsWhitespace 106 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace)) 107 // CHECK-NEXT: (CXComment_BlockCommand CommandName=[headerfile] 108 // CHECK-NEXT: (CXComment_Paragraph 109 // CHECK-NEXT: (CXComment_Text Text=[ ] IsWhitespace) 110 // CHECK-NEXT: (CXComment_Text Text=[<algorithm]) 111 // CHECK-NEXT: (CXComment_Text Text=[>]))))] 112