URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [printer/] [testdata/] [statements.input] - Rev 747
Compare with Previous | Blame | View Log
// Copyright 2009 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.package statementsvar expr boolfunc use(x interface{}) {}// Formatting of if-statement headers.func _() {if true {}if; true {} // no semicolon printedif expr{}if;expr{} // no semicolon printedif (expr){} // no parens printedif;((expr)){} // no semicolon and parens printedif x:=expr;true{use(x)}if x:=expr; expr {use(x)}}// Formatting of switch-statement headers.func _() {switch {}switch;{} // no semicolon printedswitch expr {}switch;expr{} // no semicolon printedswitch (expr) {} // no parens printedswitch;((expr)){} // no semicolon and parens printedswitch x := expr; { default:use(x)}switch x := expr; expr {default:use(x)}}// Formatting of switch statement bodies.func _() {switch {}switch x := 0; x {case 1:use(x)use(x) // followed by an empty linecase 2: // followed by an empty lineuse(x) // followed by an empty linecase 3: // no empty linesuse(x)use(x)}switch x {case 0:use(x)case 1: // this comment should have no effect on the previous or next lineuse(x)}switch x := 0; x {case 1:x = 0// this comment should be indentedcase 2:x = 0// this comment should not be indented, it is aligned with the next casecase 3:x = 0/* indented commentalignedaligned*/// bla/* and more */case 4:x = 0/* not indented commentalignedaligned*/// bla/* and more */case 5:}}// Formatting of selected select statements.func _() {select {}select { /* this comment should not be tab-aligned because the closing } is on the same line */ }select { /* this comment should be tab-aligned */}select { // this comment should be tab-aligned}select { case <-c: }}// Formatting of for-statement headers.func _() {for{}for expr {}for (expr) {} // no parens printedfor;;{} // no semicolons printedfor x :=expr;; {use( x)}for; expr;{} // no semicolons printedfor; ((expr));{} // no semicolons and parens printedfor; ; expr = false {}for x :=expr; expr; {use(x)}for x := expr;; expr=false {use(x)}for;expr;expr =false {}for x := expr;expr;expr = false { use(x) }for x := range []int{} { use(x) }for x := range (([]int{})) { use(x) } // no parens printed}// Don't remove mandatory parentheses around composite literals in control clauses.func _() {// strip parentheses - no composite literals or composite literals don't start with a type nameif (x) {}if (((x))) {}if ([]T{}) {}if (([]T{})) {}if ; (((([]T{})))) {}for (x) {}for (((x))) {}for ([]T{}) {}for (([]T{})) {}for ; (((([]T{})))) ; {}switch (x) {}switch (((x))) {}switch ([]T{}) {}switch ; (((([]T{})))) {}for _ = range ((([]T{T{42}}))) {}// leave parentheses - composite literals start with a type nameif (T{}) {}if ((T{})) {}if ; ((((T{})))) {}for (T{}) {}for ((T{})) {}for ; ((((T{})))) ; {}switch (T{}) {}switch ; ((((T{})))) {}for _ = range (((T1{T{42}}))) {}if x == (T{42}[0]) {}if (x == T{42}[0]) {}if (x == (T{42}[0])) {}if (x == (((T{42}[0])))) {}if (((x == (T{42}[0])))) {}if x == a + b*(T{42}[0]) {}if (x == a + b*T{42}[0]) {}if (x == a + b*(T{42}[0])) {}if (x == a + ((b * (T{42}[0])))) {}if (((x == a + b * (T{42}[0])))) {}if (((a + b * (T{42}[0])) == x)) {}if (((a + b * (T{42}[0])))) == x {}if (struct{x bool}{false}.x) {}if (struct{x bool}{false}.x) == false {}if (struct{x bool}{false}.x == false) {}}// Extra empty lines inside functions. Do respect source code line// breaks between statement boundaries but print at most one empty// line at a time.func _() {const _ = 0const _ = 1type _ inttype _ floatvar _ = 0var x = 1// Each use(x) call below should have at most one empty line before and after.// Known bug: The first use call may have more than one empty line before// (see go/printer/nodes.go, func linebreak).use(x)if x < x {use(x)} else {use(x)}}// Formatting around labels.func _() {L:}func _() {// this comment should be indentedL: ; // no semicolon needed}func _() {switch 0 {case 0:L0: ; // semicolon requiredcase 1:L1: ; // semicolon requireddefault:L2: ; // no semicolon needed}}func _() {f()L1:f()L2:;L3:}func _() {// this comment should be indentedL:}func _() {L: _ = 0}func _() {// this comment should be indentedL: _ = 0}func _() {for {L1: _ = 0L2:_ = 0}}func _() {// this comment should be indentedfor {L1: _ = 0L2:_ = 0}}func _() {if true {_ = 0}_ = 0 // the indentation here should not be affected by the long label nameAnOverlongLabel:_ = 0if true {_ = 0}_ = 0L: _ = 0}func _() {for {goto L}L:MoreCode()}func _() {for {goto L}L: // A comment on the same line as the label, followed by a single empty line.// Known bug: There may be more than one empty line before MoreCode()// (see go/printer/nodes.go, func linebreak).MoreCode()}func _() {for {goto L}L:// There should be a single empty line before this comment.MoreCode()}func _() {for {goto AVeryLongLabelThatShouldNotAffectFormatting}AVeryLongLabelThatShouldNotAffectFormatting:// There should be a single empty line after this comment.// There should be a single empty line before this comment.MoreCode()}
