1 1.1 rillig /* $NetBSD: edge_cases.c,v 1.1 2022/04/24 10:36:37 rillig Exp $ */ 2 1.1 rillig 3 1.1 rillig /* 4 1.1 rillig * Tests for edge cases in the C programming language that indent does not 5 1.1 rillig * support or in which cases indent behaves strangely. 6 1.1 rillig */ 7 1.1 rillig 8 1.1 rillig /* 9 1.1 rillig * Digraphs are replacements for the characters '[', '{' and '#', which are 10 1.1 rillig * missing in some exotic restricted source character sets. 11 1.1 rillig * 12 1.1 rillig * See C99 6.4.6 13 1.1 rillig */ 14 1.1 rillig //indent input 15 1.1 rillig void 16 1.1 rillig digraphs(void) 17 1.1 rillig { 18 1.1 rillig /* same as 'array[subscript]' */ 19 1.1 rillig number = array<:subscript:>; 20 1.1 rillig 21 1.1 rillig /* same as '(int){ initializer }' */ 22 1.1 rillig number = (int)<% initializer %>; 23 1.1 rillig } 24 1.1 rillig //indent end 25 1.1 rillig 26 1.1 rillig //indent run 27 1.1 rillig void 28 1.1 rillig digraphs(void) 29 1.1 rillig { 30 1.1 rillig /* same as 'array[subscript]' */ 31 1.1 rillig // $ XXX: The indentation is completely wrong. 32 1.1 rillig // $ XXX: The space between 'array' and '<' doesn't belong there. 33 1.1 rillig number = array <:subscript:>; 34 1.1 rillig 35 1.1 rillig /* same as '(int){ initializer }' */ 36 1.1 rillig // $ XXX: The space between '%' and '>' doesn't belong there. 37 1.1 rillig number = (int)<%initializer % >; 38 1.1 rillig } 39 1.1 rillig //indent end 40 1.1 rillig 41 1.1 rillig /* TODO: test trigraphs, which are as unusual as digraphs */ 42 1.1 rillig /* TODO: test digraphs and trigraphs in string literals, just for fun */ 43