mirror of
				https://github.com/golang/go.git
				synced 2025-10-31 16:50:58 +00:00 
			
		
		
		
	 1a3198907b
			
		
	
	
		1a3198907b
		
	
	
	
	
		
			
			also template/template.go, missed last time. R=r DELTA=116 (61 added, 10 deleted, 45 changed) OCL=34620 CL=34622
		
			
				
	
	
		
			139 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // $G $F.go && $L $F.$A && ./$A.out
 | |
| 
 | |
| // 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 main
 | |
| 
 | |
| func assert(cond bool, msg string) {
 | |
| 	if !cond {
 | |
| 		print("assertion fail: ", msg, "\n");
 | |
| 		panic(1);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	i5 := 5;
 | |
| 	i7 := 7;
 | |
| 	hello := "hello";
 | |
| 
 | |
| 	switch true {
 | |
| 	case i5 < 5: assert(false, "<");
 | |
| 	case i5 == 5: assert(true, "!");
 | |
| 	case i5 > 5: assert(false, ">");
 | |
| 	}
 | |
| 
 | |
| 	switch {
 | |
| 	case i5 < 5: assert(false, "<");
 | |
| 	case i5 == 5: assert(true, "!");
 | |
| 	case i5 > 5: assert(false, ">");
 | |
| 	}
 | |
| 
 | |
| 	switch x := 5; true {
 | |
| 	case i5 < x: assert(false, "<");
 | |
| 	case i5 == x: assert(true, "!");
 | |
| 	case i5 > x: assert(false, ">");
 | |
| 	}
 | |
| 
 | |
| 	switch x := 5; true {
 | |
| 	case i5 < x: assert(false, "<");
 | |
| 	case i5 == x: assert(true, "!");
 | |
| 	case i5 > x: assert(false, ">");
 | |
| 	}
 | |
| 
 | |
| 	switch i5 {
 | |
| 	case 0: assert(false, "0");
 | |
| 	case 1: assert(false, "1");
 | |
| 	case 2: assert(false, "2");
 | |
| 	case 3: assert(false, "3");
 | |
| 	case 4: assert(false, "4");
 | |
| 	case 5: assert(true, "5");
 | |
| 	case 6: assert(false, "6");
 | |
| 	case 7: assert(false, "7");
 | |
| 	case 8: assert(false, "8");
 | |
| 	case 9: assert(false, "9");
 | |
| 	default: assert(false, "default");
 | |
| 	}
 | |
| 
 | |
| 	switch i5 {
 | |
| 	case 0,1,2,3,4: assert(false, "4");
 | |
| 	case 5: assert(true, "5");
 | |
| 	case 6,7,8,9: assert(false, "9");
 | |
| 	default: assert(false, "default");
 | |
| 	}
 | |
| 
 | |
| 	switch i5 {
 | |
| 	case 0:
 | |
| 	case 1:
 | |
| 	case 2:
 | |
| 	case 3:
 | |
| 	case 4: assert(false, "4");
 | |
| 	case 5: assert(true, "5");
 | |
| 	case 6:
 | |
| 	case 7:
 | |
| 	case 8:
 | |
| 	case 9:
 | |
| 	default: assert(i5 == 5, "good");
 | |
| 	}
 | |
| 
 | |
| 	switch i5 {
 | |
| 	case 0: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 1: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 2: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 3: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 4: dummy := 0; _ = dummy; assert(false, "4");
 | |
| 	case 5: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 6: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 7: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 8: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 9: dummy := 0; _ = dummy; fallthrough;
 | |
| 	default: dummy := 0; _ = dummy; assert(i5 == 5, "good");
 | |
| 	}
 | |
| 
 | |
| 	fired := false;
 | |
| 	switch i5 {
 | |
| 	case 0: dummy := 0; _ = dummy; fallthrough;  // tests scoping of cases
 | |
| 	case 1: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 2: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 3: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 4: dummy := 0; _ = dummy; assert(false, "4");
 | |
| 	case 5: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 6: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 7: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 8: dummy := 0; _ = dummy; fallthrough;
 | |
| 	case 9: dummy := 0; _ = dummy; fallthrough;
 | |
| 	default: dummy := 0; _ = dummy; fired = !fired; assert(i5 == 5, "good");
 | |
| 	}
 | |
| 	assert(fired, "fired");
 | |
| 
 | |
| 	count := 0;
 | |
| 	switch i5 {
 | |
| 	case 0: count = count + 1; fallthrough;
 | |
| 	case 1: count = count + 1; fallthrough;
 | |
| 	case 2: count = count + 1; fallthrough;
 | |
| 	case 3: count = count + 1; fallthrough;
 | |
| 	case 4: count = count + 1; assert(false, "4");
 | |
| 	case 5: count = count + 1; fallthrough;
 | |
| 	case 6: count = count + 1; fallthrough;
 | |
| 	case 7: count = count + 1; fallthrough;
 | |
| 	case 8: count = count + 1; fallthrough;
 | |
| 	case 9: count = count + 1; fallthrough;
 | |
| 	default: assert(i5 == count, "good");
 | |
| 	}
 | |
| 	assert(fired, "fired");
 | |
| 
 | |
| 	switch hello {
 | |
| 	case "wowie": assert(false, "wowie");
 | |
| 	case "hello": assert(true, "hello");
 | |
| 	case "jumpn": assert(false, "jumpn");
 | |
| 	default: assert(false, "default");
 | |
| 	}
 | |
| 
 | |
| 	fired = false;
 | |
| 	switch i := i5 + 2; i {
 | |
| 	case i7: fired = true;
 | |
| 	default: assert(false, "fail");
 | |
| 	}
 | |
| 	assert(fired, "var");
 | |
| }
 |