1*89a1d03eSRichard // RUN: %check_clang_tidy %s misc-misleading-bidirectional %t 2*89a1d03eSRichard func(void)3*89a1d03eSRichardvoid func(void) { 4*89a1d03eSRichard int admin = 0; 5*89a1d03eSRichard /* }if(admin) begin*/ 6*89a1d03eSRichard // CHECK-MESSAGES: :[[#@LINE-1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional] 7*89a1d03eSRichard const char msg[] = "if(admin) tes"; 8*89a1d03eSRichard // CHECK-MESSAGES: :[[#@LINE-1]]:22: warning: string literal contains misleading bidirectional Unicode characters [misc-misleading-bidirectional] 9*89a1d03eSRichard } 10*89a1d03eSRichard all_fine(void)11*89a1d03eSRichardvoid all_fine(void) { 12*89a1d03eSRichard char valid[] = "somevalidsequence"; 13*89a1d03eSRichard /* EOL ends bidi sequence 14*89a1d03eSRichard * end it's fine to do so. 15*89a1d03eSRichard * EOL ends isolate too 16*89a1d03eSRichard */ 17*89a1d03eSRichard } 18*89a1d03eSRichard invalid_utf_8(void)19*89a1d03eSRichardint invalid_utf_8(void) { 20*89a1d03eSRichard bool isAdmin = false; 21*89a1d03eSRichard 22*89a1d03eSRichard // the comment below contains an invalid utf8 character, but should still be 23*89a1d03eSRichard // processed. 24*89a1d03eSRichard 25*89a1d03eSRichard // CHECK-MESSAGES: :[[#@LINE+1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional] 26*89a1d03eSRichard /* } if (isAdmin) begin admins only */ 27*89a1d03eSRichard return 1; 28*89a1d03eSRichard /* end admins only { */ 29*89a1d03eSRichard // CHECK-MESSAGES: :[[#@LINE-1]]:3: warning: comment contains misleading bidirectional Unicode characters [misc-misleading-bidirectional] 30*89a1d03eSRichard return 0; 31*89a1d03eSRichard } 32*89a1d03eSRichard 33*89a1d03eSRichard // CHECK-MESSAGES: :[[#@LINE+1]]:19: warning: string literal contains misleading bidirectional Unicode characters [misc-misleading-bidirectional] 34*89a1d03eSRichard char invalid1[] = ""; 35*89a1d03eSRichard 36*89a1d03eSRichard // Test that segment and paragraph separator correctly reset the state 37*89a1d03eSRichard char valid1[] = R"||( 38*89a1d03eSRichard )||"; 39*89a1d03eSRichard 40