Curly brackets from the same pair should be either in the same line or in the same column

# T011

# Curly brackets from the same pair should be either in the same line or in the same column

Description:

Corresponding curly brackets should be either in the same line or in the same column. This promotes clarity by emphasising scopes, but allows concise style of one-line definitions and empty blocks:

    class MyException {};

    struct MyPair
    {
        int a;
        int b;
    };

    enum state { close, open };

    enum colors
    {
        black,
        red,
        green,
        blue,
        white
    };

Compliance: Inspirel

Show source code for this rule

Hide source code

    # Curly brackets from the same pair should be either in the same line or in the same column

    proc acceptPairs {} {
        global file parens index end

        while {$index != $end} {
            set nextToken [lindex $parens $index]
            set tokenValue [lindex $nextToken 0]

            if {$tokenValue == "\{"} {
                incr index
                set leftParenLine [lindex $nextToken 1]
                set leftParenColumn [lindex $nextToken 2]

                acceptPairs

                if {$index == $end} {
                    report $file $leftParenLine "opening curly bracket is not closed"
                    return
                }

                set nextToken [lindex $parens $index]
                incr index
                set tokenValue [lindex $nextToken 0]
                set rightParenLine [lindex $nextToken 1]
                set rightParenColumn [lindex $nextToken 2]

                if {($leftParenLine != $rightParenLine) && ($leftParenColumn != $rightParenColumn)} {
                    # make an exception for line continuation
                    set leftLine [getLine $file $leftParenLine]
                    set rightLine [getLine $file $rightParenLine]
                    if {[string index $leftLine end] != "\\" && [string index $rightLine end] != "\\"} {
                        report $file $rightParenLine "closing curly bracket not in the same line or column"
                    }
                }
            } else {
                return
            }
        }
    }

    foreach file [getSourceFileNames] {
        set parens [getTokens $file 1 0 -1 -1 {leftbrace rightbrace}]
        set index 0
        set end [llength $parens]
        acceptPairs
        if {$index != $end} {
            report $file [lindex [lindex $parens $index] 1] "excessive closing bracket?"
        }
    }

Rule index