URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [go/] [printer/] [testdata/] [statements.golden] - 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()}
