aboutsummaryrefslogtreecommitdiff
path: root/test/named.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-06-08 18:50:02 -0700
committerRuss Cox <rsc@golang.org>2010-06-08 18:50:02 -0700
commit565b5dc0760baf556f83adf847f578718a1c571f (patch)
treee2dc094314df75a900a88adc71677452545d74ca /test/named.go
parent6aaef044698bf9da21e270188f281321de98a391 (diff)
downloadgo-565b5dc0760baf556f83adf847f578718a1c571f.tar.gz
go-565b5dc0760baf556f83adf847f578718a1c571f.zip
gc: new typechecking rules
* Code for assignment, conversions now mirrors spec. * Changed some snprint -> smprint. * Renamed runtime functions to separate interface conversions from type assertions: convT2I, assertI2T, etc. * Correct checking of \U sequences. Fixes #840. Fixes #830. Fixes #778. R=ken2 CC=golang-dev https://golang.org/cl/1303042
Diffstat (limited to 'test/named.go')
-rw-r--r--test/named.go474
1 files changed, 237 insertions, 237 deletions
diff --git a/test/named.go b/test/named.go
index a52490215b..d2039bab4d 100644
--- a/test/named.go
+++ b/test/named.go
@@ -20,13 +20,13 @@ type String string
// Calling these functions checks at compile time that the argument
// can be converted implicitly to (used as) the given type.
-func asArray(Array) {}
-func asBool(Bool) {}
-func asChan(Chan) {}
-func asFloat(Float) {}
-func asInt(Int) {}
-func asMap(Map) {}
-func asSlice(Slice) {}
+func asArray(Array) {}
+func asBool(Bool) {}
+func asChan(Chan) {}
+func asFloat(Float) {}
+func asInt(Int) {}
+func asMap(Map) {}
+func asSlice(Slice) {}
func asString(String) {}
func (Map) M() {}
@@ -35,247 +35,247 @@ func (Map) M() {}
// These functions check at run time that the default type
// (in the absence of any implicit conversion hints)
// is the given type.
-func isArray(x interface{}) { _ = x.(Array) }
-func isBool(x interface{}) { _ = x.(Bool) }
-func isChan(x interface{}) { _ = x.(Chan) }
-func isFloat(x interface{}) { _ = x.(Float) }
-func isInt(x interface{}) { _ = x.(Int) }
-func isMap(x interface{}) { _ = x.(Map) }
-func isSlice(x interface{}) { _ = x.(Slice) }
+func isArray(x interface{}) { _ = x.(Array) }
+func isBool(x interface{}) { _ = x.(Bool) }
+func isChan(x interface{}) { _ = x.(Chan) }
+func isFloat(x interface{}) { _ = x.(Float) }
+func isInt(x interface{}) { _ = x.(Int) }
+func isMap(x interface{}) { _ = x.(Map) }
+func isSlice(x interface{}) { _ = x.(Slice) }
func isString(x interface{}) { _ = x.(String) }
func main() {
var (
- a Array;
- b Bool = true;
- c Chan = make(Chan);
- f Float = 1;
- i Int = 1;
- m Map = make(Map);
- slice Slice = make(Slice, 10);
- str String = "hello";
+ a Array
+ b Bool = true
+ c Chan = make(Chan)
+ f Float = 1
+ i Int = 1
+ m Map = make(Map)
+ slice Slice = make(Slice, 10)
+ str String = "hello"
)
- asArray(a);
- isArray(a);
- asArray(*&a);
- isArray(*&a);
- asArray(Array{});
- isArray(Array{});
+ asArray(a)
+ isArray(a)
+ asArray(*&a)
+ isArray(*&a)
+ asArray(Array{})
+ isArray(Array{})
- asBool(b);
- isBool(b);
- asBool(!b);
- isBool(!b);
- asBool(true);
- asBool(*&b);
- isBool(*&b);
- asBool(Bool(true));
- isBool(Bool(true));
+ asBool(b)
+ isBool(b)
+ asBool(!b)
+ isBool(!b)
+ asBool(true)
+ asBool(*&b)
+ isBool(*&b)
+ asBool(Bool(true))
+ isBool(Bool(true))
- asChan(c);
- isChan(c);
- asChan(make(Chan));
- isChan(make(Chan));
- asChan(*&c);
- isChan(*&c);
- asChan(Chan(nil));
- isChan(Chan(nil));
+ asChan(c)
+ isChan(c)
+ asChan(make(Chan))
+ isChan(make(Chan))
+ asChan(*&c)
+ isChan(*&c)
+ asChan(Chan(nil))
+ isChan(Chan(nil))
- asFloat(f);
- isFloat(f);
- asFloat(-f);
- isFloat(-f);
- asFloat(+f);
- isFloat(+f);
- asFloat(f+1);
- isFloat(f+1);
- asFloat(1+f);
- isFloat(1+f);
- asFloat(f+f);
- isFloat(f+f);
- f++;
- f+=2;
- asFloat(f-1);
- isFloat(f-1);
- asFloat(1-f);
- isFloat(1-f);
- asFloat(f-f);
- isFloat(f-f);
- f--;
- f-=2;
- asFloat(f*2.5);
- isFloat(f*2.5);
- asFloat(2.5*f);
- isFloat(2.5*f);
- asFloat(f*f);
- isFloat(f*f);
- f*=4;
- asFloat(f/2.5);
- isFloat(f/2.5);
- asFloat(2.5/f);
- isFloat(2.5/f);
- asFloat(f/f);
- isFloat(f/f);
- f/=4;
- asFloat(f);
- isFloat(f);
- f = 5;
- asFloat(*&f);
- isFloat(*&f);
- asFloat(234);
- asFloat(Float(234));
- isFloat(Float(234));
- asFloat(1.2);
- asFloat(Float(i));
- isFloat(Float(i));
+ asFloat(f)
+ isFloat(f)
+ asFloat(-f)
+ isFloat(-f)
+ asFloat(+f)
+ isFloat(+f)
+ asFloat(f + 1)
+ isFloat(f + 1)
+ asFloat(1 + f)
+ isFloat(1 + f)
+ asFloat(f + f)
+ isFloat(f + f)
+ f++
+ f += 2
+ asFloat(f - 1)
+ isFloat(f - 1)
+ asFloat(1 - f)
+ isFloat(1 - f)
+ asFloat(f - f)
+ isFloat(f - f)
+ f--
+ f -= 2
+ asFloat(f * 2.5)
+ isFloat(f * 2.5)
+ asFloat(2.5 * f)
+ isFloat(2.5 * f)
+ asFloat(f * f)
+ isFloat(f * f)
+ f *= 4
+ asFloat(f / 2.5)
+ isFloat(f / 2.5)
+ asFloat(2.5 / f)
+ isFloat(2.5 / f)
+ asFloat(f / f)
+ isFloat(f / f)
+ f /= 4
+ asFloat(f)
+ isFloat(f)
+ f = 5
+ asFloat(*&f)
+ isFloat(*&f)
+ asFloat(234)
+ asFloat(Float(234))
+ isFloat(Float(234))
+ asFloat(1.2)
+ asFloat(Float(i))
+ isFloat(Float(i))
- asInt(i);
- isInt(i);
- asInt(-i);
- isInt(-i);
- asInt(^i);
- isInt(^i);
- asInt(+i);
- isInt(+i);
- asInt(i+1);
- isInt(i+1);
- asInt(1+i);
- isInt(1+i);
- asInt(i+i);
- isInt(i+i);
- i++;
- i+=1;
- asInt(i-1);
- isInt(i-1);
- asInt(1-i);
- isInt(1-i);
- asInt(i-i);
- isInt(i-i);
- i--;
- i-=1;
- asInt(i*2);
- isInt(i*2);
- asInt(2*i);
- isInt(2*i);
- asInt(i*i);
- isInt(i*i);
- i*=2;
- asInt(i/5);
- isInt(i/5);
- asInt(5/i);
- isInt(5/i);
- asInt(i/i);
- isInt(i/i);
- i/=2;
- asInt(i%5);
- isInt(i%5);
- asInt(5%i);
- isInt(5%i);
- asInt(i%i);
- isInt(i%i);
- i%=2;
- asInt(i&5);
- isInt(i&5);
- asInt(5&i);
- isInt(5&i);
- asInt(i&i);
- isInt(i&i);
- i&=2;
- asInt(i&^5);
- isInt(i&^5);
- asInt(5&^i);
- isInt(5&^i);
- asInt(i&^i);
- isInt(i&^i);
- i&^=2;
- asInt(i|5);
- isInt(i|5);
- asInt(5|i);
- isInt(5|i);
- asInt(i|i);
- isInt(i|i);
- i|=2;
- asInt(i^5);
- isInt(i^5);
- asInt(5^i);
- isInt(5^i);
- asInt(i^i);
- isInt(i^i);
- i^=2;
- asInt(i<<4);
- isInt(i<<4);
- i<<=2;
- asInt(i>>4);
- isInt(i>>4);
- i>>=2;
- asInt(i);
- isInt(i);
- asInt(0);
- asInt(Int(0));
- isInt(Int(0));
- i = 10;
- asInt(*&i);
- isInt(*&i);
- asInt(23);
- asInt(Int(f));
- isInt(Int(f));
+ asInt(i)
+ isInt(i)
+ asInt(-i)
+ isInt(-i)
+ asInt(^i)
+ isInt(^i)
+ asInt(+i)
+ isInt(+i)
+ asInt(i + 1)
+ isInt(i + 1)
+ asInt(1 + i)
+ isInt(1 + i)
+ asInt(i + i)
+ isInt(i + i)
+ i++
+ i += 1
+ asInt(i - 1)
+ isInt(i - 1)
+ asInt(1 - i)
+ isInt(1 - i)
+ asInt(i - i)
+ isInt(i - i)
+ i--
+ i -= 1
+ asInt(i * 2)
+ isInt(i * 2)
+ asInt(2 * i)
+ isInt(2 * i)
+ asInt(i * i)
+ isInt(i * i)
+ i *= 2
+ asInt(i / 5)
+ isInt(i / 5)
+ asInt(5 / i)
+ isInt(5 / i)
+ asInt(i / i)
+ isInt(i / i)
+ i /= 2
+ asInt(i % 5)
+ isInt(i % 5)
+ asInt(5 % i)
+ isInt(5 % i)
+ asInt(i % i)
+ isInt(i % i)
+ i %= 2
+ asInt(i & 5)
+ isInt(i & 5)
+ asInt(5 & i)
+ isInt(5 & i)
+ asInt(i & i)
+ isInt(i & i)
+ i &= 2
+ asInt(i &^ 5)
+ isInt(i &^ 5)
+ asInt(5 &^ i)
+ isInt(5 &^ i)
+ asInt(i &^ i)
+ isInt(i &^ i)
+ i &^= 2
+ asInt(i | 5)
+ isInt(i | 5)
+ asInt(5 | i)
+ isInt(5 | i)
+ asInt(i | i)
+ isInt(i | i)
+ i |= 2
+ asInt(i ^ 5)
+ isInt(i ^ 5)
+ asInt(5 ^ i)
+ isInt(5 ^ i)
+ asInt(i ^ i)
+ isInt(i ^ i)
+ i ^= 2
+ asInt(i << 4)
+ isInt(i << 4)
+ i <<= 2
+ asInt(i >> 4)
+ isInt(i >> 4)
+ i >>= 2
+ asInt(i)
+ isInt(i)
+ asInt(0)
+ asInt(Int(0))
+ isInt(Int(0))
+ i = 10
+ asInt(*&i)
+ isInt(*&i)
+ asInt(23)
+ asInt(Int(f))
+ isInt(Int(f))
- asMap(m);
- isMap(m);
- asMap(nil);
- m = nil;
- asMap(make(Map));
- isMap(make(Map));
- asMap(*&m);
- isMap(*&m);
- asMap(Map(nil));
- isMap(Map(nil));
- asMap(Map{});
- isMap(Map{});
+ asMap(m)
+ isMap(m)
+ asMap(nil)
+ m = nil
+ asMap(make(Map))
+ isMap(make(Map))
+ asMap(*&m)
+ isMap(*&m)
+ asMap(Map(nil))
+ isMap(Map(nil))
+ asMap(Map{})
+ isMap(Map{})
- asSlice(slice);
- isSlice(slice);
- asSlice(make(Slice, 5));
- isSlice(make(Slice, 5));
- asSlice([]byte{1,2,3});
- asSlice([]byte{1,2,3}[0:2]);
- asSlice(slice[0:4]);
- isSlice(slice[0:4]);
- asSlice(slice[3:8]);
- isSlice(slice[3:8]);
- asSlice(nil);
- asSlice(Slice(nil));
- isSlice(Slice(nil));
- slice = nil;
- asSlice(Slice{1,2,3});
- isSlice(Slice{1,2,3});
- asSlice(Slice{});
- isSlice(Slice{});
- asSlice(*&slice);
- isSlice(*&slice);
+ asSlice(slice)
+ isSlice(slice)
+ asSlice(make(Slice, 5))
+ isSlice(make(Slice, 5))
+ asSlice([]byte{1, 2, 3})
+ asSlice([]byte{1, 2, 3}[0:2])
+ asSlice(slice[0:4])
+ isSlice(slice[0:4])
+ asSlice(slice[3:8])
+ isSlice(slice[3:8])
+ asSlice(nil)
+ asSlice(Slice(nil))
+ isSlice(Slice(nil))
+ slice = nil
+ asSlice(Slice{1, 2, 3})
+ isSlice(Slice{1, 2, 3})
+ asSlice(Slice{})
+ isSlice(Slice{})
+ asSlice(*&slice)
+ isSlice(*&slice)
- asString(str);
- isString(str);
- asString(str+"a");
- isString(str+"a");
- asString("a"+str);
- isString("a"+str);
- asString(str+str);
- isString(str+str);
- str += "a";
- str += str;
- asString(String('a'));
- isString(String('a'));
- asString(String(slice));
- isString(String(slice));
- asString(String([]byte(nil)));
- isString(String([]byte(nil)));
- asString("hello");
- asString(String("hello"));
- isString(String("hello"));
- str = "hello";
- isString(str);
- asString(*&str);
- isString(*&str);
+ asString(str)
+ isString(str)
+ asString(str + "a")
+ isString(str + "a")
+ asString("a" + str)
+ isString("a" + str)
+ asString(str + str)
+ isString(str + str)
+ str += "a"
+ str += str
+ asString(String('a'))
+ isString(String('a'))
+ asString(String([]byte(slice)))
+ isString(String([]byte(slice)))
+ asString(String([]byte(nil)))
+ isString(String([]byte(nil)))
+ asString("hello")
+ asString(String("hello"))
+ isString(String("hello"))
+ str = "hello"
+ isString(str)
+ asString(*&str)
+ isString(*&str)
}