1# Curly brackets from the same pair should be either in the same line or in the same column 2 3proc acceptPairs {} { 4 global file parens index end 5 6 while {$index != $end} { 7 set nextToken [lindex $parens $index] 8 set tokenValue [lindex $nextToken 0] 9 10 if {$tokenValue == "\{"} { 11 incr index 12 set leftParenLine [lindex $nextToken 1] 13 set leftParenColumn [lindex $nextToken 2] 14 15 acceptPairs 16 17 if {$index == $end} { 18 report $file $leftParenLine "opening curly bracket is not closed" 19 return 20 } 21 22 set nextToken [lindex $parens $index] 23 incr index 24 set tokenValue [lindex $nextToken 0] 25 set rightParenLine [lindex $nextToken 1] 26 set rightParenColumn [lindex $nextToken 2] 27 28 if {($leftParenLine != $rightParenLine) && ($leftParenColumn != $rightParenColumn)} { 29 # make an exception for line continuation 30 set leftLine [getLine $file $leftParenLine] 31 set rightLine [getLine $file $rightParenLine] 32 if {[string index $leftLine end] != "\\" && [string index $rightLine end] != "\\"} { 33 report $file $rightParenLine "closing curly bracket not in the same line or column" 34 } 35 } 36 } else { 37 return 38 } 39 } 40} 41 42foreach file [getSourceFileNames] { 43 set parens [getTokens $file 1 0 -1 -1 {leftbrace rightbrace}] 44 set index 0 45 set end [llength $parens] 46 acceptPairs 47 if {$index != $end} { 48 report $file [lindex [lindex $parens $index] 1] "excessive closing bracket?" 49 } 50} 51