Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(10)

Delta Between Two Patch Sets: test/fixedbugs/bug491.go

Issue 144530045: code review 144530045: cmd/gc: fix call order in array literal of slice litera... (Closed)
Left Patch Set: Created 10 years, 5 months ago
Right Patch Set: diff -r 6e19c3e6b95c0efb627a5ab98187957c325b563a https://code.google.com/p/go/ Created 10 years, 5 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Right: Side by side diff | Download
« no previous file with change/comment | « src/cmd/gc/order.c ('k') | test/fixedbugs/issue8761.go » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
(no file at all)
1 // run
2
3 // Copyright 2014 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
6
7 // Test order of calls to builtin functions.
8 // Discovered during CL 144530045 review.
9
10 package main
11
12 func main() {
13 // append
14 {
15 x := make([]int, 0)
16 f := func() int { x = make([]int, 2); return 2 }
17 a, b, c := append(x, 1), f(), append(x, 1)
18 if len(a) != 1 || len(c) != 3 {
19 bug()
20 println("append call not ordered:", len(a), b, len(c))
21 }
22 }
23
24 // cap
25 {
26 x := make([]int, 1)
27 f := func() int { x = make([]int, 3); return 2 }
28 a, b, c := cap(x), f(), cap(x)
29 if a != 1 || c != 3 {
30 bug()
31 println("cap call not ordered:", a, b, c)
32 }
33 }
34
35 // complex
36 {
37 x := 1.0
38 f := func() int { x = 3; return 2 }
39 a, b, c := complex(x, 0), f(), complex(x, 0)
40 if real(a) != 1 || real(c) != 3 {
41 bug()
42 println("complex call not ordered:", a, b, c)
43 }
44 }
45
46 // copy
47 {
48 tmp := make([]int, 100)
49 x := make([]int, 1)
50 f := func() int { x = make([]int, 3); return 2 }
51 a, b, c := copy(tmp, x), f(), copy(tmp, x)
52 if a != 1 || c != 3 {
53 bug()
54 println("copy call not ordered:", a, b, c)
55 }
56 }
57
58 // imag
59 {
60 x := 1i
61 f := func() int { x = 3i; return 2 }
62 a, b, c := imag(x), f(), imag(x)
63 if a != 1 || c != 3 {
64 bug()
65 println("imag call not ordered:", a, b, c)
66 }
67 }
68
69 // len
70 {
71 x := make([]int, 1)
72 f := func() int { x = make([]int, 3); return 2 }
73 a, b, c := len(x), f(), len(x)
74 if a != 1 || c != 3 {
75 bug()
76 println("len call not ordered:", a, b, c)
77 }
78 }
79
80 // make
81 {
82 x := 1
83 f := func() int { x = 3; return 2 }
84 a, b, c := make([]int, x), f(), make([]int, x)
85 if len(a) != 1 || len(c) != 3 {
86 bug()
87 println("make call not ordered:", len(a), b, len(c))
88 }
89 }
90
91 // real
92 {
93 x := 1 + 0i
94 f := func() int { x = 3; return 2 }
95 a, b, c := real(x), f(), real(x)
96 if a != 1 || c != 3 {
97 bug()
98 println("real call not ordered:", a, b, c)
99 }
100 }
101 }
102
103 var bugged = false
104
105 func bug() {
106 if !bugged {
107 println("BUG")
108 bugged = true
109 }
110 }
LEFTRIGHT

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b